This repository has been archived by the owner on Jan 2, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
create-node.spec.ts
89 lines (74 loc) · 2.34 KB
/
create-node.spec.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 { Fragment } from "./fragment";
import { createNode, CreateNodeFragmentSourceFirstStage, CreateNodeFragmentSourceSecondStage } from "./create-node";
import { FragmentVNode, isFragmentVNode, isScalarVNode, ScalarVNode, VNode } from "./vnode";
import { SourceReference } from "./source-reference";
describe("createNode", () => {
describe("types", () => {
/*
export type CreateNodeFragmentSourceFirstStage =
| Function
| Promise<unknown>
| typeof Fragment;
export type CreateNodeFragmentSourceSecondStage =
| AsyncIterable<unknown>
| Iterable<unknown>
| IterableIterator<unknown>
| undefined
| null;
*/
it.concurrent.each<[CreateNodeFragmentSourceFirstStage]>([
[() => {}],
[Promise.resolve()],
[Fragment],
])("%p should produce a fragment node", async (input) => {
const output: FragmentVNode = createNode(input);
expect(isFragmentVNode(output)).toEqual(true);
});
it.concurrent.each<[VNode]>([
[createNode("source")],
[createNode(Fragment)]
])("%p should return itself", async <I extends VNode>(input: I) => {
const output: I = createNode(input);
expect(output).toEqual(input);
});
it.concurrent.each<[SourceReference]>([
[Symbol("Unique Symbol")],
[true],
[false],
[1],
[0],
[1n],
[0n],
[""],
["Hello!"],
])("%p should produce a scalar node", async <I extends SourceReference>(input: I ) => {
const output = createNode(input);
expect(isScalarVNode(output)).toEqual(true);
const source: I = output.source;
expect(source).toEqual(input);
});
async function *asyncGenerator() {
}
function *generator() {
}
it.concurrent.each<[CreateNodeFragmentSourceSecondStage]>([
[asyncGenerator()],
[generator()],
[undefined],
[
// tslint:disable-next-line:no-null-keyword
null
],
[[]], // Iterable,
[{ async *[Symbol.asyncIterator]() { }}] // AsyncIterable
])("%p should produce a fragment node", async (input) => {
const output: FragmentVNode = createNode(input);
expect(isFragmentVNode(output)).toEqual(true);
});
it("Should throw for a random object", () => {
const node: unknown = { key: 1 };
// pls no
expect(() => createNode(node as VNode)).toThrow();
});
});
});