@@ -149,6 +149,121 @@ assert.doesNotThrow(makeBlock(a.deepEqual, new String('a'), {0: 'a'}), a.Asserti
149
149
assert . doesNotThrow ( makeBlock ( a . deepEqual , new Number ( 1 ) , { } ) , a . AssertionError ) ;
150
150
assert . doesNotThrow ( makeBlock ( a . deepEqual , new Boolean ( true ) , { } ) , a . AssertionError ) ;
151
151
152
+ //deepStrictEqual
153
+ assert . doesNotThrow ( makeBlock ( a . deepStrictEqual , new Date ( 2000 , 3 , 14 ) ,
154
+ new Date ( 2000 , 3 , 14 ) ) , 'deepStrictEqual date' ) ;
155
+
156
+ assert . throws ( makeBlock ( a . deepStrictEqual , new Date ( ) , new Date ( 2000 , 3 , 14 ) ) ,
157
+ a . AssertionError ,
158
+ 'deepStrictEqual date' ) ;
159
+
160
+ // 7.3 - strict
161
+ assert . doesNotThrow ( makeBlock ( a . deepStrictEqual , / a / , / a / ) ) ;
162
+ assert . doesNotThrow ( makeBlock ( a . deepStrictEqual , / a / g, / a / g) ) ;
163
+ assert . doesNotThrow ( makeBlock ( a . deepStrictEqual , / a / i, / a / i) ) ;
164
+ assert . doesNotThrow ( makeBlock ( a . deepStrictEqual , / a / m, / a / m) ) ;
165
+ assert . doesNotThrow ( makeBlock ( a . deepStrictEqual , / a / igm, / a / igm) ) ;
166
+ assert . throws ( makeBlock ( a . deepStrictEqual , / a b / , / a / ) ) ;
167
+ assert . throws ( makeBlock ( a . deepStrictEqual , / a / g, / a / ) ) ;
168
+ assert . throws ( makeBlock ( a . deepStrictEqual , / a / i, / a / ) ) ;
169
+ assert . throws ( makeBlock ( a . deepStrictEqual , / a / m, / a / ) ) ;
170
+ assert . throws ( makeBlock ( a . deepStrictEqual , / a / igm, / a / im) ) ;
171
+
172
+ var re1 = / a / ;
173
+ re1 . lastIndex = 3 ;
174
+ assert . throws ( makeBlock ( a . deepStrictEqual , re1 , / a / ) ) ;
175
+
176
+
177
+ // 7.4 - strict
178
+ assert . throws ( makeBlock ( a . deepStrictEqual , 4 , '4' ) ,
179
+ a . AssertionError ,
180
+ 'deepStrictEqual === check' ) ;
181
+
182
+ assert . throws ( makeBlock ( a . deepStrictEqual , true , 1 ) ,
183
+ a . AssertionError ,
184
+ 'deepStrictEqual === check' ) ;
185
+
186
+ assert . throws ( makeBlock ( a . deepStrictEqual , 4 , '5' ) ,
187
+ a . AssertionError ,
188
+ 'deepStrictEqual === check' ) ;
189
+
190
+ // 7.5 - strict
191
+ // having the same number of owned properties && the same set of keys
192
+ assert . doesNotThrow ( makeBlock ( a . deepStrictEqual , { a : 4 } , { a : 4 } ) ) ;
193
+ assert . doesNotThrow ( makeBlock ( a . deepStrictEqual ,
194
+ { a : 4 , b : '2' } ,
195
+ { a : 4 , b : '2' } ) ) ;
196
+ assert . throws ( makeBlock ( a . deepStrictEqual , [ 4 ] , [ '4' ] ) ) ;
197
+ assert . throws ( makeBlock ( a . deepStrictEqual , { a : 4 } , { a : 4 , b : true } ) ,
198
+ a . AssertionError ) ;
199
+ assert . throws ( makeBlock ( a . deepStrictEqual , [ 'a' ] , { 0 : 'a' } ) ) ;
200
+ //(although not necessarily the same order),
201
+ assert . doesNotThrow ( makeBlock ( a . deepStrictEqual ,
202
+ { a : 4 , b : '1' } ,
203
+ { b : '1' , a : 4 } ) ) ;
204
+
205
+ assert . throws ( makeBlock ( a . deepStrictEqual ,
206
+ [ 0 , 1 , 2 , 'a' , 'b' ] ,
207
+ [ 0 , 1 , 2 , 'b' , 'a' ] ) ,
208
+ a . AssertionError ) ;
209
+
210
+ assert . doesNotThrow ( makeBlock ( a . deepStrictEqual , a1 , a2 ) ) ;
211
+
212
+ // Prototype check
213
+ function Constructor1 ( first , last ) {
214
+ this . first = first ;
215
+ this . last = last ;
216
+ }
217
+
218
+ function Constructor2 ( first , last ) {
219
+ this . first = first ;
220
+ this . last = last ;
221
+ }
222
+
223
+ var obj1 = new Constructor1 ( 'Ryan' , 'Dahl' ) ;
224
+ var obj2 = new Constructor2 ( 'Ryan' , 'Dahl' ) ;
225
+
226
+ assert . throws ( makeBlock ( a . deepStrictEqual , obj1 , obj2 ) , a . AssertionError ) ;
227
+
228
+ Constructor2 . prototype = Constructor1 . prototype ;
229
+ obj2 = new Constructor2 ( 'Ryan' , 'Dahl' ) ;
230
+
231
+ assert . doesNotThrow ( makeBlock ( a . deepStrictEqual , obj1 , obj2 ) ) ;
232
+
233
+ // primitives
234
+ assert . throws ( makeBlock ( assert . deepStrictEqual , 4 , '4' ) ,
235
+ a . AssertionError ) ;
236
+ assert . throws ( makeBlock ( assert . deepStrictEqual , true , 1 ) ,
237
+ a . AssertionError ) ;
238
+ assert . throws ( makeBlock ( assert . deepStrictEqual , Symbol ( ) , Symbol ( ) ) ,
239
+ a . AssertionError ) ;
240
+
241
+ var s = Symbol ( ) ;
242
+ assert . doesNotThrow ( makeBlock ( assert . deepStrictEqual , s , s ) ) ;
243
+
244
+
245
+ // primitives and object
246
+ assert . throws ( makeBlock ( a . deepStrictEqual , null , { } ) , a . AssertionError ) ;
247
+ assert . throws ( makeBlock ( a . deepStrictEqual , undefined , { } ) , a . AssertionError ) ;
248
+ assert . throws ( makeBlock ( a . deepStrictEqual , 'a' , [ 'a' ] ) , a . AssertionError ) ;
249
+ assert . throws ( makeBlock ( a . deepStrictEqual , 'a' , { 0 : 'a' } ) , a . AssertionError ) ;
250
+ assert . throws ( makeBlock ( a . deepStrictEqual , 1 , { } ) , a . AssertionError ) ;
251
+ assert . throws ( makeBlock ( a . deepStrictEqual , true , { } ) , a . AssertionError ) ;
252
+ assert . throws ( makeBlock ( assert . deepStrictEqual , Symbol ( ) , { } ) ,
253
+ a . AssertionError ) ;
254
+
255
+
256
+ // primitive wrappers and object
257
+ assert . throws ( makeBlock ( a . deepStrictEqual , new String ( 'a' ) , [ 'a' ] ) ,
258
+ a . AssertionError ) ;
259
+ assert . throws ( makeBlock ( a . deepStrictEqual , new String ( 'a' ) , { 0 : 'a' } ) ,
260
+ a . AssertionError ) ;
261
+ assert . throws ( makeBlock ( a . deepStrictEqual , new Number ( 1 ) , { } ) ,
262
+ a . AssertionError ) ;
263
+ assert . throws ( makeBlock ( a . deepStrictEqual , new Boolean ( true ) , { } ) ,
264
+ a . AssertionError ) ;
265
+
266
+
152
267
// Testing the throwing
153
268
function thrower ( errorConstructor ) {
154
269
throw new errorConstructor ( 'test' ) ;
0 commit comments