@@ -722,6 +722,33 @@ describe('List', () => {
722
722
expect ( o . get ( 0 ) ) . toBe ( 'f' ) ;
723
723
} ) ;
724
724
725
+ it ( 'works with push, set and insert without phantom values' , ( ) => {
726
+ const v = List . of ( ) . set ( 287 , 287 ) . push ( 42 ) . insert ( 33 , 33 ) ;
727
+ expect ( v . toJS ( ) . filter ( item => item === 287 ) ) . toHaveLength ( 1 ) ;
728
+ const v2 = List . of ( ) . push ( 0 ) . unshift ( - 1 ) . unshift ( - 2 ) . pop ( ) . pop ( ) . set ( 2 , 2 ) ;
729
+ expect ( v2 . toJS ( ) ) . toEqual ( [ - 2 , undefined , 2 ] ) ;
730
+ const v3 = List . of ( ) . set ( 447 , 447 ) . push ( 0 ) . insert ( 65 , 65 ) ;
731
+ expect ( v3 . toJS ( ) . filter ( item => item === 447 ) ) . toHaveLength ( 1 ) ;
732
+ const v4 = List . of ( ) . set ( - 28 , - 28 ) . push ( 0 ) . shift ( ) . set ( - 30 , - 30 ) ;
733
+ expect ( v4 . toJS ( ) . filter ( item => item === - 28 ) ) . toHaveLength ( 0 ) ;
734
+ const v5 = List . of ( ) . unshift ( 0 ) . set ( 33 , 33 ) . shift ( ) . set ( - 35 , - 35 ) ;
735
+ expect ( v5 . toJS ( ) . filter ( item => item === 0 ) ) . toHaveLength ( 0 ) ;
736
+
737
+ // execute the same test as `v` but for the 2000 first integers
738
+ const isOkV1 = v =>
739
+ List . of ( )
740
+ . set ( v , v )
741
+ . push ( 'pushed-value' )
742
+ . insert ( 33 , 'inserted-value' )
743
+ . filter ( item => item === v ) . size === 1 ;
744
+
745
+ const arr = new Array ( 2000 ) . fill ( null ) . map ( ( _ , v ) => v ) ;
746
+
747
+ const notOkArray = arr . filter ( v => ! isOkV1 ( v ) ) ;
748
+
749
+ expect ( notOkArray ) . toHaveLength ( 0 ) ;
750
+ } ) ;
751
+
725
752
// TODO: assert that findIndex only calls the function as much as it needs to.
726
753
727
754
it ( 'forEach iterates in the correct order' , ( ) => {
0 commit comments