@@ -71,20 +71,25 @@ describe('SBTree', function () {
71
71
var right = new Node ( 15 , root , Nil , Nil , 1 ) ;
72
72
var leftLeft = new Node ( 10 , left , Nil , Nil , 1 ) ;
73
73
left . left = leftLeft ;
74
+ left . updateSize ( ) ;
74
75
root . left = left ;
75
76
root . right = right ;
77
+ root . updateSize ( ) ;
78
+ expect ( root . size ) . toBe ( 4 ) ;
79
+
76
80
updateChild ( left , leftLeft ) ;
77
81
expect ( leftLeft . parent ) . toBe ( root ) ;
78
82
expect ( root . left ) . toBe ( leftLeft ) ;
79
83
updateChild ( leftLeft , Nil ) ;
80
84
checkNil ( ) ;
81
85
expect ( root . left ) . toBe ( Nil ) ;
86
+ expect ( root . size ) . toBe ( 2 ) ;
82
87
updateChild ( Nil , right ) ;
83
88
expect ( right . parent ) . toBe ( Nil ) ;
84
89
checkNil ( ) ;
85
90
} ) ;
86
91
87
- it ( 'push and get 100000 elements' , function ( ) {
92
+ it ( 'push and get 100000 elements, remove the array by always remove the first/last element ' , function ( ) {
88
93
var sTree = new SBTree ( ) ;
89
94
for ( var i = 0 ; i < 100000 ; ++ i ) {
90
95
sTree . push ( i ) ;
@@ -93,5 +98,22 @@ describe('SBTree', function () {
93
98
for ( var i = 0 ; i < 100000 ; ++ i ) {
94
99
expect ( sTree . get ( i ) . value ) . toBe ( i ) ;
95
100
}
101
+ for ( var i = 0 ; i < 100000 ; ++ i ) {
102
+ expect ( sTree . get ( 0 ) . value ) . toBe ( i ) ;
103
+ var node = sTree . remove ( 0 ) ; // Always remove the first element;
104
+ expect ( node . value ) . toBe ( i ) ;
105
+ }
106
+ checkNil ( ) ;
107
+ expect ( sTree . _root ) . toBe ( Nil ) ;
108
+ var count = 10000 ;
109
+ for ( var i = 0 ; i < count ; ++ i ) {
110
+ sTree . push ( i ) ;
111
+ }
112
+ for ( var i = 0 ; i < count ; ++ i ) {
113
+ var node = sTree . remove ( count - i - 1 ) ; // Always remove the last element;
114
+ expect ( node . value ) . toBe ( count - i - 1 ) ;
115
+ expect ( sTree . size ) . toBe ( count - i - 1 ) ;
116
+ }
117
+ checkNil ( ) ;
96
118
} ) ;
97
119
} ) ;
0 commit comments