-
Notifications
You must be signed in to change notification settings - Fork 21
/
nominated states.spec.ts
131 lines (77 loc) · 2.42 KB
/
nominated states.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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
import * as jssm from '../jssm';
const sm = jssm.sm,
jp = jssm.parse;
describe('simple naming', () => {
describe('parse', () => {
test('trans then node', () =>
expect(() => {
jp('a -> b; state a: { color: orange; };');
}).not.toThrow() );
test('node then trans', () =>
expect(() => {
jp('state a: { color: orange; }; a -> b;');
}).not.toThrow() );
test('cycle node named', () =>
expect(() => {
jp('[a b] -> +1; state a: { color: red; }; &b: [a c e];');
}).not.toThrow() );
test('two properties', () =>
expect(() => {
jp('a -> b; state a: { color: orange; shape: circle; };');
}).not.toThrow() );
});
describe('sm tag', () => {
test('trans then node', () =>
expect(() => {
sm`a -> b; state a: { color: orange; };`;
}).not.toThrow() );
test('node then trans', () =>
expect(() => {
sm`state a: { color: orange; }; a -> b;`;
}).not.toThrow() );
// test('cycle node named', () =>
// expect(() => {
// sm`[a b] -> +1; state a: { color: red; }; &b: [a c e];`;
// }).not.toThrow() );
test('two properties', () =>
expect(() => {
sm`a -> b; state a: { color: orange; shape: circle; };`;
}).not.toThrow() );
});
});
describe('spacing variants', () => {
test('tight', () =>
expect(() => {
jp('a -> b; state a:{color:orange;};');
}).not.toThrow() );
test('framed', () =>
expect(() => {
jp('a -> b; state a:{ color:orange; };');
}).not.toThrow() );
test('sentence', () =>
expect(() => {
jp('a -> b; state a:{ color: orange; };');
}).not.toThrow() );
test('fully', () =>
expect(() => {
jp('a -> b; state a:{ color : orange; };');
}).not.toThrow() );
test('mars', () =>
expect(() => {
jp('a -> b; state a:{color : orange;};');
}).not.toThrow() );
});
describe('properties', () => {
test('color', () =>
expect(
sm`a -> b; state a:{color:orange;};`.raw_state_declarations()[0]
).toEqual(
{state:'a', color:'#ffa500ff', declarations:[{key: "color", value: "#ffa500ff"}]}
)
);
});
test.todo('More to do in nominated states');
// TODO FIXME TESTME test state_delarations/0
// TODO FIXME TESTME test state_delaration/1 for has
// TODO FIXME TESTME test state_delaration/1 for doesn't have
// TODO FIXME TESTME test that redeclaring a state throws