@@ -14,7 +14,7 @@ var array = [
1414 'string' ,
1515 true ,
1616 - 123 ,
17- NaN ,
17+ // NaN, // not working with deepEqual, cuz (NaN===NaN) -> false
1818 - Infinity ,
1919 1.234153454354341 ,
2020 12313214234312324353454534534 ,
@@ -73,14 +73,6 @@ var paramsCases = [
7373 [ - 2 , - 2 , 'string' , 1 , true , { } , [ ] ] ,
7474] ;
7575
76- function apply ( t , paramsCase ) {
77- var register = dop . register ( array . slice ( 0 ) ) ;
78- var original = array . slice ( 0 ) ;
79- var description = 'Splice case: ' + JSON . stringify ( paramsCase ) ;
80- t . equal ( gify ( register . splice . apply ( register , paramsCase ) ) , gify ( original . splice . apply ( original , paramsCase ) ) , description ) ;
81- t . equal ( gify ( original ) , gify ( register ) , description ) ;
82- }
83-
8476
8577
8678
@@ -94,9 +86,20 @@ test('for (i in ...) must return only array values', function(t) {
9486
9587
9688
97- test ( 'splice' , function ( t ) {
89+ test ( 'Array. splice' , function ( t ) {
9890 paramsCases . forEach ( function ( paramsCase ) {
99- apply ( t , paramsCase ) ;
91+ var register = dop . register ( array . slice ( 0 ) ) ;
92+ var original = array . slice ( 0 ) ;
93+ var description = JSON . stringify ( paramsCase ) ;
94+ t . equal ( gify ( register . splice . apply ( register , paramsCase ) ) , gify ( original . splice . apply ( original , paramsCase ) ) , 'output case: ' + description ) ;
95+ t . equal ( gify ( original ) , gify ( register ) , 'stringify case: ' + description ) ;
96+ t . deepEqual ( original , register , 'deepEqual case: ' + description ) ;
97+ for ( var index in register ) {
98+ if ( dop . util . isObject ( register [ index ] ) && dop . isRegistered ( register [ index ] ) ) {
99+ var object_dop = dop . getObjectDop ( register [ index ] ) ;
100+ t . equal ( Number ( index ) , Number ( object_dop [ object_dop . length - 1 ] ) , 'correct path for subobject: ' + index + ', Case:' + description ) ;
101+ }
102+ }
100103 } ) ;
101104 t . end ( ) ;
102105} ) ;
@@ -110,6 +113,45 @@ test('splice', function(t) {
110113
111114
112115
116+ dop . core . storeSplice = function ( array , spliced , args ) {
117+
118+ var start = args [ 0 ] ,
119+ deleteCount = args [ 1 ] ,
120+ index = 0 ,
121+ total = array . length ,
122+ tof ,
123+ item ,
124+ object_dop ;
125+
126+ // console.log( '' );
127+ // console.log( args[1]>0, 'spliced:'+spliced.length, args.length>2 );
128+ for ( ; index < total ; ++ index ) {
129+ item = array [ index ] ;
130+ if ( dop . util . isObjectStandard ( item ) ) {
131+
132+ object_dop = dop . getObjectDop ( item ) ;
133+
134+ if ( object_dop !== undefined && object_dop . _ === array )
135+ object_dop [ object_dop . length - 1 ] = index ;
136+
137+ else
138+ array [ index ] = dop . core . configureObject (
139+ item ,
140+ dop . getObjectDop ( array ) . concat ( index ) ,
141+ dop . data . object_data [ dop . getObjectId ( array ) ] . options . proxy ,
142+ array
143+ ) ;
144+ }
145+ }
146+
147+
148+ dop . core . storeMutation ( {
149+ object : dop . getObjectProxy ( array ) ,
150+ splice : args ,
151+ spliced : spliced
152+ } ) ;
153+ } ;
154+
113155
114156
115157
0 commit comments