11const test = require ( 'ava' )
2- const { isFunction} = require ( 'core-util-is' )
2+ const {
3+ isFunction, isObject, isString, isArray
4+ } = require ( 'core-util-is' )
35const { parse, stringify} = require ( '../src' )
46
57const a1 = `[
@@ -18,6 +20,27 @@ const a2 = `[
1820 2
1921]`
2022
23+ // ret: return value to expect
24+ const texpect = ( t , ret , str , r , rr ) => {
25+ if ( isObject ( ret ) ) {
26+ t . deepEqual ( r , ret )
27+ } else {
28+ t . is ( r , ret )
29+ }
30+
31+ if ( isString ( rr ) ) {
32+ t . is ( rr , str )
33+ } else {
34+ t . is ( stringify ( rr , null , 2 ) , str )
35+ }
36+ }
37+
38+ const slice = ( ret , str ) =>
39+ ( t , r , _ , __ , rr ) => texpect ( t , ret , str , r , rr )
40+
41+ const unshift = ( ret , str ) =>
42+ ( t , r , s ) => texpect ( t , ret , str , r , s )
43+
2144const CASES = [
2245 [
2346 'splice(0, 1)' ,
@@ -46,7 +69,88 @@ const CASES = [
4669 array => array . splice ( 0 , undefined ) ,
4770 [ ] ,
4871 a1
49- ]
72+ ] ,
73+ [
74+ 'slice(0)' ,
75+ a1 ,
76+ array => array . slice ( 0 ) ,
77+ [ 0 , 1 , 2 ] ,
78+ a1
79+ ] ,
80+ [
81+ 'slice(-1)' ,
82+ a1 ,
83+ array => array . slice ( - 1 ) ,
84+ slice ( [ 2 ] , `[
85+ // 2
86+ 2
87+ ]` )
88+ ] ,
89+ [
90+ 'slice(3)' ,
91+ a1 ,
92+ array => array . slice ( 3 ) ,
93+ slice ( [ ] , '[]' )
94+ ] ,
95+ [
96+ 'slice(undefined, undefined)' ,
97+ a1 ,
98+ array => array . slice ( ) ,
99+ slice ( [ 0 , 1 , 2 ] , a1 )
100+ ] ,
101+ [
102+ 'slice(0, - 2)' ,
103+ a1 ,
104+ array => array . slice ( 0 , - 2 ) ,
105+ slice ( [ 0 ] , `[
106+ // 0
107+ 0
108+ ]` )
109+ ] ,
110+ [
111+ 'unshift()' ,
112+ a1 ,
113+ array => array . unshift ( ) ,
114+ unshift ( 3 , a1 )
115+ ] ,
116+ [
117+ 'unshift(- 1)' ,
118+ a1 ,
119+ array => array . unshift ( - 1 ) ,
120+ unshift ( 4 , `[
121+ -1,
122+ // 0
123+ 0,
124+ // 1
125+ 1,
126+ // 2
127+ 2
128+ ]` )
129+ ] ,
130+ [
131+ 'shift' ,
132+ a1 ,
133+ array => array . shift ( ) ,
134+ unshift ( 0 , `[
135+ // 1
136+ 1,
137+ // 2
138+ 2
139+ ]` )
140+ ] ,
141+ // [
142+ // 'reverse',
143+ // a1,
144+ // array => array.reverse(),
145+ // unshift([2, 1, 0], `[
146+ // // 2
147+ // 2,
148+ // // 1
149+ // 1,
150+ // // 0
151+ // 0
152+ // ]`)
153+ // ]
50154]
51155
52156CASES . forEach ( ( [ d , a , run , e , s ] ) => {
@@ -61,6 +165,12 @@ CASES.forEach(([d, a, run, e, s]) => {
61165 tt . is ( str , s )
62166 }
63167
64- expect ( t , [ ...ret ] , stringify ( parsed , null , 2 ) , parsed , ret )
168+ expect (
169+ t ,
170+ isArray ( ret )
171+ // clean ret
172+ ? [ ...ret ]
173+ : ret ,
174+ stringify ( parsed , null , 2 ) , parsed , ret )
65175 } )
66176} )
0 commit comments