-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdiff.test.ts
More file actions
85 lines (79 loc) · 2.23 KB
/
diff.test.ts
File metadata and controls
85 lines (79 loc) · 2.23 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
import * as assert from "node:assert";
import { diff } from "./index.ts";
describe("diff", () => {
it("should create a difference set of two arrays", () => {
assert.deepStrictEqual(
diff([1, 2, 3, 4, 5], [2, 3]),
[1, 4, 5]
);
});
it("should create a difference set of properties of two objects", () => {
assert.deepStrictEqual(
diff({ foo: "Hello", bar: "World" }, { foo: "Hi" }),
{ foo: "Hi", bar: "World" }
);
});
it("should create a deep difference set of properties of two objects", () => {
assert.deepStrictEqual(
diff({
foo: "Hello",
bar: "World",
child: {
foo: 123,
bar: 456
}
}, {
foo: "Hi",
child: {
bar: 456
}
}, true),
{
foo: "Hi",
bar: "World",
child: {
foo: 123
}
}
);
});
it("should remove empty nodes when deeply diff two objects", () => {
assert.deepStrictEqual(
diff({
foo: "Hello",
bar: "World",
child: {
foo: 123,
bar: 456
},
arr: [1, 2, 3]
}, {
foo: "Hi",
child: {
foo: 123,
bar: 456
},
arr: [1, 2, 3]
}, true),
{
foo: "Hi",
bar: "World"
}
);
});
it("should treat all void values equal", () => {
assert.deepStrictEqual(
diff(
{ nil: null, not: undefined, nan: NaN, foo: null, bar: void 0 },
{ nil: undefined, not: NaN, nan: null, foo: false, bar: "A" }
),
{ foo: false, bar: "A" }
);
});
it("should differ if only the origin's property is void", () => {
assert.deepStrictEqual(
diff({ foo: null }, { foo: "Hello" }),
{ foo: "Hello" }
);
});
});