From 4dee96706ffe1425f0ec34c9dac76cd7102abf95 Mon Sep 17 00:00:00 2001 From: Marcus Denker Date: Mon, 13 Nov 2023 09:34:40 +0100 Subject: [PATCH] - Implement #firstPage and #lastPage on BTree - add testLastPage same as we have for SkipList --- src/Soil-Core-Tests/SoilBTreeTest.class.st | 14 ++++++++++++++ src/Soil-Core/SoilBasicBTree.class.st | 10 ++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/Soil-Core-Tests/SoilBTreeTest.class.st b/src/Soil-Core-Tests/SoilBTreeTest.class.st index e4e8fd3e..ce0bcf7b 100644 --- a/src/Soil-Core-Tests/SoilBTreeTest.class.st +++ b/src/Soil-Core-Tests/SoilBTreeTest.class.st @@ -264,6 +264,20 @@ SoilBTreeTest >> testLast [ self assert: btree last equals: #[ 8 7 6 5 4 3 2 1 ] ] +{ #category : #tests } +SoilBTreeTest >> testLastPage [ + + | capacity | + btree maxLevel: 8. + capacity := btree firstPage itemCapacity * 100. + + 1 to: capacity - 1 do: [ :n | + btree at: n put: #[ 1 2 3 4 5 6 7 8 ] ]. + btree at: capacity put: #[ 8 7 6 5 4 3 2 1 ]. + self assert: btree pages size equals: 200. + self assert: btree lastPage index equals: 200 +] + { #category : #tests } SoilBTreeTest >> testPageAddFirst [ diff --git a/src/Soil-Core/SoilBasicBTree.class.st b/src/Soil-Core/SoilBasicBTree.class.st index 68062f90..69eeefa1 100644 --- a/src/Soil-Core/SoilBasicBTree.class.st +++ b/src/Soil-Core/SoilBasicBTree.class.st @@ -81,6 +81,11 @@ SoilBasicBTree >> first: anInteger [ ^ col ] +{ #category : #accessing } +SoilBasicBTree >> firstPage [ + ^ self headerPage +] + { #category : #accessing } SoilBasicBTree >> flush [ self store flush @@ -133,6 +138,11 @@ SoilBasicBTree >> last [ ^ self newIterator last ] +{ #category : #accessing } +SoilBasicBTree >> lastPage [ + ^ self newIterator lastPage +] + { #category : #accessing } SoilBasicBTree >> maxLevel: anIntegeer [ "ignored, this allows to switch SkiList and BTree easily"