public void SearchForRangeEnumerator() { TestKey keyFactory = new TestKey( 0 ); IBTree bTree = new OmniaMeaBTree( _indexFileName, keyFactory ); using( bTree ) { bTree.Open(); for( int i = 0; i < 100000; ++i ) { bTree.InsertKey( new TestKey( i ), i ); } int count = 0; foreach( KeyPair pair in bTree.SearchForRange( new TestKey( 0 ), new TestKey( 9999 ) ) ) { Assert.AreEqual( count, (int) pair._key.Key ); Assert.AreEqual( count, pair._offset ); ++count; } Assert.AreEqual( count, 10000 ); count = 0; foreach( KeyPair pair in bTree.SearchForRange( new TestKey( 100001 ), new TestKey( 100001 ) ) ) { Assert.AreEqual( count, (int) pair._key.Key ); Assert.AreEqual( count, pair._offset ); ++count; } Assert.AreEqual( count, 0 ); count = 0; foreach( KeyPair pair in bTree.SearchForRange( new TestKey( 49999 ), new TestKey( 49999 ) ) ) { Assert.AreEqual( (int) pair._key.Key, 49999 ); Assert.AreEqual( pair._offset, 49999 ); ++count; } Assert.AreEqual( count, 1 ); // delete each 15 of 16 keys for( int i = 0; i < 100000; ++i ) { if( ( i & 15 ) != 0 ) { bTree.DeleteKey( new TestKey( i ), i ); } } count = 0; foreach( KeyPair pair in bTree.SearchForRange( new TestKey( 0 ), new TestKey( 100000 ) ) ) { Assert.AreEqual( 16 * count, (int) pair._key.Key ); Assert.AreEqual( 16 * count, pair._offset ); ++count; } Assert.AreEqual( count, 100000 / 16 ); bTree.Close(); } }
public void GetAllKeysEnumerator() { TestKey keyFactory = new TestKey( 0 ); OmniaMeaBTree bTree = new OmniaMeaBTree( _indexFileName, keyFactory ); using( bTree ) { bTree.Open(); for( int i = 0; i < 100000; ++i ) { bTree.InsertKey( new TestKey( i ), i ); } int count = 0; foreach( KeyPair pair in bTree.GetAllKeys() ) { Assert.AreEqual( count, (int) pair._key.Key ); Assert.AreEqual( count, pair._offset ); ++count; } Assert.AreEqual( count, 100000 ); KeyPair pair1 = bTree.GetMaximum(); Assert.AreEqual( (int)pair1._key.Key, 99999 ); pair1 = bTree.GetMinimum(); Assert.AreEqual( (int)pair1._key.Key, 0 ); // delete each 15 of 16 keys for( int i = 0; i < 100000; ++i ) { if( ( i & 15 ) != 0 ) { bTree.DeleteKey( new TestKey( i ), i ); } } count = 0; foreach( KeyPair pair in bTree.GetAllKeys() ) { Assert.AreEqual( 16 * count, (int) pair._key.Key ); Assert.AreEqual( 16 * count, pair._offset ); ++count; } Assert.AreEqual( count, 100000 / 16 ); pair1 = bTree.GetMaximum(); Assert.AreEqual( (int)pair1._key.Key, 99984 ); pair1 = bTree.GetMinimum(); Assert.AreEqual( (int)pair1._key.Key, 0 ); bTree.Close(); } }