@@ -15,6 +15,47 @@ test('smoke test', () => {
1515 expect ( keys ) . toEqual ( [ 1 , 3 , 4 , 4.1 , 44 ] ) ;
1616} ) ;
1717
18+ describe ( '.first()/next() iteration' , ( ) => {
19+ test ( 'for empty map, returns finished iterator' , ( ) => {
20+ const tree = new AvlMap < string , number > ( ) ;
21+ const entry = tree . first ( ) ;
22+ expect ( entry ) . toEqual ( undefined ) ;
23+ } ) ;
24+
25+ test ( 'can iterate through map entries' , ( ) => {
26+ const tree = new AvlMap < string , number > ( ) ;
27+ tree . set ( 'a' , 1 ) ;
28+ tree . set ( 'b' , 2 ) ;
29+ tree . set ( 'c' , 3 ) ;
30+ const list : [ string , number ] [ ] = [ ] ;
31+ for ( let entry = tree . first ( ) ; entry ; entry = tree . next ( entry ) ) {
32+ list . push ( [ entry . k , entry . v ] ) ;
33+ }
34+ expect ( list ) . toEqual ( [ [ 'a' , 1 ] , [ 'b' , 2 ] , [ 'c' , 3 ] ] ) ;
35+ } ) ;
36+ } ) ;
37+
38+ describe ( '.iterator0()' , ( ) => {
39+ test ( 'for empty map, returns finished iterator' , ( ) => {
40+ const tree = new AvlMap < string , number > ( ) ;
41+ const iterator = tree . iterator0 ( ) ;
42+ const entry = iterator ( ) ;
43+ expect ( entry ) . toEqual ( undefined ) ;
44+ } ) ;
45+
46+ test ( 'can iterate through map entries' , ( ) => {
47+ const tree = new AvlMap < string , number > ( ) ;
48+ tree . set ( 'a' , 1 ) ;
49+ tree . set ( 'b' , 2 ) ;
50+ tree . set ( 'c' , 3 ) ;
51+ const list : [ string , number ] [ ] = [ ] ;
52+ const iterator = tree . iterator0 ( ) ;
53+ for ( let entry = iterator ( ) ; entry ; entry = iterator ( ) ) {
54+ list . push ( [ entry . k , entry . v ] ) ;
55+ }
56+ expect ( list ) . toEqual ( [ [ 'a' , 1 ] , [ 'b' , 2 ] , [ 'c' , 3 ] ] ) ;
57+ } ) ;
58+ } ) ;
1859
1960describe ( '.iterator()' , ( ) => {
2061 test ( 'for empty map, returns finished iterator' , ( ) => {
@@ -37,3 +78,17 @@ describe('.iterator()', () => {
3778 expect ( list ) . toEqual ( [ [ 'a' , 1 ] , [ 'b' , 2 ] , [ 'c' , 3 ] ] ) ;
3879 } ) ;
3980} ) ;
81+
82+ describe ( 'for...of iteration' , ( ) => {
83+ test ( 'can iterate through map entries' , ( ) => {
84+ const tree = new AvlMap < string , number > ( ) ;
85+ tree . set ( 'a' , 1 ) ;
86+ tree . set ( 'b' , 2 ) ;
87+ tree . set ( 'c' , 3 ) ;
88+ const list : [ string , number ] [ ] = [ ] ;
89+ for ( const entry of tree . entries ( ) ) {
90+ list . push ( [ entry . k , entry . v ] ) ;
91+ }
92+ expect ( list ) . toEqual ( [ [ 'a' , 1 ] , [ 'b' , 2 ] , [ 'c' , 3 ] ] ) ;
93+ } ) ;
94+ } ) ;
0 commit comments