deep-equal-diagnostics
Version:
Ultra-fast robust diagnostic testing for strict deep equality
324 lines (275 loc) • 10.8 kB
JavaScript
const {deepStrictEqual} = require("../deep-strict-equal.js");
const strictEqual = deepStrictEqual
const assert = require('assert')
function assertEqual(x,y)
{
try {
assert.deepStrictEqual(x,y)
return true
} catch(e) { return false }
}
function claim(b, message, logMessage)
{
if(b) console.log(`\u2713 ${message} is true`)
else console.log(`\u2639 ${message} is false: should be true`)
if(logMessage) console.log(strictEqual.message)
}
console.log('-----------------------------------------------------------------');
function test_BigInt()
{
console.log("Test test_BigInt");
const x = 123n
const y = 1234n
claim(strictEqual(x,y) === assertEqual(x,y),'strictEqual(x,y) === assertEqual(x,y)')
claim(!strictEqual(x,y), '!strictEqual(x,y)', true)
}
test_BigInt();
console.log('-----------------------------------------------------------------');
function test_Symbol()
{
console.log("Test test_Symbol");
const x = Symbol()
const y = Symbol()
claim(strictEqual(x,y) === assertEqual(x,y),'strictEqual(x,y) === assertEqual(x,y)')
claim(!strictEqual(x,y), '!strictEqual(x,y)', true)
}
test_Symbol();
console.log('-----------------------------------------------------------------');
function test_Symbola()
{
console.log("Test test_Symbola");
const x = new Error('message')
const y = Symbol()
claim(strictEqual(x,y) === assertEqual(x,y),'strictEqual(x,y) === assertEqual(x,y)')
claim(!strictEqual(x,y), '!strictEqual(x,y)', true)
}
test_Symbola();
console.log('-----------------------------------------------------------------');
function test_Boolean()
{
console.log("Test test_Boolean");
const x = new Boolean(true)
const y = new Boolean(false)
claim(strictEqual(x,y) === assertEqual(x,y),'strictEqual(x,y) === assertEqual(x,y)')
claim(!strictEqual(x,y), '!strictEqual(x,y)', true)
}
test_Boolean();
console.log('-----------------------------------------------------------------');
function test_Number()
{
console.log("Test test_Number");
const x = new Number(1)
const y = new Number(2)
claim(strictEqual(x,y) === assertEqual(x,y),'strictEqual(x,y) === assertEqual(x,y)')
claim(!strictEqual(x,y), '!strictEqual(x,y)', true)
}
test_Number();
console.log('-----------------------------------------------------------------');
function test_String()
{
console.log("Test test_String");
const x = new Number("dog")
const y = new Number("hamster")
claim(strictEqual(x,y) === assertEqual(x,y),'strictEqual(x,y) === assertEqual(x,y)')
claim(!strictEqual(x,y), '!strictEqual(x,y)', true)
}
test_Number();
console.log('-----------------------------------------------------------------');
function test_Date()
{
console.log("Test test_Date");
const x = new Date(123)
const y = new Date(1234)
claim(strictEqual(x,y) === assertEqual(x,y),'strictEqual(x,y) === assertEqual(x,y)')
claim(!strictEqual(x,y), '!strictEqual(x,y)', true)
}
test_Date();
console.log('-----------------------------------------------------------------');
function test_RegExp()
{
console.log("Test test_RegExp");
const x = /abc/
const y = /abc/g
claim(strictEqual(x,y) === assertEqual(x,y),'strictEqual(x,y) === assertEqual(x,y)')
claim(!strictEqual(x,y), '!strictEqual(x,y)', true)
}
test_RegExp();
console.log('-----------------------------------------------------------------');
function test_Array()
{
console.log("Test test_Array");
const x = [1]
const y = [2]
claim(strictEqual(x,y) === assertEqual(x,y),'strictEqual(x,y) === assertEqual(x,y)')
claim(!strictEqual(x,y), '!strictEqual(x,y)', true)
}
test_Array();
console.log('-----------------------------------------------------------------');
function test_Function()
{
console.log("Test test_Function");
const x = function bax(){}
const y = function (){}
claim(strictEqual(x,y) === assertEqual(x,y),'strictEqual(x,y) === assertEqual(x,y)')
claim(!strictEqual(x,y), '!strictEqual(x,y)', true)
}
test_Function();
console.log('-----------------------------------------------------------------');
function test_Uint8Array()
{
console.log("Test test_Uint8Array");
const buffer = new Uint8Array([1,2,3,4,5,6,7,8]).buffer
const x = new Uint8Array(buffer,1,2 )
const y = new Uint8Array(buffer,2,2 )
claim(strictEqual(x,y) === assertEqual(x,y),'strictEqual(x,y) === assertEqual(x,y)')
claim(!strictEqual(x,y), '!strictEqual(x,y)', true)
}
test_Uint8Array();
console.log('-----------------------------------------------------------------');
function test_Uint8Arraya()
{
console.log("Test test_Uint8Arraya");
const bufferX = new Uint8Array([1,2,3,4,5,6,7,8]).buffer
const bufferY = new Uint8Array([1,2,3,4,5,6,7,8]).buffer
const x = new Uint8Array(bufferX,1,2 )
const y = new Uint8Array(bufferY,2,2 )
claim(strictEqual(x,y) === assertEqual(x,y),'strictEqual(x,y) === assertEqual(x,y)')
claim(!strictEqual(x,y), '!strictEqual(x,y)', true)
}
test_Uint8Arraya();
console.log('-----------------------------------------------------------------');
function test_Uint8Arrayb()
{
console.log("Test test_Uint8Arrayb");
const bufferX = new Uint8Array([1,2,3,4,5,6,7,8]).buffer
const bufferY = new Uint8Array([1,2,3,4,5,6,7,8]).buffer
const x = new Uint8Array(bufferX,2,2 )
const y = new Uint8Array(bufferY,2,3 )
claim(strictEqual(x,y) === assertEqual(x,y),'strictEqual(x,y) === assertEqual(x,y)')
claim(!strictEqual(x,y), '!strictEqual(x,y)', true)
}
test_Uint8Arrayb();
console.log('-----------------------------------------------------------------');
function test_Map()
{
console.log("Test test_Map");
const x = new Map()
const y = new Map([[{},{}]])
claim(strictEqual(x,y) === assertEqual(x,y),'strictEqual(x,y) === assertEqual(x,y)')
claim(!strictEqual(x,y), '!strictEqual(x,y)', true)
}
test_Map();
console.log('-----------------------------------------------------------------');
function test_Set()
{
console.log("Test test_Set");
const x = new Set()
const y = new Set([{}])
claim(strictEqual(x,y) === assertEqual(x,y),'strictEqual(x,y) === assertEqual(x,y)')
claim(!strictEqual(x,y), '!strictEqual(x,y)', true)
}
test_Set();
console.log('-----------------------------------------------------------------');
function test_Seta()
{
console.log("Test test_Seta");
const x = new Set([{a:1}])
const y = new Set([{a:2}])
claim(strictEqual(x,y) === assertEqual(x,y),'strictEqual(x,y) === assertEqual(x,y)')
claim(!strictEqual(x,y), '!strictEqual(x,y)', true)
}
test_Seta();
console.log('-----------------------------------------------------------------');
function test_DataView()
{
console.log("Test test_DataView");
const buffer = new Uint8Array([1,2,3,4,5,6,7,8]).buffer
const x = new DataView(buffer,1,2)
const y = new DataView(buffer,1,2)
claim(strictEqual(x,y) === assertEqual(x,y),'strictEqual(x,y) === assertEqual(x,y)')
claim(strictEqual(x,y), 'strictEqual(x,y)', true)
}
test_DataView()
console.log('-----------------------------------------------------------------');
function test_DataViewa()
{
console.log("Test test_DataViewa");
const bufferx = new Uint8Array([1,2,3,4,5,6,7,8]).buffer
const buffery = new Uint8Array([1,2,3,4,5,6,7,8]).buffer
const x = new DataView(bufferx,1,2)
const y = new DataView(buffery,1,3)
claim(strictEqual(x,y) === assertEqual(x,y),'strictEqual(x,y) === assertEqual(x,y)')
claim(!strictEqual(x,y), '!strictEqual(x,y)', true)
}
test_DataViewa()
console.log('-----------------------------------------------------------------');
function test_ArrayBuffer()
{
console.log("Test test_ArrayBuffer");
const buffer = new Uint8Array([1,2,3,4,5,6,7,8]).buffer
const x = new Uint8Array(buffer).buffer
const y = new Uint8Array(buffer).buffer
claim(strictEqual(x,y) === assertEqual(x,y),'strictEqual(x,y) === assertEqual(x,y)')
claim(strictEqual(x,y), 'strictEqual(x,y)', true)
}
test_ArrayBuffer()
console.log('-----------------------------------------------------------------');
function test_ArrayBuffera()
{
console.log("Test test_ArrayBuffera");
const x = new Uint8Array([1,2,3,4,5,6,7,8]).buffer
const y = new Uint8Array([1,2,3,4,5,6,7,9]).buffer
claim(strictEqual(x,y) === assertEqual(x,y),'strictEqual(x,y) === assertEqual(x,y)')
claim(!strictEqual(x,y), '!strictEqual(x,y)', true)
}
test_ArrayBuffera()
console.log('-----------------------------------------------------------------');
function test_ArrayBufferb()
{
console.log("Test test_ArrayBufferb");
const x = new Uint8Array([1,2,3,4,5,6,7,8]).buffer
const y = new Uint8Array([1,2,3,4,5,6,7,9]).buffer
claim(strictEqual(x,y) === assertEqual(x,y),'strictEqual(x,y) === assertEqual(x,y)')
claim(!strictEqual(x,y), '!strictEqual(x,y)', true)
}
test_ArrayBufferb()
console.log('-----------------------------------------------------------------');
function test_WeakSet()
{
console.log("Test test_WeakSet");
const x = new WeakSet()
const y = new WeakSet()
claim(strictEqual(x,y) === assertEqual(x,y),'strictEqual(x,y) === assertEqual(x,y)')
claim(strictEqual(x,y), 'strictEqual(x,y)', true)
}
test_WeakSet()
console.log('-----------------------------------------------------------------');
function test_WeakMap()
{
console.log("Test test_WeakMap");
const x = new WeakMap()
const y = new WeakMap()
claim(strictEqual(x,y) === assertEqual(x,y),'strictEqual(x,y) === assertEqual(x,y)')
claim(strictEqual(x,y), 'strictEqual(x,y)', true)
}
test_WeakMap()
console.log('-----------------------------------------------------------------');
function test_Error() // BUG IN assertEqual
{
console.log("Test test_Error");
const x = new Error('message')
const y = new Error('message')
//console.log(x.stack === y.stack)
claim(strictEqual(x,y) === assertEqual(x,y),'strictEqual(x,y) === assertEqual(x,y)')
}
test_Error();
function test_RangeError()
{
console.log("Test test_RangeError");
const x = new Error('message')
const y = new RangeError('message')
y.stack = x.stack
claim(strictEqual(x,y) === assertEqual(x,y),'strictEqual(x,y) === assertEqual(x,y)')
claim(!strictEqual(x,y), '!strictEqual(x,y)', true)
}
test_RangeError();