@@ -33,7 +33,35 @@ describe('diff/array', function() {
3333 { count : 1 , value : [ c ] , removed : true , added : undefined }
3434 ] ) ;
3535 } ) ;
36+ describe ( 'anti-aliasing' , function ( ) {
37+ // Test apparent contract that no chunk value is ever an input argument.
38+ const value = [ 0 , 1 , 2 ] ;
39+ const expected = [
40+ { count : value . length , value : value }
41+ ] ;
3642
43+ const input = value . slice ( ) ;
44+ const diffResult = diffArrays ( input , input ) ;
45+ it ( 'returns correct deep result for identical inputs' , function ( ) {
46+ expect ( diffResult ) . to . deep . equals ( expected ) ;
47+ } ) ;
48+ it ( 'does not return the input array' , function ( ) {
49+ expect ( diffResult [ 0 ] . value ) . to . not . equal ( input ) ;
50+ } ) ;
51+
52+ const input1 = value . slice ( ) ;
53+ const input2 = value . slice ( ) ;
54+ const diffResult2 = diffArrays ( input1 , input2 ) ;
55+ it ( 'returns correct deep result for equivalent inputs' , function ( ) {
56+ expect ( diffResult2 ) . to . deep . equals ( expected ) ;
57+ } ) ;
58+ it ( 'does not return the first input array' , function ( ) {
59+ expect ( diffResult2 [ 0 ] . value ) . to . not . equal ( input1 ) ;
60+ } ) ;
61+ it ( 'does not return the second input array' , function ( ) {
62+ expect ( diffResult2 [ 0 ] . value ) . to . not . equal ( input2 ) ;
63+ } ) ;
64+ } ) ;
3765 it ( 'Should diff arrays with comparator' , function ( ) {
3866 const a = { a : 0 } , b = { a : 1 } , c = { a : 2 } , d = { a : 3 } ;
3967 function comparator ( left , right ) {
0 commit comments