14
14
* See the License for the specific language governing permissions and
15
15
* limitations under the License.
16
16
*/
17
- import { assert } from 'chai' ;
17
+ import { expect } from 'chai' ;
18
18
import { deepCopy , deepExtend } from '../src/deepCopy' ;
19
19
20
20
describe ( 'deepCopy()' , ( ) => {
21
21
it ( 'Scalars' , ( ) => {
22
- assert . strictEqual ( deepCopy ( true ) , true ) ;
23
- assert . strictEqual ( deepCopy ( 123 ) , 123 ) ;
24
- assert . strictEqual ( deepCopy ( 'abc' ) , 'abc' ) ;
22
+ expect ( deepCopy ( true ) ) . to . equal ( true ) ;
23
+ expect ( deepCopy ( 123 ) ) . to . equal ( 123 ) ;
24
+ expect ( deepCopy ( 'abc' ) ) . to . equal ( 'abc' ) ;
25
25
} ) ;
26
26
27
27
it ( 'Date' , ( ) => {
28
28
const d = new Date ( ) ;
29
- assert . deepEqual ( deepCopy ( d ) , d ) ;
29
+ expect ( deepCopy ( d ) ) . to . deep . equal ( d ) ;
30
30
} ) ;
31
31
32
32
it ( 'Object' , ( ) => {
33
- assert . deepEqual ( deepCopy ( { } ) , { } ) ;
34
- assert . deepEqual ( deepCopy ( { a : 123 } ) , { a : 123 } ) ;
35
- assert . deepEqual ( deepCopy ( { a : { b : 123 } } ) , { a : { b : 123 } } ) ;
33
+ expect ( deepCopy ( { } ) ) . to . deep . equal ( { } ) ;
34
+ expect ( deepCopy ( { a : 123 } ) ) . to . deep . equal ( { a : 123 } ) ;
35
+ expect ( deepCopy ( { a : { b : 123 } } ) ) . to . deep . equal ( { a : { b : 123 } } ) ;
36
36
} ) ;
37
37
38
38
it ( 'Array' , ( ) => {
39
- assert . deepEqual ( deepCopy ( [ ] ) , [ ] ) ;
40
- assert . deepEqual ( deepCopy ( [ 123 , 456 ] ) , [ 123 , 456 ] ) ;
41
- assert . deepEqual ( deepCopy ( [ 123 , [ 456 ] ] ) , [ 123 , [ 456 ] ] ) ;
39
+ expect ( deepCopy ( [ ] ) ) . to . deep . equal ( [ ] ) ;
40
+ expect ( deepCopy ( [ 123 , 456 ] ) ) . to . deep . equal ( [ 123 , 456 ] ) ;
41
+ expect ( deepCopy ( [ 123 , [ 456 ] ] ) ) . to . deep . equal ( [ 123 , [ 456 ] ] ) ;
42
42
} ) ;
43
43
} ) ;
44
44
45
45
describe ( 'deepExtend' , ( ) => {
46
46
it ( 'Scalars' , ( ) => {
47
- assert . strictEqual ( deepExtend ( 1 , true ) , true ) ;
48
- assert . strictEqual ( deepExtend ( undefined , 123 ) , 123 ) ;
49
- assert . strictEqual ( deepExtend ( 'was' , 'abc' ) , 'abc' ) ;
47
+ expect ( deepExtend ( 1 , true ) ) . to . equal ( true ) ;
48
+ expect ( deepExtend ( undefined , 123 ) ) . to . equal ( 123 ) ;
49
+ expect ( deepExtend ( 'was' , 'abc' ) ) . to . equal ( 'abc' ) ;
50
50
} ) ;
51
51
52
52
it ( 'Date' , ( ) => {
53
53
const d = new Date ( ) ;
54
- assert . deepEqual ( deepExtend ( new Date ( ) , d ) , d ) ;
54
+ expect ( deepExtend ( new Date ( ) , d ) ) . to . deep . equal ( d ) ;
55
55
} ) ;
56
56
57
57
it ( 'Object' , ( ) => {
58
- assert . deepEqual ( deepExtend ( { old : 123 } , { } ) , { old : 123 } ) ;
59
- assert . deepEqual ( deepExtend ( { old : 123 } , { s : 'hello' } ) , {
58
+ expect ( deepExtend ( { old : 123 } , { } ) ) . to . deep . equal ( { old : 123 } ) ;
59
+ expect ( deepExtend ( { old : 123 } , { s : 'hello' } ) ) . to . deep . equal ( {
60
60
old : 123 ,
61
61
s : 'hello'
62
62
} ) ;
63
- assert . deepEqual (
64
- deepExtend ( { old : 123 , a : { c : 'in-old' } } , { a : { b : 123 } } ) ,
65
- { old : 123 , a : { b : 123 , c : 'in-old' } }
66
- ) ;
63
+ expect (
64
+ deepExtend ( { old : 123 , a : { c : 'in-old' } } , { a : { b : 123 } } )
65
+ ) . to . deep . equal ( { old : 123 , a : { b : 123 , c : 'in-old' } } ) ;
67
66
} ) ;
68
67
69
68
it ( 'Array' , ( ) => {
70
- assert . deepEqual ( deepExtend ( [ 1 ] , [ ] ) , [ ] ) ;
71
- assert . deepEqual ( deepExtend ( [ 1 ] , [ 123 , 456 ] ) , [ 123 , 456 ] ) ;
72
- assert . deepEqual ( deepExtend ( [ 1 ] , [ 123 , [ 456 ] ] ) , [ 123 , [ 456 ] ] ) ;
69
+ expect ( deepExtend ( [ 1 ] , [ ] ) ) . to . deep . equal ( [ ] ) ;
70
+ expect ( deepExtend ( [ 1 ] , [ 123 , 456 ] ) ) . to . deep . equal ( [ 123 , 456 ] ) ;
71
+ expect ( deepExtend ( [ 1 ] , [ 123 , [ 456 ] ] ) ) . to . deep . equal ( [ 123 , [ 456 ] ] ) ;
73
72
} ) ;
74
73
75
74
it ( 'Array is copied - not referenced' , ( ) => {
76
75
const o1 = { a : [ 1 ] } ;
77
76
const o2 = { a : [ 2 ] } ;
78
77
79
- assert . deepEqual ( deepExtend ( o1 , o2 ) , { a : [ 2 ] } ) ;
78
+ expect ( deepExtend ( o1 , o2 ) ) . to . deep . equal ( { a : [ 2 ] } ) ;
80
79
o2 . a . push ( 3 ) ;
81
- assert . deepEqual ( o1 , { a : [ 2 ] } ) ;
80
+ expect ( o1 ) . to . deep . equal ( { a : [ 2 ] } ) ;
82
81
} ) ;
83
82
84
83
it ( 'Array with undefined elements' , ( ) => {
85
84
const a : any = [ ] ;
86
85
a [ 3 ] = '3' ;
87
86
const b = deepExtend ( undefined , a ) ;
88
- assert . deepEqual ( b , [ , , , '3' ] ) ;
87
+ expect ( b ) . to . deep . equal ( [ , , , '3' ] ) ;
89
88
} ) ;
90
89
91
90
it ( 'Function' , ( ) => {
@@ -100,7 +99,16 @@ describe('deepExtend', () => {
100
99
} ,
101
100
{ a : source }
102
101
) ;
103
- assert . deepEqual ( { a : source } , target ) ;
104
- assert . strictEqual ( source , target . a ) ;
102
+ expect ( { a : source } ) . to . deep . equal ( target ) ;
103
+ expect ( source ) . to . equal ( target . a ) ;
104
+ } ) ;
105
+
106
+ it ( 'does not extend property __proto__' , ( ) => {
107
+ const src = JSON . parse ( '{ "__proto__": { "polluted": "polluted" } }' ) ;
108
+ const a : Record < string , unknown > = { } ;
109
+ deepExtend ( a , src ) ;
110
+
111
+ expect ( a . __proto__ ) . to . equal ( Object . prototype ) ;
112
+ expect ( a . polluted ) . to . be . undefined ;
105
113
} ) ;
106
114
} ) ;
0 commit comments