test: add util.isDeepStrictEqual edge case tests
Test for deep strict equality when prototype and toStringTag have been modified in surprising ways. PR-URL: https://github.com/nodejs/node/pull/25932 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Anto Aravinth <anto.aravinth.cse@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
935b1af990
commit
5d52c8e43c
@ -449,6 +449,31 @@ assert.strictEqual(
|
||||
notUtilIsDeepStrict(boxedSymbol, {});
|
||||
utilIsDeepStrict(Object(BigInt(1)), Object(BigInt(1)));
|
||||
notUtilIsDeepStrict(Object(BigInt(1)), Object(BigInt(2)));
|
||||
|
||||
const booleanish = new Boolean(true);
|
||||
Object.defineProperty(booleanish, Symbol.toStringTag, { value: 'String' });
|
||||
Object.setPrototypeOf(booleanish, String.prototype);
|
||||
notUtilIsDeepStrict(booleanish, new String('true'));
|
||||
|
||||
const numberish = new Number(42);
|
||||
Object.defineProperty(numberish, Symbol.toStringTag, { value: 'String' });
|
||||
Object.setPrototypeOf(numberish, String.prototype);
|
||||
notUtilIsDeepStrict(numberish, new String('42'));
|
||||
|
||||
const stringish = new String('0');
|
||||
Object.defineProperty(stringish, Symbol.toStringTag, { value: 'Number' });
|
||||
Object.setPrototypeOf(stringish, Number.prototype);
|
||||
notUtilIsDeepStrict(stringish, new Number(0));
|
||||
|
||||
const bigintish = new Object(BigInt(42));
|
||||
Object.defineProperty(bigintish, Symbol.toStringTag, { value: 'String' });
|
||||
Object.setPrototypeOf(bigintish, String.prototype);
|
||||
notUtilIsDeepStrict(bigintish, new String('42'));
|
||||
|
||||
const symbolish = new Object(Symbol('fhqwhgads'));
|
||||
Object.defineProperty(symbolish, Symbol.toStringTag, { value: 'String' });
|
||||
Object.setPrototypeOf(symbolish, String.prototype);
|
||||
notUtilIsDeepStrict(symbolish, new String('fhqwhgads'));
|
||||
}
|
||||
|
||||
// Minus zero
|
||||
|
Loading…
x
Reference in New Issue
Block a user