This repository has been archived by the owner on Apr 18, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
callbacks_test.ts
89 lines (83 loc) · 2.14 KB
/
callbacks_test.ts
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
import {
assertEquals,
assertThrows,
assertThrowsAsync,
} from "./deps/std/testing/asserts.ts";
import {
fromNow,
returnsThis,
returnsArg,
returnsArgs,
throws,
resolves,
rejects,
} from "./callbacks.ts";
Deno.test("returnsThis", () => {
const callback = returnsThis();
const obj = { callback, x: 1, y: 2 };
const obj2 = { x: 2, y: 3 };
assertEquals(callback(), undefined);
assertEquals(obj.callback(), obj);
assertEquals(callback.apply(obj2, []), obj2);
});
Deno.test("returnsArg", () => {
let callback = returnsArg(0);
assertEquals(callback(), undefined);
assertEquals(callback("a"), "a");
assertEquals(callback("b", "c"), "b");
callback = returnsArg(1);
assertEquals(callback(), undefined);
assertEquals(callback("a"), undefined);
assertEquals(callback("b", "c"), "c");
assertEquals(callback("d", "e", "f"), "e");
});
Deno.test("returnsArgs", () => {
let callback = returnsArgs();
assertEquals(callback(), []);
assertEquals(callback("a"), ["a"]);
assertEquals(callback("b", "c"), ["b", "c"]);
callback = returnsArgs(1);
assertEquals(callback(), []);
assertEquals(callback("a"), []);
assertEquals(callback("b", "c"), ["c"]);
assertEquals(callback("d", "e", "f"), ["e", "f"]);
callback = returnsArgs(1, 3);
assertEquals(callback("a"), []);
assertEquals(callback("b", "c"), ["c"]);
assertEquals(callback("d", "e", "f"), ["e", "f"]);
assertEquals(callback("d", "e", "f", "g"), ["e", "f"]);
});
Deno.test("throws", () => {
let callback = throws(new Error("not found"));
assertThrows(
() => callback(),
Error,
"not found",
);
callback = throws(new Error("invalid"));
assertThrows(
() => callback(),
Error,
"invalid",
);
});
Deno.test("resolves", async () => {
let callback = resolves(2);
assertEquals(await callback(), 2);
callback = resolves(3);
assertEquals(await callback(), 3);
});
Deno.test("rejects", async () => {
let callback = rejects(new Error("not found"));
await assertThrowsAsync(
callback,
Error,
"not found",
);
callback = rejects(new Error("invalid"));
await assertThrowsAsync(
callback,
Error,
"invalid",
);
});