@@ -29,21 +29,25 @@ test("CircularBuffer - Write test", function () {
2929
3030test ( "CircularBuffer - Free test" , function ( ) {
3131 var buffer = new CircularBuffer ( 10 ) ;
32- buffer . write ( 0 ) ;
33- buffer . write ( 0 ) ;
34- buffer . write ( 0 ) ;
35- buffer . write ( 0 ) ;
36- buffer . write ( 1 ) ;
37- buffer . write ( 1 ) ;
38- buffer . write ( 1 ) ;
39- buffer . write ( 1 ) ;
40- buffer . write ( 1 ) ;
41- buffer . write ( 1 ) ;
42- buffer . write ( 1 ) ;
43- buffer . write ( 1 ) ;
32+ for ( var k = 0 ; k < 12 ; k ++ )
33+ buffer . write ( k ) ;
4434 buffer . free ( 2 , 8 ) ;
4535 for ( var i = 2 ; i < 8 ; i ++ )
4636 deepEqual ( buffer . read ( i ) , undefined , "Free 2...8" ) ;
37+ deepEqual ( buffer . head , 2 , "Free 2...8" ) ;
38+ deepEqual ( buffer . tail , 8 , "Free 2...8" ) ;
39+
40+ for ( var l = 0 ; l < 12 ; l ++ )
41+ buffer . write ( l ) ;
42+ deepEqual ( buffer . head , 4 , "Write 12 items" ) ;
43+ deepEqual ( buffer . tail , 4 , "Write 12 items" ) ;
44+
45+ buffer . free ( 8 , 6 ) ;
46+ for ( var m = 8 ; m < 6 ; m = ( m + 1 ) % 10 )
47+ deepEqual ( buffer . read ( m ) , undefined , "Free 8...6" ) ;
48+ deepEqual ( buffer . head , 8 , "Free 8...6" ) ;
49+ deepEqual ( buffer . tail , 6 , "Free 8...6" ) ;
50+
4751 buffer . freeAll ( ) ;
4852 for ( var j = 0 ; j < 10 ; j ++ )
4953 deepEqual ( buffer . read ( j ) , undefined , "Free all" ) ;
@@ -55,7 +59,64 @@ test("CircularBuffer - Empty test", function () {
5559 buffer . write ( 0 ) ;
5660 buffer . write ( 0 ) ;
5761 buffer . write ( 0 ) ;
58- deepEqual ( buffer . isEmpty ( ) , false , "Is empty" ) ;
62+ deepEqual ( buffer . isEmpty ( ) , false , "Is not empty" ) ;
5963 buffer . free ( 0 , 8 ) ;
6064 deepEqual ( buffer . isEmpty ( ) , true , "Is empty" ) ;
65+ } ) ;
66+
67+ test ( "CircularBuffer - Clone test" , function ( ) {
68+ var buffer = new CircularBuffer ( 10 ) ;
69+ for ( var i = 0 ; i < 15 ; i ++ )
70+ buffer . write ( i ) ;
71+ var clone = buffer . clone ( ) ;
72+ for ( var j = 0 ; j < 9 ; j ++ )
73+ deepEqual ( clone . read ( j ) , buffer . read ( j ) , "Check items" ) ;
74+ deepEqual ( clone . head , buffer . head , "Check head position" ) ;
75+ deepEqual ( clone . tail , buffer . tail , "Check tail position" ) ;
76+ deepEqual ( clone . isEmpty ( ) , buffer . isEmpty ( ) , "Check empty" ) ;
77+ deepEqual ( clone . isFull ( ) , buffer . isFull ( ) , "Check empty" ) ;
78+ } ) ;
79+
80+ test ( "CircularBuffer - Resize test" , function ( ) {
81+ var buffer = new CircularBuffer ( 5 ) ;
82+ for ( var i = 0 ; i < 8 ; i ++ )
83+ buffer . write ( i ) ;
84+ var clone = buffer . clone ( ) ;
85+ buffer . resize ( 10 ) ;
86+ deepEqual ( buffer . head , 8 , "Check head position" ) ;
87+ deepEqual ( buffer . tail , 3 , "Check tail position" ) ;
88+ for ( var j = 0 ; j < 10 ; j ++ )
89+ if ( j < 3 || j > 7 )
90+ deepEqual ( buffer . read ( j ) , undefined , "Increase size" ) ;
91+ else
92+ deepEqual ( buffer . read ( j ) , j , "Augment resize" ) ;
93+ buffer = clone ;
94+ buffer . resize ( 3 ) ;
95+ deepEqual ( buffer . head , 0 , "Check head position" ) ;
96+ deepEqual ( buffer . tail , 0 , "Check tail position" ) ;
97+ for ( var k = 0 ; k < 3 ; k ++ )
98+ deepEqual ( buffer . read ( k ) , k + 3 , "Decrease size" ) ;
99+ } ) ;
100+
101+ test ( "CircularBuffer - Iterator test" , function ( ) {
102+ var buffer = new CircularBuffer ( 10 ) ;
103+ var it = buffer . getIterator ( ) ;
104+ it . first ( ) ;
105+ deepEqual ( it . isDone ( ) , true , "Check empty buffer iterator" ) ;
106+ buffer . write ( 0 ) ;
107+ buffer . write ( 0 ) ;
108+ buffer . write ( 0 ) ;
109+ buffer . write ( 0 ) ;
110+ buffer . write ( 1 ) ;
111+ buffer . write ( 1 ) ;
112+ buffer . write ( 1 ) ;
113+ buffer . write ( 1 ) ;
114+ buffer . write ( 1 ) ;
115+ buffer . write ( 1 ) ;
116+ buffer . write ( 1 ) ;
117+ buffer . write ( 1 ) ;
118+ var result = [ 0 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ] ;
119+ var i = 0 ;
120+ for ( it . first ( ) ; ! it . isDone ( ) ; it . next ( ) , i ++ )
121+ deepEqual ( it . getItem ( ) , result [ i ] , "Check iterator" ) ;
61122} ) ;
0 commit comments