mirror of
https://github.com/nodejs/node.git
synced 2025-08-15 05:38:47 +02:00

PR-URL: https://github.com/nodejs/node/pull/58253 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
133 lines
3.3 KiB
JavaScript
133 lines
3.3 KiB
JavaScript
'use strict';
|
|
|
|
require('../common');
|
|
const assert = require('assert');
|
|
const { Assert } = require('assert');
|
|
const { test } = require('node:test');
|
|
|
|
// Disable colored output to prevent color codes from breaking assertion
|
|
// message comparisons. This should only be an issue when process.stdout
|
|
// is a TTY.
|
|
if (process.stdout.isTTY) {
|
|
process.env.NODE_DISABLE_COLORS = '1';
|
|
}
|
|
|
|
test('Assert class destructuring behavior - diff option', () => {
|
|
const assertInstanceFull = new Assert({ diff: 'full' });
|
|
const assertInstanceSimple = new Assert({ diff: 'simple' });
|
|
|
|
assertInstanceFull.throws(
|
|
() => assertInstanceFull.strictEqual({ a: 1 }, { a: 2 }),
|
|
(err) => {
|
|
assert.strictEqual(err.diff, 'full');
|
|
return true;
|
|
}
|
|
);
|
|
|
|
assertInstanceSimple.throws(
|
|
() => assertInstanceSimple.strictEqual({ a: 1 }, { a: 2 }),
|
|
(err) => {
|
|
assert.strictEqual(err.diff, 'simple');
|
|
return true;
|
|
}
|
|
);
|
|
|
|
const { strictEqual: strictEqualSimple } = assertInstanceSimple;
|
|
const { strictEqual: strictEqualFull } = assertInstanceFull;
|
|
const { deepStrictEqual: deepStrictEqualFull } = assertInstanceFull;
|
|
const { equal: equalFull } = assertInstanceFull;
|
|
|
|
assert.throws(
|
|
() => strictEqualSimple({ a: 1 }, { a: 2 }),
|
|
(err) => {
|
|
assert.strictEqual(err.diff, 'simple');
|
|
return true;
|
|
}
|
|
);
|
|
|
|
assert.throws(
|
|
() => strictEqualFull({ a: 1 }, { a: 2 }),
|
|
(err) => {
|
|
assert.strictEqual(err.diff, 'simple');
|
|
return true;
|
|
}
|
|
);
|
|
|
|
assert.throws(
|
|
() => deepStrictEqualFull({ a: 1 }, { a: 2 }),
|
|
(err) => {
|
|
assert.strictEqual(err.diff, 'simple');
|
|
return true;
|
|
}
|
|
);
|
|
|
|
assert.throws(
|
|
() => equalFull({ a: 1 }, { a: 2 }),
|
|
(err) => {
|
|
assert.strictEqual(err.diff, 'simple');
|
|
return true;
|
|
}
|
|
);
|
|
});
|
|
|
|
test('Assert class destructuring behavior - strict option', () => {
|
|
const assertInstanceNonStrict = new Assert({ strict: false });
|
|
const assertInstanceStrict = new Assert({ strict: true });
|
|
|
|
assertInstanceNonStrict.equal(2, '2');
|
|
|
|
assert.throws(
|
|
() => assertInstanceStrict.equal(2, '2'),
|
|
assert.AssertionError
|
|
);
|
|
|
|
const { equal: equalNonStrict } = assertInstanceNonStrict;
|
|
const { equal: equalStrict } = assertInstanceStrict;
|
|
|
|
equalNonStrict(2, '2');
|
|
assert.throws(
|
|
() => equalStrict(2, '2'),
|
|
assert.AssertionError
|
|
);
|
|
});
|
|
|
|
test('Assert class destructuring behavior - comprehensive methods', () => {
|
|
const myAssert = new Assert({ diff: 'full', strict: false });
|
|
|
|
const {
|
|
fail,
|
|
equal,
|
|
strictEqual,
|
|
deepStrictEqual,
|
|
throws,
|
|
match,
|
|
doesNotMatch
|
|
} = myAssert;
|
|
|
|
assert.throws(() => fail('test message'), (err) => {
|
|
assert.strictEqual(err.diff, 'simple');
|
|
assert.strictEqual(err.message, 'test message');
|
|
return true;
|
|
});
|
|
|
|
assert.throws(() => equal({ a: 1 }, { a: 2 }), (err) => {
|
|
assert.strictEqual(err.diff, 'simple');
|
|
return true;
|
|
});
|
|
|
|
assert.throws(() => strictEqual({ a: 1 }, { a: 2 }), (err) => {
|
|
assert.strictEqual(err.diff, 'simple');
|
|
return true;
|
|
});
|
|
|
|
assert.throws(() => deepStrictEqual({ a: 1 }, { a: 2 }), (err) => {
|
|
assert.strictEqual(err.diff, 'simple');
|
|
return true;
|
|
});
|
|
|
|
throws(() => { throw new Error('test'); }, Error);
|
|
|
|
match('hello world', /world/);
|
|
|
|
doesNotMatch('hello world', /xyz/);
|
|
});
|