@@ -156,4 +156,47 @@ describe('Sequence diff', function() {
156156 ]
157157 ) ;
158158 } ) ;
159+
160+ it ( 'large sequence diff' , function ( ) {
161+ JSC . test (
162+ 'returns add' ,
163+ function ( veredict , array , newValue ) {
164+ var list1 = Immutable . fromJS ( array ) ;
165+ var list2 = Immutable . fromJS ( array ) ;
166+ var modifiedList = list2 . push ( newValue ) ;
167+
168+ var result = diff ( list1 , modifiedList ) ;
169+ var expected = Immutable . fromJS ( [
170+ { op : 'add' , path : '/' + array . length , value : newValue }
171+ ] ) ;
172+
173+ return veredict ( Immutable . is ( result , expected ) ) ;
174+ } ,
175+ [
176+ JSC . array ( 150 , JSC . integer ( ) ) ,
177+ JSC . integer ( )
178+ ]
179+ ) ;
180+
181+ JSC . test (
182+ 'returns replace' ,
183+ function ( veredict , array , newValue ) {
184+ var list1 = Immutable . fromJS ( array ) ;
185+ var list2 = Immutable . fromJS ( array ) ;
186+ var idx = 100 ;
187+ var modifiedList = list2 . set ( idx , newValue ) ;
188+
189+ var result = diff ( list1 , modifiedList ) ;
190+ var expected = Immutable . fromJS ( [
191+ { op : 'replace' , path : '/' + idx , value : newValue }
192+ ] ) ;
193+
194+ return veredict ( Immutable . is ( result , expected ) ) ;
195+ } ,
196+ [
197+ JSC . array ( 150 , JSC . integer ( ) ) ,
198+ JSC . integer ( )
199+ ]
200+ ) ;
201+ } ) ;
159202} ) ;
0 commit comments