5
5
using MiniSQL . BufferManager . Controllers ;
6
6
using MiniSQL . BufferManager . Models ;
7
7
using MiniSQL . IndexManager . Controllers ;
8
+ using MiniSQL . IndexManager . Interfaces ;
8
9
using MiniSQL . IndexManager . Models ;
9
10
using MiniSQL . IndexManager . Utilities ;
10
11
using MiniSQL . Library . Models ;
@@ -17,44 +18,42 @@ static void Main(string[] args)
17
18
{
18
19
Console . WriteLine ( "[IndexManager] Test Begin" ) ;
19
20
20
- //BTreeTestCases.TestAll();
21
+ // BTreeTestCases.TestAll();
21
22
22
23
// TestMaxHeightBTree(8, false, true, true);
23
24
24
- // BugTest1();
25
+ BugTest1 ( ) ;
25
26
26
- // Bugtest2();
27
+ Bugtest2 ( ) ;
27
28
28
- // BugTest3();
29
+ BugTest3 ( ) ;
29
30
30
- // TestExpressionFind();
31
+ TestExpressionFind ( ) ;
31
32
32
- // TestExpressionDelete();
33
+ TestExpressionDelete ( ) ;
33
34
34
- //TestInsertSplit(200 );
35
+ TestBTreeInsert ( ) ;
35
36
36
- //TestBTreeInsert();
37
-
38
- //TestBTreeDelete();
37
+ TestBTreeDelete ( ) ;
39
38
40
39
HardTestForBTree ( ) ;
41
40
42
- // TestDBRecord();
41
+ TestDBRecord ( ) ;
42
+
43
+ TestLeafTableCell ( ) ;
43
44
44
- // TestLeafTableCell ();
45
+ TestInternalTableCell ( ) ;
45
46
46
- // TestInternalTableCell ();
47
+ TestInternalIndexCell ( ) ;
47
48
48
- // TestInternalIndexCell ();
49
+ TestLeafIndexCell ( ) ;
49
50
50
- // TestLeafIndexCell ();
51
+ TestInsertIntoAndDeletionInsideBTreeNode ( ) ;
51
52
52
53
// TestPager();
53
54
54
55
// TestPagerSwapping();
55
56
56
- //TestInsertIntoAndDeletionInsideBTreeNode();
57
-
58
57
// TestFreeList();
59
58
60
59
Console . WriteLine ( "[IndexManager] Test End" ) ;
@@ -102,7 +101,7 @@ record = GetTestBRecord(2);
102
101
record = GetTestBRecord ( 4 ) ;
103
102
keyRecord = GetTestBRecord ( 4 ) ;
104
103
root = controller . InsertCell ( root , keyRecord , record ) ;
105
-
104
+
106
105
BTreeNodeHelper . VisualizeIntegerTree ( pager , root ) ;
107
106
// test 5
108
107
// keyRecord = GetTestBRecord(1109110087);
@@ -356,6 +355,7 @@ record = GetTestRecord_expression(i, "www", (float)1.3);
356
355
357
356
BTreeNodeHelper . VisualizeIntegerTree ( pager , root ) ;
358
357
358
+ pager . Close ( ) ;
359
359
}
360
360
361
361
static void TestExpressionFind ( )
@@ -414,6 +414,7 @@ record = GetTestRecord_expression(i, "www", (float)1.3);
414
414
Console . WriteLine ( ) ;
415
415
}
416
416
417
+ pager . Close ( ) ;
417
418
}
418
419
419
420
private static DBRecord GetTestRecord_expression ( int value_1 , string value_2 , float value_3 )
@@ -612,6 +613,7 @@ static void TestBTreeDelete()
612
613
Debug . Assert ( result != null ) ;
613
614
Debug . Assert ( result . Key . GetValues ( ) [ 0 ] . IntegerValue == 7 ) ;
614
615
616
+ pager . Close ( ) ;
615
617
}
616
618
617
619
static void HardTestForBTree ( )
@@ -620,14 +622,14 @@ static void HardTestForBTree()
620
622
File . Delete ( dbPath ) ;
621
623
Pager pager = new Pager ( dbPath ) ;
622
624
FreeList freeList = new FreeList ( pager ) ;
623
- BTreeController controller = new BTreeController ( pager , freeList ) ;
625
+ BTreeController controller = new BTreeController ( pager , freeList , 4 ) ;
624
626
BTreeNode root = null ;
625
627
LeafTableCell result = null ;
626
628
627
629
//Construct BTree
628
630
for ( int i = 1 ; i < 20 ; i ++ )
629
631
{
630
- DBRecord record = GetTestBRecord ( i + 100 ) ;
632
+ DBRecord record = GetTestBRecord ( i + 100 ) ;
631
633
DBRecord keyRecord = GetTestBRecord ( i ) ;
632
634
root = controller . InsertCell ( root , keyRecord , record ) ;
633
635
@@ -636,13 +638,31 @@ static void HardTestForBTree()
636
638
Debug . Assert ( result . Key . GetValues ( ) [ 0 ] . IntegerValue == i ) ;
637
639
638
640
}
641
+ // test inserting records with repeated primary keys
639
642
DBRecord record_D = GetTestBRecord ( 103 ) ;
640
643
DBRecord keyRecord_D = GetTestBRecord ( 3 ) ;
641
- root = controller . InsertCell ( root , keyRecord_D , record_D ) ;
642
-
644
+ bool isError = false ;
645
+ try
646
+ {
647
+ root = controller . InsertCell ( root , keyRecord_D , record_D ) ;
648
+ }
649
+ catch ( RepeatedKeyException )
650
+ {
651
+ isError = true ;
652
+ }
653
+ Debug . Assert ( isError == true ) ;
654
+
655
+ isError = false ;
643
656
record_D = GetTestBRecord ( 105 ) ;
644
657
keyRecord_D = GetTestBRecord ( 5 ) ;
645
- root = controller . InsertCell ( root , keyRecord_D , record_D ) ;
658
+ try
659
+ {
660
+ root = controller . InsertCell ( root , keyRecord_D , record_D ) ;
661
+ }
662
+ catch ( RepeatedKeyException )
663
+ {
664
+ isError = true ;
665
+ }
646
666
647
667
BTreeNodeHelper . VisualizeIntegerTree ( pager , root ) ;
648
668
@@ -714,10 +734,9 @@ static void HardTestForBTree()
714
734
715
735
}
716
736
737
+ pager . Close ( ) ;
717
738
}
718
739
719
-
720
-
721
740
static void TestBTreeInsert ( )
722
741
{
723
742
LeafTableCell result = null ;
0 commit comments