wyreframe 0.1.0 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +692 -0
- package/README.md +65 -5
- package/package.json +8 -7
- package/src/index.ts +425 -0
- package/src/renderer/Renderer.gen.tsx +49 -0
- package/src/renderer/Renderer.mjs +41 -1
- package/src/renderer/Renderer.res +78 -0
- package/src/parser/Core/__tests__/Bounds_test.mjs +0 -326
- package/src/parser/Core/__tests__/Bounds_test.res +0 -412
- package/src/parser/Core/__tests__/Grid_test.mjs +0 -322
- package/src/parser/Core/__tests__/Grid_test.res +0 -319
- package/src/parser/Core/__tests__/Types_test.mjs +0 -614
- package/src/parser/Core/__tests__/Types_test.res +0 -650
- package/src/parser/Detector/__tests__/BoxTracer_test.mjs +0 -70
- package/src/parser/Detector/__tests__/BoxTracer_test.res +0 -92
- package/src/parser/Detector/__tests__/HierarchyBuilder_test.mjs +0 -489
- package/src/parser/Detector/__tests__/HierarchyBuilder_test.res +0 -849
- package/src/parser/Detector/__tests__/ShapeDetector_test.mjs +0 -377
- package/src/parser/Detector/__tests__/ShapeDetector_test.res +0 -563
- package/src/parser/Interactions/__tests__/InteractionMerger_test.mjs +0 -576
- package/src/parser/Interactions/__tests__/InteractionMerger_test.res +0 -646
- package/src/parser/Scanner/__tests__/Grid_manual.mjs +0 -214
- package/src/parser/Scanner/__tests__/Grid_manual.res +0 -141
- package/src/parser/Semantic/Elements/__tests__/ButtonParser_test.mjs +0 -189
- package/src/parser/Semantic/Elements/__tests__/ButtonParser_test.res +0 -257
- package/src/parser/Semantic/Elements/__tests__/CheckboxParser_test.mjs +0 -202
- package/src/parser/Semantic/Elements/__tests__/CheckboxParser_test.res +0 -250
- package/src/parser/Semantic/Elements/__tests__/CodeTextParser_manual.mjs +0 -293
- package/src/parser/Semantic/Elements/__tests__/CodeTextParser_manual.res +0 -134
- package/src/parser/Semantic/Elements/__tests__/InputParser_test.mjs +0 -253
- package/src/parser/Semantic/Elements/__tests__/InputParser_test.res +0 -304
- package/src/parser/Semantic/Elements/__tests__/LinkParser_test.mjs +0 -289
- package/src/parser/Semantic/Elements/__tests__/LinkParser_test.res +0 -402
- package/src/parser/Semantic/Elements/__tests__/TextParser_test.mjs +0 -149
- package/src/parser/Semantic/Elements/__tests__/TextParser_test.res +0 -167
- package/src/parser/Semantic/__tests__/ASTBuilder_test.mjs +0 -187
- package/src/parser/Semantic/__tests__/ASTBuilder_test.res +0 -192
- package/src/parser/Semantic/__tests__/ParserRegistry_test.mjs +0 -154
- package/src/parser/Semantic/__tests__/ParserRegistry_test.res +0 -191
- package/src/parser/Semantic/__tests__/SemanticParser_integration_test.mjs +0 -768
- package/src/parser/Semantic/__tests__/SemanticParser_integration_test.res +0 -1069
- package/src/parser/Semantic/__tests__/SemanticParser_manual.mjs +0 -1329
- package/src/parser/Semantic/__tests__/SemanticParser_manual.res +0 -544
- package/src/parser/__tests__/GridScanner_integration.test.mjs +0 -632
- package/src/parser/__tests__/GridScanner_integration.test.res +0 -816
- package/src/parser/__tests__/Performance.test.mjs +0 -244
- package/src/parser/__tests__/Performance.test.res +0 -371
- package/src/parser/__tests__/PerformanceFixtures.mjs +0 -200
- package/src/parser/__tests__/PerformanceFixtures.res +0 -284
- package/src/parser/__tests__/WyreframeParser_integration.test.mjs +0 -770
- package/src/parser/__tests__/WyreframeParser_integration.test.res +0 -1008
- package/src/parser/__tests__/fixtures/alignment-test.txt +0 -9
- package/src/parser/__tests__/fixtures/all-elements.txt +0 -16
- package/src/parser/__tests__/fixtures/login-scene.txt +0 -17
- package/src/parser/__tests__/fixtures/multi-scene.txt +0 -25
- package/src/parser/__tests__/fixtures/nested-boxes.txt +0 -15
- package/src/parser/__tests__/fixtures/simple-box.txt +0 -5
- package/src/parser/__tests__/fixtures/with-dividers.txt +0 -14
|
@@ -1,614 +0,0 @@
|
|
|
1
|
-
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
|
-
|
|
3
|
-
import * as Vitest from "rescript-vitest/src/Vitest.mjs";
|
|
4
|
-
|
|
5
|
-
Vitest.describe("Types - cellChar variant", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, () => {
|
|
6
|
-
Vitest.test("Corner variant can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("Corner").toBe("Corner"));
|
|
7
|
-
Vitest.test("HLine variant can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("HLine").toBe("HLine"));
|
|
8
|
-
Vitest.test("VLine variant can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("VLine").toBe("VLine"));
|
|
9
|
-
Vitest.test("Divider variant can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("Divider").toBe("Divider"));
|
|
10
|
-
Vitest.test("Space variant can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("Space").toBe("Space"));
|
|
11
|
-
Vitest.test("Char variant can be created with content", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect({
|
|
12
|
-
TAG: "Char",
|
|
13
|
-
_0: "a"
|
|
14
|
-
}).toEqual({
|
|
15
|
-
TAG: "Char",
|
|
16
|
-
_0: "a"
|
|
17
|
-
}));
|
|
18
|
-
Vitest.test("cellChar variants are distinct", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
19
|
-
t.expect("Corner").not.toBe("HLine");
|
|
20
|
-
t.expect("HLine").not.toBe("VLine");
|
|
21
|
-
t.expect("VLine").not.toBe("Divider");
|
|
22
|
-
t.expect("Divider").not.toBe("Space");
|
|
23
|
-
});
|
|
24
|
-
Vitest.test("Char variant with different content are distinct", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect({
|
|
25
|
-
TAG: "Char",
|
|
26
|
-
_0: "a"
|
|
27
|
-
}).not.toEqual({
|
|
28
|
-
TAG: "Char",
|
|
29
|
-
_0: "b"
|
|
30
|
-
}));
|
|
31
|
-
Vitest.test("pattern matching on cellChar works", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
32
|
-
t.expect("corner").toBe("corner");
|
|
33
|
-
t.expect("hline").toBe("hline");
|
|
34
|
-
t.expect("vline").toBe("vline");
|
|
35
|
-
t.expect("divider").toBe("divider");
|
|
36
|
-
t.expect("space").toBe("space");
|
|
37
|
-
t.expect("char").toBe("char");
|
|
38
|
-
});
|
|
39
|
-
Vitest.test("extracting content from Char variant", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("hello").toBe("hello"));
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
Vitest.describe("Types - alignment variant", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, () => {
|
|
43
|
-
Vitest.test("Left alignment can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("Left").toBe("Left"));
|
|
44
|
-
Vitest.test("Center alignment can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("Center").toBe("Center"));
|
|
45
|
-
Vitest.test("Right alignment can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("Right").toBe("Right"));
|
|
46
|
-
Vitest.test("alignment variants are distinct", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
47
|
-
t.expect("Left").not.toBe("Center");
|
|
48
|
-
t.expect("Center").not.toBe("Right");
|
|
49
|
-
t.expect("Right").not.toBe("Left");
|
|
50
|
-
});
|
|
51
|
-
Vitest.test("pattern matching on alignment works", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
52
|
-
t.expect("left").toBe("left");
|
|
53
|
-
t.expect("center").toBe("center");
|
|
54
|
-
t.expect("right").toBe("right");
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
Vitest.describe("Types - position record", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, () => {
|
|
59
|
-
Vitest.test("position can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
60
|
-
t.expect(5).toBe(5);
|
|
61
|
-
t.expect(10).toBe(10);
|
|
62
|
-
});
|
|
63
|
-
Vitest.test("position equality", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect({
|
|
64
|
-
row: 5,
|
|
65
|
-
col: 10
|
|
66
|
-
}).toEqual({
|
|
67
|
-
row: 5,
|
|
68
|
-
col: 10
|
|
69
|
-
}));
|
|
70
|
-
Vitest.test("position inequality", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect({
|
|
71
|
-
row: 5,
|
|
72
|
-
col: 10
|
|
73
|
-
}).not.toEqual({
|
|
74
|
-
row: 5,
|
|
75
|
-
col: 11
|
|
76
|
-
}));
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
Vitest.describe("Types - bounds record", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, () => {
|
|
80
|
-
Vitest.test("bounds can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
81
|
-
t.expect(0).toBe(0);
|
|
82
|
-
t.expect(0).toBe(0);
|
|
83
|
-
t.expect(10).toBe(10);
|
|
84
|
-
t.expect(20).toBe(20);
|
|
85
|
-
});
|
|
86
|
-
Vitest.test("bounds equality", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect({
|
|
87
|
-
top: 0,
|
|
88
|
-
left: 0,
|
|
89
|
-
bottom: 10,
|
|
90
|
-
right: 20
|
|
91
|
-
}).toEqual({
|
|
92
|
-
top: 0,
|
|
93
|
-
left: 0,
|
|
94
|
-
bottom: 10,
|
|
95
|
-
right: 20
|
|
96
|
-
}));
|
|
97
|
-
Vitest.test("bounds inequality", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect({
|
|
98
|
-
top: 0,
|
|
99
|
-
left: 0,
|
|
100
|
-
bottom: 10,
|
|
101
|
-
right: 20
|
|
102
|
-
}).not.toEqual({
|
|
103
|
-
top: 0,
|
|
104
|
-
left: 0,
|
|
105
|
-
bottom: 11,
|
|
106
|
-
right: 20
|
|
107
|
-
}));
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
Vitest.describe("Types - element variant", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, () => {
|
|
111
|
-
Vitest.test("Box element can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
112
|
-
let box_0 = "Login";
|
|
113
|
-
let box_1 = {
|
|
114
|
-
top: 0,
|
|
115
|
-
left: 0,
|
|
116
|
-
bottom: 10,
|
|
117
|
-
right: 20
|
|
118
|
-
};
|
|
119
|
-
let box_2 = [];
|
|
120
|
-
let box = {
|
|
121
|
-
TAG: "Box",
|
|
122
|
-
name: box_0,
|
|
123
|
-
bounds: box_1,
|
|
124
|
-
children: box_2
|
|
125
|
-
};
|
|
126
|
-
if (box.TAG === "Box") {
|
|
127
|
-
return t.expect("Login").toBe("Login");
|
|
128
|
-
} else {
|
|
129
|
-
return t.expect(true).toBe(false);
|
|
130
|
-
}
|
|
131
|
-
});
|
|
132
|
-
Vitest.test("Box element with no name", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
133
|
-
let box_1 = {
|
|
134
|
-
top: 0,
|
|
135
|
-
left: 0,
|
|
136
|
-
bottom: 10,
|
|
137
|
-
right: 20
|
|
138
|
-
};
|
|
139
|
-
let box_2 = [];
|
|
140
|
-
let box = {
|
|
141
|
-
TAG: "Box",
|
|
142
|
-
name: undefined,
|
|
143
|
-
bounds: box_1,
|
|
144
|
-
children: box_2
|
|
145
|
-
};
|
|
146
|
-
if (box.TAG === "Box") {
|
|
147
|
-
return t.expect(undefined).toBe(undefined);
|
|
148
|
-
} else {
|
|
149
|
-
return t.expect(true).toBe(false);
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
Vitest.test("Button element can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
153
|
-
let button_2 = {
|
|
154
|
-
row: 5,
|
|
155
|
-
col: 10
|
|
156
|
-
};
|
|
157
|
-
let button_4 = [];
|
|
158
|
-
let button = {
|
|
159
|
-
TAG: "Button",
|
|
160
|
-
id: "submit",
|
|
161
|
-
text: "Submit",
|
|
162
|
-
position: button_2,
|
|
163
|
-
align: "Center",
|
|
164
|
-
actions: button_4
|
|
165
|
-
};
|
|
166
|
-
if (button.TAG !== "Button") {
|
|
167
|
-
return t.expect(true).toBe(false);
|
|
168
|
-
}
|
|
169
|
-
t.expect("submit").toBe("submit");
|
|
170
|
-
t.expect("Submit").toBe("Submit");
|
|
171
|
-
t.expect("Center").toBe("Center");
|
|
172
|
-
});
|
|
173
|
-
Vitest.test("Input element can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
174
|
-
t.expect("email").toBe("email");
|
|
175
|
-
t.expect("Enter email").toBe("Enter email");
|
|
176
|
-
});
|
|
177
|
-
Vitest.test("Link element can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
178
|
-
let link_2 = {
|
|
179
|
-
row: 8,
|
|
180
|
-
col: 15
|
|
181
|
-
};
|
|
182
|
-
let link_4 = [];
|
|
183
|
-
let link = {
|
|
184
|
-
TAG: "Link",
|
|
185
|
-
id: "forgot-password",
|
|
186
|
-
text: "Forgot Password?",
|
|
187
|
-
position: link_2,
|
|
188
|
-
align: "Right",
|
|
189
|
-
actions: link_4
|
|
190
|
-
};
|
|
191
|
-
if (link.TAG !== "Link") {
|
|
192
|
-
return t.expect(true).toBe(false);
|
|
193
|
-
}
|
|
194
|
-
t.expect("forgot-password").toBe("forgot-password");
|
|
195
|
-
t.expect("Forgot Password?").toBe("Forgot Password?");
|
|
196
|
-
t.expect("Right").toBe("Right");
|
|
197
|
-
});
|
|
198
|
-
Vitest.test("Checkbox element can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
199
|
-
t.expect(true).toBe(true);
|
|
200
|
-
t.expect("Remember me").toBe("Remember me");
|
|
201
|
-
});
|
|
202
|
-
Vitest.test("Text element can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
203
|
-
t.expect("Welcome").toBe("Welcome");
|
|
204
|
-
t.expect(false).toBe(false);
|
|
205
|
-
t.expect("Left").toBe("Left");
|
|
206
|
-
});
|
|
207
|
-
Vitest.test("Text element with emphasis", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect(true).toBe(true));
|
|
208
|
-
Vitest.test("Divider element can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
209
|
-
let divider = {
|
|
210
|
-
TAG: "Divider",
|
|
211
|
-
position: {
|
|
212
|
-
row: 5,
|
|
213
|
-
col: 0
|
|
214
|
-
}
|
|
215
|
-
};
|
|
216
|
-
if (divider.TAG === "Divider") {
|
|
217
|
-
return t.expect(divider.position.row).toBe(5);
|
|
218
|
-
} else {
|
|
219
|
-
return t.expect(true).toBe(false);
|
|
220
|
-
}
|
|
221
|
-
});
|
|
222
|
-
Vitest.test("Row element can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
223
|
-
let row_0 = [];
|
|
224
|
-
let row = {
|
|
225
|
-
TAG: "Row",
|
|
226
|
-
children: row_0,
|
|
227
|
-
align: "Center"
|
|
228
|
-
};
|
|
229
|
-
if (row.TAG === "Row") {
|
|
230
|
-
return t.expect("Center").toBe("Center");
|
|
231
|
-
} else {
|
|
232
|
-
return t.expect(true).toBe(false);
|
|
233
|
-
}
|
|
234
|
-
});
|
|
235
|
-
Vitest.test("Section element can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
236
|
-
let section_1 = [];
|
|
237
|
-
let section = {
|
|
238
|
-
TAG: "Section",
|
|
239
|
-
name: "Header",
|
|
240
|
-
children: section_1
|
|
241
|
-
};
|
|
242
|
-
if (section.TAG === "Section") {
|
|
243
|
-
return t.expect("Header").toBe("Header");
|
|
244
|
-
} else {
|
|
245
|
-
return t.expect(true).toBe(false);
|
|
246
|
-
}
|
|
247
|
-
});
|
|
248
|
-
Vitest.test("Box can contain nested elements", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
249
|
-
let button_2 = {
|
|
250
|
-
row: 5,
|
|
251
|
-
col: 10
|
|
252
|
-
};
|
|
253
|
-
let button_4 = [];
|
|
254
|
-
let button = {
|
|
255
|
-
TAG: "Button",
|
|
256
|
-
id: "submit",
|
|
257
|
-
text: "Submit",
|
|
258
|
-
position: button_2,
|
|
259
|
-
align: "Center",
|
|
260
|
-
actions: button_4
|
|
261
|
-
};
|
|
262
|
-
let box_0 = "Form";
|
|
263
|
-
let box_1 = {
|
|
264
|
-
top: 0,
|
|
265
|
-
left: 0,
|
|
266
|
-
bottom: 10,
|
|
267
|
-
right: 20
|
|
268
|
-
};
|
|
269
|
-
let box_2 = [button];
|
|
270
|
-
let box = {
|
|
271
|
-
TAG: "Box",
|
|
272
|
-
name: box_0,
|
|
273
|
-
bounds: box_1,
|
|
274
|
-
children: box_2
|
|
275
|
-
};
|
|
276
|
-
if (box.TAG === "Box") {
|
|
277
|
-
return t.expect(box_2.length).toBe(1);
|
|
278
|
-
} else {
|
|
279
|
-
return t.expect(true).toBe(false);
|
|
280
|
-
}
|
|
281
|
-
});
|
|
282
|
-
Vitest.test("pattern matching on element types", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
283
|
-
let getType = element => {
|
|
284
|
-
switch (element.TAG) {
|
|
285
|
-
case "Box" :
|
|
286
|
-
return "box";
|
|
287
|
-
case "Button" :
|
|
288
|
-
return "button";
|
|
289
|
-
case "Input" :
|
|
290
|
-
return "input";
|
|
291
|
-
case "Link" :
|
|
292
|
-
return "link";
|
|
293
|
-
case "Checkbox" :
|
|
294
|
-
return "checkbox";
|
|
295
|
-
case "Text" :
|
|
296
|
-
return "text";
|
|
297
|
-
case "Divider" :
|
|
298
|
-
return "divider";
|
|
299
|
-
case "Row" :
|
|
300
|
-
return "row";
|
|
301
|
-
case "Section" :
|
|
302
|
-
return "section";
|
|
303
|
-
}
|
|
304
|
-
};
|
|
305
|
-
t.expect(getType({
|
|
306
|
-
TAG: "Box",
|
|
307
|
-
name: undefined,
|
|
308
|
-
bounds: {
|
|
309
|
-
top: 0,
|
|
310
|
-
left: 0,
|
|
311
|
-
bottom: 1,
|
|
312
|
-
right: 1
|
|
313
|
-
},
|
|
314
|
-
children: []
|
|
315
|
-
})).toBe("box");
|
|
316
|
-
t.expect(getType({
|
|
317
|
-
TAG: "Button",
|
|
318
|
-
id: "b",
|
|
319
|
-
text: "B",
|
|
320
|
-
position: {
|
|
321
|
-
row: 0,
|
|
322
|
-
col: 0
|
|
323
|
-
},
|
|
324
|
-
align: "Left",
|
|
325
|
-
actions: []
|
|
326
|
-
})).toBe("button");
|
|
327
|
-
t.expect("input").toBe("input");
|
|
328
|
-
t.expect(getType({
|
|
329
|
-
TAG: "Link",
|
|
330
|
-
id: "l",
|
|
331
|
-
text: "L",
|
|
332
|
-
position: {
|
|
333
|
-
row: 0,
|
|
334
|
-
col: 0
|
|
335
|
-
},
|
|
336
|
-
align: "Left",
|
|
337
|
-
actions: []
|
|
338
|
-
})).toBe("link");
|
|
339
|
-
t.expect("checkbox").toBe("checkbox");
|
|
340
|
-
t.expect("text").toBe("text");
|
|
341
|
-
t.expect("divider").toBe("divider");
|
|
342
|
-
t.expect(getType({
|
|
343
|
-
TAG: "Row",
|
|
344
|
-
children: [],
|
|
345
|
-
align: "Left"
|
|
346
|
-
})).toBe("row");
|
|
347
|
-
t.expect(getType({
|
|
348
|
-
TAG: "Section",
|
|
349
|
-
name: "S",
|
|
350
|
-
children: []
|
|
351
|
-
})).toBe("section");
|
|
352
|
-
});
|
|
353
|
-
});
|
|
354
|
-
|
|
355
|
-
Vitest.describe("Types - scene record", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, () => {
|
|
356
|
-
Vitest.test("scene can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
357
|
-
let scene_elements = [];
|
|
358
|
-
t.expect("login").toBe("login");
|
|
359
|
-
t.expect("Login Page").toBe("Login Page");
|
|
360
|
-
t.expect("fade").toBe("fade");
|
|
361
|
-
t.expect(scene_elements.length).toBe(0);
|
|
362
|
-
});
|
|
363
|
-
Vitest.test("scene can contain elements", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
364
|
-
let button_2 = {
|
|
365
|
-
row: 5,
|
|
366
|
-
col: 10
|
|
367
|
-
};
|
|
368
|
-
let button_4 = [];
|
|
369
|
-
let button = {
|
|
370
|
-
TAG: "Button",
|
|
371
|
-
id: "submit",
|
|
372
|
-
text: "Submit",
|
|
373
|
-
position: button_2,
|
|
374
|
-
align: "Center",
|
|
375
|
-
actions: button_4
|
|
376
|
-
};
|
|
377
|
-
let scene_elements = [button];
|
|
378
|
-
t.expect(scene_elements.length).toBe(1);
|
|
379
|
-
});
|
|
380
|
-
Vitest.test("scene equality", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
381
|
-
let scene1_elements = [];
|
|
382
|
-
let scene1 = {
|
|
383
|
-
id: "login",
|
|
384
|
-
title: "Login",
|
|
385
|
-
transition: "fade",
|
|
386
|
-
device: "Desktop",
|
|
387
|
-
elements: scene1_elements
|
|
388
|
-
};
|
|
389
|
-
let scene2_elements = [];
|
|
390
|
-
let scene2 = {
|
|
391
|
-
id: "login",
|
|
392
|
-
title: "Login",
|
|
393
|
-
transition: "fade",
|
|
394
|
-
device: "Desktop",
|
|
395
|
-
elements: scene2_elements
|
|
396
|
-
};
|
|
397
|
-
t.expect(scene1).toEqual(scene2);
|
|
398
|
-
});
|
|
399
|
-
});
|
|
400
|
-
|
|
401
|
-
Vitest.describe("Types - ast record", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, () => {
|
|
402
|
-
Vitest.test("ast can be created with empty scenes", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
403
|
-
let ast = {
|
|
404
|
-
scenes: []
|
|
405
|
-
};
|
|
406
|
-
t.expect(ast.scenes.length).toBe(0);
|
|
407
|
-
});
|
|
408
|
-
Vitest.test("ast can contain multiple scenes", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
409
|
-
let scene1_elements = [];
|
|
410
|
-
let scene1 = {
|
|
411
|
-
id: "login",
|
|
412
|
-
title: "Login",
|
|
413
|
-
transition: "fade",
|
|
414
|
-
device: "Desktop",
|
|
415
|
-
elements: scene1_elements
|
|
416
|
-
};
|
|
417
|
-
let scene2_elements = [];
|
|
418
|
-
let scene2 = {
|
|
419
|
-
id: "home",
|
|
420
|
-
title: "Home",
|
|
421
|
-
transition: "slide",
|
|
422
|
-
device: "Desktop",
|
|
423
|
-
elements: scene2_elements
|
|
424
|
-
};
|
|
425
|
-
let ast = {
|
|
426
|
-
scenes: [
|
|
427
|
-
scene1,
|
|
428
|
-
scene2
|
|
429
|
-
]
|
|
430
|
-
};
|
|
431
|
-
t.expect(ast.scenes.length).toBe(2);
|
|
432
|
-
});
|
|
433
|
-
Vitest.test("ast scenes maintain order", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
434
|
-
let scene1_elements = [];
|
|
435
|
-
let scene1 = {
|
|
436
|
-
id: "login",
|
|
437
|
-
title: "Login",
|
|
438
|
-
transition: "fade",
|
|
439
|
-
device: "Desktop",
|
|
440
|
-
elements: scene1_elements
|
|
441
|
-
};
|
|
442
|
-
let scene2_elements = [];
|
|
443
|
-
let scene2 = {
|
|
444
|
-
id: "home",
|
|
445
|
-
title: "Home",
|
|
446
|
-
transition: "slide",
|
|
447
|
-
device: "Desktop",
|
|
448
|
-
elements: scene2_elements
|
|
449
|
-
};
|
|
450
|
-
let ast = {
|
|
451
|
-
scenes: [
|
|
452
|
-
scene1,
|
|
453
|
-
scene2
|
|
454
|
-
]
|
|
455
|
-
};
|
|
456
|
-
t.expect(ast.scenes[0].id).toBe("login");
|
|
457
|
-
t.expect(ast.scenes[1].id).toBe("home");
|
|
458
|
-
});
|
|
459
|
-
});
|
|
460
|
-
|
|
461
|
-
Vitest.describe("Types - interactionVariant", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, () => {
|
|
462
|
-
Vitest.test("Primary variant can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("Primary").toBe("Primary"));
|
|
463
|
-
Vitest.test("Secondary variant can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("Secondary").toBe("Secondary"));
|
|
464
|
-
Vitest.test("Ghost variant can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("Ghost").toBe("Ghost"));
|
|
465
|
-
Vitest.test("pattern matching on interactionVariant", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
466
|
-
t.expect("primary").toBe("primary");
|
|
467
|
-
t.expect("secondary").toBe("secondary");
|
|
468
|
-
t.expect("ghost").toBe("ghost");
|
|
469
|
-
});
|
|
470
|
-
});
|
|
471
|
-
|
|
472
|
-
Vitest.describe("Types - interactionAction", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, () => {
|
|
473
|
-
Vitest.test("Goto action can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
474
|
-
t.expect("home").toBe("home");
|
|
475
|
-
t.expect("fade").toBe("fade");
|
|
476
|
-
t.expect("isValid").toBe("isValid");
|
|
477
|
-
});
|
|
478
|
-
Vitest.test("Back action can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("Back").toBe("Back"));
|
|
479
|
-
Vitest.test("Forward action can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => t.expect("Forward").toBe("Forward"));
|
|
480
|
-
Vitest.test("Validate action can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
481
|
-
let action = {
|
|
482
|
-
TAG: "Validate",
|
|
483
|
-
fields: [
|
|
484
|
-
"email",
|
|
485
|
-
"password"
|
|
486
|
-
]
|
|
487
|
-
};
|
|
488
|
-
if (typeof action !== "object") {
|
|
489
|
-
return t.expect(true).toBe(false);
|
|
490
|
-
}
|
|
491
|
-
if (action.TAG !== "Validate") {
|
|
492
|
-
return t.expect(true).toBe(false);
|
|
493
|
-
}
|
|
494
|
-
let fields = action.fields;
|
|
495
|
-
t.expect(fields.length).toBe(2);
|
|
496
|
-
t.expect(fields[0]).toBe("email");
|
|
497
|
-
t.expect(fields[1]).toBe("password");
|
|
498
|
-
});
|
|
499
|
-
Vitest.test("Call action can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
500
|
-
let action_1 = [
|
|
501
|
-
"arg1",
|
|
502
|
-
"arg2"
|
|
503
|
-
];
|
|
504
|
-
let action = {
|
|
505
|
-
TAG: "Call",
|
|
506
|
-
function: "handleSubmit",
|
|
507
|
-
args: action_1,
|
|
508
|
-
condition: undefined
|
|
509
|
-
};
|
|
510
|
-
if (typeof action !== "object") {
|
|
511
|
-
return t.expect(true).toBe(false);
|
|
512
|
-
}
|
|
513
|
-
if (action.TAG !== "Call") {
|
|
514
|
-
return t.expect(true).toBe(false);
|
|
515
|
-
}
|
|
516
|
-
t.expect("handleSubmit").toBe("handleSubmit");
|
|
517
|
-
t.expect(action_1.length).toBe(2);
|
|
518
|
-
t.expect(undefined).toBe(undefined);
|
|
519
|
-
});
|
|
520
|
-
Vitest.test("pattern matching on interactionAction", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
521
|
-
let getType = action => {
|
|
522
|
-
if (typeof action !== "object") {
|
|
523
|
-
if (action === "Back") {
|
|
524
|
-
return "back";
|
|
525
|
-
} else {
|
|
526
|
-
return "forward";
|
|
527
|
-
}
|
|
528
|
-
}
|
|
529
|
-
switch (action.TAG) {
|
|
530
|
-
case "Goto" :
|
|
531
|
-
return "goto";
|
|
532
|
-
case "Validate" :
|
|
533
|
-
return "validate";
|
|
534
|
-
case "Call" :
|
|
535
|
-
return "call";
|
|
536
|
-
}
|
|
537
|
-
};
|
|
538
|
-
t.expect("goto").toBe("goto");
|
|
539
|
-
t.expect("back").toBe("back");
|
|
540
|
-
t.expect("forward").toBe("forward");
|
|
541
|
-
t.expect(getType({
|
|
542
|
-
TAG: "Validate",
|
|
543
|
-
fields: []
|
|
544
|
-
})).toBe("validate");
|
|
545
|
-
t.expect(getType({
|
|
546
|
-
TAG: "Call",
|
|
547
|
-
function: "f",
|
|
548
|
-
args: [],
|
|
549
|
-
condition: undefined
|
|
550
|
-
})).toBe("call");
|
|
551
|
-
});
|
|
552
|
-
});
|
|
553
|
-
|
|
554
|
-
Vitest.describe("Types - interaction record", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, () => {
|
|
555
|
-
Vitest.test("interaction can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
556
|
-
let props = {};
|
|
557
|
-
props["variant"] = "primary";
|
|
558
|
-
let interaction_actions = ["Back"];
|
|
559
|
-
t.expect("submit-button").toBe("submit-button");
|
|
560
|
-
t.expect(interaction_actions.length).toBe(1);
|
|
561
|
-
});
|
|
562
|
-
Vitest.test("interaction with multiple actions", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
563
|
-
let interaction_properties = {};
|
|
564
|
-
let interaction_actions = [
|
|
565
|
-
{
|
|
566
|
-
TAG: "Validate",
|
|
567
|
-
fields: [
|
|
568
|
-
"email",
|
|
569
|
-
"password"
|
|
570
|
-
]
|
|
571
|
-
},
|
|
572
|
-
{
|
|
573
|
-
TAG: "Goto",
|
|
574
|
-
target: "home",
|
|
575
|
-
transition: "fade",
|
|
576
|
-
condition: undefined
|
|
577
|
-
}
|
|
578
|
-
];
|
|
579
|
-
t.expect(interaction_actions.length).toBe(2);
|
|
580
|
-
});
|
|
581
|
-
});
|
|
582
|
-
|
|
583
|
-
Vitest.describe("Types - sceneInteractions record", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, () => {
|
|
584
|
-
Vitest.test("sceneInteractions can be created", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
585
|
-
let sceneInteractions_interactions = [];
|
|
586
|
-
t.expect("login").toBe("login");
|
|
587
|
-
t.expect(sceneInteractions_interactions.length).toBe(0);
|
|
588
|
-
});
|
|
589
|
-
Vitest.test("sceneInteractions can contain multiple interactions", undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, t => {
|
|
590
|
-
let interaction1_properties = {};
|
|
591
|
-
let interaction1_actions = [];
|
|
592
|
-
let interaction1 = {
|
|
593
|
-
elementId: "email",
|
|
594
|
-
properties: interaction1_properties,
|
|
595
|
-
actions: interaction1_actions
|
|
596
|
-
};
|
|
597
|
-
let interaction2_properties = {};
|
|
598
|
-
let interaction2_actions = [];
|
|
599
|
-
let interaction2 = {
|
|
600
|
-
elementId: "password",
|
|
601
|
-
properties: interaction2_properties,
|
|
602
|
-
actions: interaction2_actions
|
|
603
|
-
};
|
|
604
|
-
let sceneInteractions_interactions = [
|
|
605
|
-
interaction1,
|
|
606
|
-
interaction2
|
|
607
|
-
];
|
|
608
|
-
t.expect(sceneInteractions_interactions.length).toBe(2);
|
|
609
|
-
t.expect(sceneInteractions_interactions[0].elementId).toBe("email");
|
|
610
|
-
t.expect(sceneInteractions_interactions[1].elementId).toBe("password");
|
|
611
|
-
});
|
|
612
|
-
});
|
|
613
|
-
|
|
614
|
-
/* Not a pure module */
|