-
-
Notifications
You must be signed in to change notification settings - Fork 35.4k
Expand file tree
/
Copy pathtest-assert-class-destructuring.js
More file actions
128 lines (104 loc) Β· 3.2 KB
/
test-assert-class-destructuring.js
File metadata and controls
128 lines (104 loc) Β· 3.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
'use strict';
require('../common');
const assert = require('assert');
// eslint-disable-next-line node-core/must-call-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 }),
{ diff: 'full' },
);
assertInstanceSimple.throws(
() => assertInstanceSimple.strictEqual({ a: 1 }, { a: 2 }),
{ diff: 'simple' },
);
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/);
});