-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathex3.test.js
More file actions
24 lines (17 loc) · 730 Bytes
/
ex3.test.js
File metadata and controls
24 lines (17 loc) · 730 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
'use strict';
const { unique } = require('./ex3');
function assert(condition, message) {
if (!condition) throw new Error(message || 'Assertion failed');
}
const obj = {};
const values = [NaN, NaN, 0, -0, 1, 1, obj, { }];
const res = unique(values);
assert(res.length === 5, 'should dedupe with SameValueZero');
assert(Number.isNaN(res[0]), 'first value should be NaN');
assert(Object.is(res[1], 0), '0 should be preserved');
assert(res.includes(obj), 'object identity should be preserved');
const res2 = unique([obj, obj]);
assert(res2.length === 1, 'same object should dedupe');
const res3 = unique([{ a: 1 }, { a: 1 }]);
assert(res3.length === 2, 'distinct objects should not dedupe');
console.log('ex3 tests passed');