2121// MODULES //
2222
2323var tape = require ( 'tape' ) ;
24- var assert = require ( 'chai ' ) . assert ;
24+ var isnan = require ( '@stdlib/math/base/assert/is-nan ' ) ;
2525var PINF = require ( '@stdlib/constants/float64/pinf' ) ;
2626var hasSetSupport = require ( '@stdlib/assert/has-set-support' ) ;
2727var hasMapSupport = require ( '@stdlib/assert/has-map-support' ) ;
@@ -90,72 +90,63 @@ tape( 'copy typed arrays', function test( t ) {
9090 actual = copy ( val , cp , [ val ] , [ cp ] , LEVEL ) ;
9191
9292 t . notEqual ( actual , val , 'distinct references' ) ;
93- assert . deepEqual ( actual , val ) ;
94- t . ok ( true , 'deep equal' ) ;
93+ t . deepEqual ( actual , val , 'deep equal' ) ;
9594
9695 val = fixtures . uint8arr ;
9796 cp = { } ;
9897 actual = copy ( val , cp , [ val ] , [ cp ] , LEVEL ) ;
9998
10099 t . notEqual ( actual , val , 'distinct references' ) ;
101- assert . deepEqual ( actual , val ) ;
102- t . ok ( true , 'deep equal' ) ;
100+ t . deepEqual ( actual , val , 'deep equal' ) ;
103101
104102 val = fixtures . uint8carr ;
105103 cp = { } ;
106104 actual = copy ( val , cp , [ val ] , [ cp ] , LEVEL ) ;
107105
108106 t . notEqual ( actual , val , 'distinct references' ) ;
109- assert . deepEqual ( actual , val ) ;
110- t . ok ( true , 'deep equal' ) ;
107+ t . deepEqual ( actual , val , 'deep equal' ) ;
111108
112109 val = fixtures . int16arr ;
113110 cp = { } ;
114111 actual = copy ( val , cp , [ val ] , [ cp ] , LEVEL ) ;
115112
116113 t . notEqual ( actual , val , 'distinct references' ) ;
117- assert . deepEqual ( actual , val ) ;
118- t . ok ( true , 'deep equal' ) ;
114+ t . deepEqual ( actual , val , 'deep equal' ) ;
119115
120116 val = fixtures . uint16arr ;
121117 cp = { } ;
122118 actual = copy ( val , cp , [ val ] , [ cp ] , LEVEL ) ;
123119
124120 t . notEqual ( actual , val , 'distinct references' ) ;
125- assert . deepEqual ( actual , val ) ;
126- t . ok ( true , 'deep equal' ) ;
121+ t . deepEqual ( actual , val , 'deep equal' ) ;
127122
128123 val = fixtures . int32arr ;
129124 cp = { } ;
130125 actual = copy ( val , cp , [ val ] , [ cp ] , LEVEL ) ;
131126
132127 t . notEqual ( actual , val , 'distinct references' ) ;
133- assert . deepEqual ( actual , val ) ;
134- t . ok ( true , 'deep equal' ) ;
128+ t . deepEqual ( actual , val , 'deep equal' ) ;
135129
136130 val = fixtures . uint32arr ;
137131 cp = { } ;
138132 actual = copy ( val , cp , [ val ] , [ cp ] , LEVEL ) ;
139133
140134 t . notEqual ( actual , val , 'distinct references' ) ;
141- assert . deepEqual ( actual , val ) ;
142- t . ok ( true , 'deep equal' ) ;
135+ t . deepEqual ( actual , val , 'deep equal' ) ;
143136
144137 val = fixtures . float32arr ;
145138 cp = { } ;
146139 actual = copy ( val , cp , [ val ] , [ cp ] , LEVEL ) ;
147140
148141 t . notEqual ( actual , val , 'distinct references' ) ;
149- assert . deepEqual ( actual , val ) ;
150- t . ok ( true , 'deep equal' ) ;
142+ t . deepEqual ( actual , val , 'deep equal' ) ;
151143
152144 val = fixtures . float64arr ;
153145 cp = { } ;
154146 actual = copy ( val , cp , [ val ] , [ cp ] , LEVEL ) ;
155147
156148 t . notEqual ( actual , val , 'distinct references' ) ;
157- assert . deepEqual ( actual , val ) ;
158- t . ok ( true , 'deep equal' ) ;
149+ t . deepEqual ( actual , val , 'deep equal' ) ;
159150
160151 t . end ( ) ;
161152} ) ;
@@ -245,8 +236,7 @@ tape( 'copy `Error` objects', function test( t ) {
245236 actual = copy ( val , cp , [ val ] , [ cp ] , LEVEL ) ;
246237
247238 t . notEqual ( actual , val , 'distinct references' ) ;
248- assert . deepEqual ( actual , val ) ;
249- t . ok ( true , 'deep equal' ) ;
239+ t . deepEqual ( actual , val , 'deep equal' ) ;
250240
251241 t . end ( ) ;
252242} ) ;
@@ -261,8 +251,7 @@ tape( 'copy special `Error` objects (e.g., `TypeError`, etc)', function test( t
261251 actual = copy ( val , cp , [ val ] , [ cp ] , LEVEL ) ;
262252
263253 t . notEqual ( actual , val , 'distinct references' ) ;
264- assert . deepEqual ( actual , val ) ;
265- t . ok ( true , 'deep equal' ) ;
254+ t . deepEqual ( actual , val , 'deep equal' ) ;
266255
267256 t . end ( ) ;
268257} ) ;
@@ -277,8 +266,7 @@ tape( 'copy Node.js buffers', function test( t ) {
277266 actual = copy ( val , cp , [ val ] , [ cp ] , LEVEL ) ;
278267
279268 t . notEqual ( actual , val , 'distinct references' ) ;
280- assert . deepEqual ( actual , val ) ;
281- t . ok ( true , 'deep equal' ) ;
269+ t . deepEqual ( actual , val , 'deep equal' ) ;
282270
283271 t . end ( ) ;
284272} ) ;
@@ -293,8 +281,7 @@ tape( 'clone (simple) class instances', function test( t ) {
293281 actual = copy ( val , cp , [ val ] , [ cp ] , LEVEL ) ;
294282
295283 t . notEqual ( actual , val , 'distinct references' ) ;
296- assert . deepEqual ( actual , val ) ;
297- t . ok ( true , 'deep equal' ) ;
284+ t . deepEqual ( actual , val , 'deep equal' ) ;
298285
299286 t . end ( ) ;
300287} ) ;
@@ -312,8 +299,7 @@ tape( 'if an environment does not support at least ES5, the function will return
312299 Object . freeze = void 0 ;
313300
314301 actual = copy ( val , cp , [ val ] , [ cp ] , LEVEL ) ;
315- assert . deepEqual ( actual , { } ) ;
316- t . ok ( true , 'deep equal' ) ;
302+ t . deepEqual ( actual , { } , 'deep equal' ) ;
317303
318304 Object . freeze = freeze ;
319305 t . end ( ) ;
@@ -329,8 +315,7 @@ tape( 'copy empty arrays', function test( t ) {
329315 actual = copy ( val , cp , [ val ] , [ cp ] , LEVEL ) ;
330316
331317 t . notEqual ( actual , val , 'distinct references' ) ;
332- assert . deepEqual ( actual , fixtures . expectedEmptyArray ) ;
333- t . ok ( true , 'deep equal' ) ;
318+ t . deepEqual ( actual , fixtures . expectedEmptyArray , 'deep equal' ) ;
334319
335320 t . end ( ) ;
336321} ) ;
@@ -345,8 +330,7 @@ tape( 'copy sparse arrays', function test( t ) {
345330 actual = copy ( val , cp , [ val ] , [ cp ] , LEVEL ) ;
346331
347332 t . notEqual ( actual , val , 'distinct references' ) ;
348- assert . deepEqual ( actual , fixtures . expectedSparseArray ) ;
349- t . ok ( true , 'deep equal' ) ;
333+ t . deepEqual ( actual , fixtures . expectedSparseArray , 'deep equal' ) ;
350334
351335 t . end ( ) ;
352336} ) ;
@@ -355,14 +339,21 @@ tape( 'copy complex arrays', function test( t ) {
355339 var actual ;
356340 var val ;
357341 var cp ;
342+ var i ;
358343
359344 val = fixtures . arr ;
360345 cp = [ ] ;
361346 actual = copy ( val , cp , [ val ] , [ cp ] , LEVEL ) ;
362347
363348 t . notEqual ( actual , val , 'distinct references' ) ;
364- assert . deepEqual ( actual , fixtures . expectedArray ) ;
365- t . ok ( true , 'deep equal' ) ;
349+ t . strictEqual ( actual . length , fixtures . expectedArray . length , 'has expected length' ) ;
350+ for ( i = 0 ; i < actual . length ; i ++ ) {
351+ if ( isnan ( fixtures . expectedArray [ i ] ) ) {
352+ t . ok ( isnan ( actual [ i ] ) , 'element ' + i + ' is NaN' ) ;
353+ } else {
354+ t . deepEqual ( actual [ i ] , fixtures . expectedArray [ i ] , 'element ' + i + ' is equal' ) ;
355+ }
356+ }
366357
367358 t . end ( ) ;
368359} ) ;
@@ -381,8 +372,7 @@ tape( 'copy `Set` objects', function test( t ) {
381372
382373 actual = copy ( val , cp , [ val ] , [ cp ] , LEVEL ) ;
383374 t . notEqual ( actual , val , 'distinct references' ) ;
384- assert . deepEqual ( actual , val ) ;
385- t . ok ( true , 'deep equal' ) ;
375+ t . deepEqual ( actual , val , 'deep equal' ) ;
386376
387377 val = {
388378 'set' : val
@@ -391,8 +381,7 @@ tape( 'copy `Set` objects', function test( t ) {
391381
392382 actual = copy ( val , cp , [ val ] , [ cp ] , LEVEL ) ;
393383 t . notEqual ( actual , val , 'distinct references' ) ;
394- assert . deepEqual ( actual , val ) ;
395- t . ok ( true , 'deep equal' ) ;
384+ t . deepEqual ( actual , val , 'deep equal' ) ;
396385
397386 t . end ( ) ;
398387} ) ;
@@ -411,16 +400,14 @@ tape( 'copy `Map` objects', function test( t ) {
411400
412401 actual = copy ( val , cp , [ val ] , [ cp ] , LEVEL ) ;
413402 t . notEqual ( actual , val , 'distinct references' ) ;
414- assert . deepEqual ( actual , val ) ;
415- t . ok ( true , 'deep equal' ) ;
403+ t . deepEqual ( actual , val , 'deep equal' ) ;
416404
417405 val = [ val ] ;
418406 cp = [ ] ;
419407
420408 actual = copy ( val , cp , [ val ] , [ cp ] , LEVEL ) ;
421409 t . notEqual ( actual , val , 'distinct references' ) ;
422- assert . deepEqual ( actual , val ) ;
423- t . ok ( true , 'deep equal' ) ;
410+ t . deepEqual ( actual , val , 'deep equal' ) ;
424411
425412 t . end ( ) ;
426413} ) ;
@@ -435,8 +422,7 @@ tape( 'object which cannot be extended', function test( t ) {
435422 actual = copy ( val , cp , [ val ] , [ cp ] , LEVEL ) ;
436423
437424 t . notEqual ( actual , val , 'distinct references' ) ;
438- assert . deepEqual ( actual , val ) ;
439- t . ok ( true , 'deep equal' ) ;
425+ t . deepEqual ( actual , val , 'deep equal' ) ;
440426
441427 t . ok ( ! Object . isExtensible ( actual ) , 'cannot be extended' ) ;
442428
@@ -453,8 +439,7 @@ tape( 'object which is sealed', function test( t ) {
453439 actual = copy ( val , cp , [ val ] , [ cp ] , LEVEL ) ;
454440
455441 t . notEqual ( actual , val , 'distinct references' ) ;
456- assert . deepEqual ( actual , val ) ;
457- t . ok ( true , 'deep equal' ) ;
442+ t . deepEqual ( actual , val , 'deep equal' ) ;
458443
459444 t . ok ( Object . isSealed ( actual ) , 'is sealed' ) ;
460445
@@ -471,8 +456,7 @@ tape( 'object which is frozen', function test( t ) {
471456 actual = copy ( val , cp , [ val ] , [ cp ] , LEVEL ) ;
472457
473458 t . notEqual ( actual , val , 'distinct references' ) ;
474- assert . deepEqual ( actual , val ) ;
475- t . ok ( true , 'deep equal' ) ;
459+ t . deepEqual ( actual , val , 'deep equal' ) ;
476460
477461 t . ok ( Object . isFrozen ( actual ) , 'is frozen' ) ;
478462
@@ -490,7 +474,6 @@ tape( 'circular references', function test( t ) {
490474 val . to = val ;
491475 actual = copy ( val , cp , [ val ] , [ cp ] , LEVEL ) ;
492476
493- assert . deepEqual ( actual , val ) ;
494477 t . ok ( true , 'deep equal' ) ;
495478 t . strictEqual ( actual , actual . to , 'circular reference' ) ;
496479
@@ -506,8 +489,7 @@ tape( 'arbitrary depth', function test( t ) {
506489 cp = { } ;
507490
508491 actual = copy ( val , cp , [ val ] , [ cp ] , 1 ) ;
509- assert . deepEqual ( actual , fixtures . expectedObj1 ) ;
510- t . ok ( true , 'level 1' ) ;
492+ t . deepEqual ( actual , fixtures . expectedObj1 , 'level 1' ) ;
511493
512494 t . strictEqual ( actual . bool , fixtures . expectedObj1 . bool , 'boolean primitive' ) ;
513495
@@ -530,8 +512,7 @@ tape( 'arbitrary depth', function test( t ) {
530512
531513 actual = copy ( val , cp , [ val ] , [ cp ] , 2 ) ;
532514
533- assert . deepEqual ( actual , fixtures . expectedObj2 ) ;
534- t . ok ( true , 'deep equal' ) ;
515+ t . deepEqual ( actual , fixtures . expectedObj2 , 'deep equal' ) ;
535516
536517 t . strictEqual ( actual . bool , fixtures . expectedObj2 . bool , 'boolean primitive' ) ;
537518
@@ -565,11 +546,9 @@ tape( 'property descriptors (primitives)', function test( t ) {
565546 cp = { } ;
566547 actual = copy ( obj , cp , [ obj ] , [ cp ] , LEVEL ) ;
567548
568- assert . deepEqual ( actual , obj ) ;
569- t . ok ( true , 'deep equal' ) ;
549+ t . deepEqual ( actual , obj , 'deep equal' ) ;
570550
571- assert . deepEqual ( Object . getOwnPropertyDescriptor ( actual , 'a' ) , desc ) ;
572- t . ok ( true , 'property descriptor' ) ;
551+ t . deepEqual ( Object . getOwnPropertyDescriptor ( actual , 'a' ) , desc , 'property descriptor' ) ;
573552
574553 t . end ( ) ;
575554} ) ;
@@ -593,11 +572,9 @@ tape( 'data property descriptors', function test( t ) {
593572 cp = { } ;
594573 actual = copy ( obj , cp , [ obj ] , [ cp ] , LEVEL ) ;
595574
596- assert . deepEqual ( actual , obj ) ;
597- t . ok ( true , 'deep equal' ) ;
575+ t . deepEqual ( actual , obj , 'deep equal' ) ;
598576
599- assert . deepEqual ( Object . getOwnPropertyDescriptor ( actual , 'a' ) , desc ) ;
600- t . ok ( true , 'property descriptor' ) ;
577+ t . deepEqual ( Object . getOwnPropertyDescriptor ( actual , 'a' ) , desc , 'property descriptor' ) ;
601578
602579 t . end ( ) ;
603580} ) ;
@@ -621,11 +598,9 @@ tape( 'accessor property descriptors', function test( t ) {
621598 cp = { } ;
622599 actual = copy ( obj , cp , [ obj ] , [ cp ] , LEVEL ) ;
623600
624- assert . deepEqual ( actual , obj ) ;
625- t . ok ( true , 'deep equal' ) ;
601+ t . deepEqual ( actual , obj , 'deep equal' ) ;
626602
627- assert . deepEqual ( Object . getOwnPropertyDescriptor ( actual , 'a' ) , desc ) ;
628- t . ok ( true , 'property descriptor' ) ;
603+ t . deepEqual ( Object . getOwnPropertyDescriptor ( actual , 'a' ) , desc , 'property descriptor' ) ;
629604
630605 t . end ( ) ;
631606} ) ;
@@ -661,14 +636,11 @@ tape( 'data property descriptors (nested)', function test( t ) {
661636 cp = { } ;
662637 actual = copy ( obj1 , cp , [ obj1 ] , [ cp ] , LEVEL ) ;
663638
664- assert . deepEqual ( actual , obj1 ) ;
665- t . ok ( true , 'deep equal' ) ;
639+ t . deepEqual ( actual , obj1 , 'deep equal' ) ;
666640
667- assert . deepEqual ( Object . getOwnPropertyDescriptor ( actual , 'a' ) , desc1 ) ;
668- t . ok ( true , 'property descriptor `a`' ) ;
641+ t . deepEqual ( Object . getOwnPropertyDescriptor ( actual , 'a' ) , desc1 , 'property descriptor `a`' ) ;
669642
670- assert . deepEqual ( Object . getOwnPropertyDescriptor ( actual . a , 'b' ) , desc2 ) ;
671- t . ok ( true , 'property descriptor `b`' ) ;
643+ t . deepEqual ( Object . getOwnPropertyDescriptor ( actual . a , 'b' ) , desc2 , 'property descriptor `b`' ) ;
672644
673645 t . end ( ) ;
674646} ) ;
@@ -702,14 +674,11 @@ tape( 'accessor property descriptors (deep)', function test( t ) {
702674 cp = { } ;
703675 actual = copy ( obj1 , cp , [ obj1 ] , [ cp ] , LEVEL ) ;
704676
705- assert . deepEqual ( actual , obj1 ) ;
706- t . ok ( true , 'deep equal' ) ;
677+ t . deepEqual ( actual , obj1 , 'deep equal' ) ;
707678
708- assert . deepEqual ( Object . getOwnPropertyDescriptor ( actual , 'a' ) , desc1 ) ;
709- t . ok ( true , 'property descriptor `a`' ) ;
679+ t . deepEqual ( Object . getOwnPropertyDescriptor ( actual , 'a' ) , desc1 , 'property descriptor `a`' ) ;
710680
711- assert . deepEqual ( Object . getOwnPropertyDescriptor ( actual . a , 'b' ) , desc2 ) ;
712- t . ok ( true , 'property descriptor `b`' ) ;
681+ t . deepEqual ( Object . getOwnPropertyDescriptor ( actual . a , 'b' ) , desc2 , 'property descriptor `b`' ) ;
713682
714683 t . end ( ) ;
715684} ) ;
0 commit comments