From f9ed5f351b254571b4edda964107e1048635df7a Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Tue, 6 Aug 2019 13:34:19 -0700 Subject: [PATCH] test: assert: add failing deepEqual test for faked boxed primitives MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/29029 Reviewed-By: James M Snell Reviewed-By: Gus Caplan Reviewed-By: Michaƫl Zasso Reviewed-By: Anna Henningsen Reviewed-By: Rich Trott --- test/parallel/test-assert-deep.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/test/parallel/test-assert-deep.js b/test/parallel/test-assert-deep.js index f0af085c6ab4db..87f2a5f44f7d64 100644 --- a/test/parallel/test-assert-deep.js +++ b/test/parallel/test-assert-deep.js @@ -28,8 +28,7 @@ function re(literals, ...values) { getters: true }); // Need to escape special characters. - result += str; - result += literals[i + 1]; + result += `${str}${literals[i + 1]}`; } return { code: 'ERR_ASSERTION', @@ -605,11 +604,21 @@ assert.deepStrictEqual([ 1, 2, NaN, 4 ], [ 1, 2, NaN, 4 ]); { const boxedString = new String('test'); const boxedSymbol = Object(Symbol()); + + const fakeBoxedSymbol = {}; + Object.setPrototypeOf(fakeBoxedSymbol, Symbol.prototype); + Object.defineProperty( + fakeBoxedSymbol, + Symbol.toStringTag, + { enumerable: false, value: 'Symbol' } + ); + assertNotDeepOrStrict(new Boolean(true), Object(false)); assertNotDeepOrStrict(Object(true), new Number(1)); assertNotDeepOrStrict(new Number(2), new Number(1)); assertNotDeepOrStrict(boxedSymbol, Object(Symbol())); assertNotDeepOrStrict(boxedSymbol, {}); + assertNotDeepOrStrict(boxedSymbol, fakeBoxedSymbol); assertDeepAndStrictEqual(boxedSymbol, boxedSymbol); assertDeepAndStrictEqual(Object(true), Object(true)); assertDeepAndStrictEqual(Object(2), Object(2)); @@ -618,6 +627,7 @@ assert.deepStrictEqual([ 1, 2, NaN, 4 ], [ 1, 2, NaN, 4 ]); assertNotDeepOrStrict(boxedString, Object('test')); boxedSymbol.slow = true; assertNotDeepOrStrict(boxedSymbol, {}); + assertNotDeepOrStrict(boxedSymbol, fakeBoxedSymbol); } // Minus zero