This repository has been archived by the owner on Nov 6, 2024. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathRecord.js
90 lines (71 loc) · 2.23 KB
/
Record.js
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
import Main from "./Main.js";
const { compare, Record, createRecord, Decoder, Ok, Err } = Main;
test("comparing two identical records", () => {
const a = new Record({ name: "Joe" });
const b = new Record({ name: "Joe" });
expect(compare(a, b)).toBe(true);
});
test("comparing the same record", () => {
const a = new Record({ name: "Joe" });
expect(compare(a, a)).toBe(true);
});
test("comparing different records", () => {
const a = new Record({ name: "Joe" });
const b = new Record({ name: "Doe" });
expect(compare(a, b)).toBe(false);
});
test("comparing records with not matching keys", () => {
const a = new Record({ name: "Joe" });
const b = new Record({ b: "Doe" });
expect(compare(a, b)).toBe(false);
});
test("comparing records with different number of keys", () => {
const a = new Record({ name: "Joe" });
const b = new Record({ name: "Joe", gender: "male" });
expect(compare(a, b)).toBe(false);
});
test("comparing records with something else", () => {
const a = new Record({ name: "Joe" });
expect(compare(a, "A")).toBe(false);
});
describe("creating a record", () => {
it("decodes successfully", () => {
const C = createRecord({
a: ["caseInsensitive", Decoder.boolean],
b: ["multiline", Decoder.boolean],
c: ["unicode", Decoder.boolean],
d: ["global", Decoder.boolean],
e: ["sticky", Decoder.boolean],
});
const result = C.decode({
caseInsensitive: true,
multiline: true,
unicode: true,
global: true,
sticky: true,
});
expect(result instanceof Ok).toBe(true);
expect(result._0.a).toBe(true);
expect(result._0.b).toBe(true);
expect(result._0.c).toBe(true);
expect(result._0.d).toBe(true);
expect(result._0.e).toBe(true);
});
it("returns an error if can't decode", () => {
const C = createRecord({
a: ["caseInsensitive", Decoder.boolean],
b: ["multiline", Decoder.boolean],
c: ["unicode", Decoder.boolean],
d: ["global", Decoder.boolean],
e: ["sticky", Decoder.boolean],
});
const result = C.decode({
caseInsensitive: "true",
multiline: true,
unicode: true,
global: true,
sticky: true,
});
expect(result instanceof Err).toBe(true);
});
});