jssm 5.45.0 → 5.47.0

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.
Files changed (82) hide show
  1. package/dist/es6/jssm.d.ts +3 -1
  2. package/dist/es6/jssm.js +13 -6
  3. package/dist/es6/jssm_types.d.ts +6 -5
  4. package/dist/es6/version.js +1 -1
  5. package/dist/jssm.es5.cjs.js +1 -1
  6. package/jssm.d.ts +3 -1
  7. package/jssm_types.d.ts +6 -5
  8. package/package.json +2 -3
  9. package/.codeclimate.yml +0 -22
  10. package/.editorconfig +0 -12
  11. package/.eslintrc +0 -20
  12. package/.nycrc +0 -6
  13. package/.travis.yml +0 -9
  14. package/dist/jssm.es5.iife.js +0 -1
  15. package/jest-spec.config.js +0 -27
  16. package/jest-stoch.config.js +0 -27
  17. package/rollup.config.iife.js +0 -44
  18. package/rollup.config.js +0 -44
  19. package/src/demo/index.html +0 -38
  20. package/src/demo/style.css +0 -2
  21. package/src/ts/jssm-dot.peg +0 -928
  22. package/src/ts/jssm.ts +0 -1239
  23. package/src/ts/jssm_types.ts +0 -385
  24. package/src/ts/jssm_util.ts +0 -117
  25. package/src/ts/tests/actions.spec.ts +0 -167
  26. package/src/ts/tests/arrange.spec.ts +0 -72
  27. package/src/ts/tests/arrange.stoch.ts +0 -4
  28. package/src/ts/tests/array_box_if_string.spec.ts +0 -30
  29. package/src/ts/tests/array_transitions.spec.ts +0 -129
  30. package/src/ts/tests/arrow unicode.spec.ts +0 -88
  31. package/src/ts/tests/arrow.spec.ts +0 -124
  32. package/src/ts/tests/colors.spec.ts +0 -58
  33. package/src/ts/tests/comment.spec.ts +0 -134
  34. package/src/ts/tests/compile.spec.ts +0 -79
  35. package/src/ts/tests/constants.spec.ts +0 -98
  36. package/src/ts/tests/cycles.spec.ts +0 -153
  37. package/src/ts/tests/dot_preamble.spec.ts +0 -16
  38. package/src/ts/tests/embedded_sm.spec.ts +0 -36
  39. package/src/ts/tests/flow.spec.ts +0 -22
  40. package/src/ts/tests/forced transitions.spec.ts +0 -26
  41. package/src/ts/tests/general.spec.ts +0 -933
  42. package/src/ts/tests/graph node lists.spec.ts +0 -21
  43. package/src/ts/tests/histo.spec.ts +0 -24
  44. package/src/ts/tests/hooks.spec.ts +0 -209
  45. package/src/ts/tests/language.spec.ts +0 -37
  46. package/src/ts/tests/language_data/belarussian.json +0 -14
  47. package/src/ts/tests/language_data/bengali.json +0 -16
  48. package/src/ts/tests/language_data/emoji.json +0 -22
  49. package/src/ts/tests/language_data/english.json +0 -17
  50. package/src/ts/tests/language_data/french.json +0 -17
  51. package/src/ts/tests/language_data/german.json +0 -17
  52. package/src/ts/tests/language_data/hebrew.json +0 -16
  53. package/src/ts/tests/language_data/portuguese.json +0 -13
  54. package/src/ts/tests/language_data/russian.json +0 -13
  55. package/src/ts/tests/language_data/spanish.json +0 -17
  56. package/src/ts/tests/language_data/ukrainian.json +0 -19
  57. package/src/ts/tests/layout.spec.ts +0 -29
  58. package/src/ts/tests/machine_attributes.spec.ts +0 -398
  59. package/src/ts/tests/machine_name.spec.ts +0 -14
  60. package/src/ts/tests/named lists.spec.ts +0 -24
  61. package/src/ts/tests/nominated states.spec.ts +0 -133
  62. package/src/ts/tests/parse actions.spec.ts +0 -32
  63. package/src/ts/tests/parse.spec.ts +0 -94
  64. package/src/ts/tests/probability.spec.ts +0 -146
  65. package/src/ts/tests/r639.spec.ts +0 -27
  66. package/src/ts/tests/sample_select.spec.ts +0 -173
  67. package/src/ts/tests/seq.spec.ts +0 -14
  68. package/src/ts/tests/seq.stoch.ts +0 -83
  69. package/src/ts/tests/shapes.spec.ts +0 -63
  70. package/src/ts/tests/sm_tag.spec.ts +0 -37
  71. package/src/ts/tests/special characters.spec.ts +0 -39
  72. package/src/ts/tests/state_declaration.spec.ts +0 -214
  73. package/src/ts/tests/state_style.spec.ts +0 -82
  74. package/src/ts/tests/stop light.spec.ts +0 -157
  75. package/src/ts/tests/stripes.spec.ts +0 -52
  76. package/src/ts/tests/theme.spec.ts +0 -45
  77. package/src/ts/tests/weighted_histo_key.spec.ts +0 -22
  78. package/src/ts/tests/weighted_rand_select.spec.ts +0 -27
  79. package/src/ts/tests/weighted_sample_select.spec.ts +0 -24
  80. package/src/ts/version.ts +0 -3
  81. package/tree.txt +0 -1794
  82. package/tsconfig.json +0 -27
@@ -1,21 +0,0 @@
1
-
2
- /* eslint-disable max-len */
3
-
4
- import { sm } from '../jssm';
5
-
6
-
7
-
8
-
9
-
10
- describe('graph node lists', () => {
11
-
12
- test('start states don\'t throw', () => expect( () => { const _a = sm`start_states: [a b c]; a->b->c->d;`; }).not.toThrow() );
13
- test('end states don\'t throw', () => expect( () => { const _a = sm`end_states: [a b c]; a->b->c->d;`; }).not.toThrow() );
14
-
15
- test.todo('start node overrides');
16
-
17
- // comeback whargarbl
18
- // const overrider = make(` a->b->c; start_nodes: [c]; `);
19
- // it('start nodes override initial node', t => t.is(0, () => {}) );
20
-
21
- });
@@ -1,24 +0,0 @@
1
-
2
- import * as jssm from '../jssm';
3
-
4
-
5
-
6
-
7
-
8
- describe('histograph/1', () => {
9
-
10
- test('([]) generates Map()', () =>
11
- expect( jssm.histograph([]) ).toEqual( new Map( ) ) );
12
-
13
- test('([1]) generates Map([[1,1]])', () =>
14
- expect( jssm.histograph([1]) ).toEqual( new Map( [[1,1]] ) ) );
15
-
16
- test('([1,2]) generates Map([[1,1],[2,1]])', () =>
17
- expect( jssm.histograph([1,2]) ).toEqual( new Map( [[1,1],[2,1]] ) ) );
18
-
19
- test('([1,1,2]) generates Map([[1,2],[2,1]])', () =>
20
- expect( jssm.histograph([1,1,2]) ).toEqual( new Map( [[1,2],[2,1]] ) ) );
21
-
22
- });
23
-
24
- // stochable
@@ -1,209 +0,0 @@
1
-
2
- import { sm } from '../jssm';
3
-
4
-
5
-
6
-
7
-
8
- describe('Hooks open and closed in grammar', () => {
9
-
10
- test.todo('Hooks open doesn\'t throw' /*, () => {
11
-
12
- expect( () => { const _foo = sm`hooks: open; a -> b;`; })
13
- .not.toThrow();
14
-
15
- } */);
16
-
17
- test.todo('Hooks closed doesn\'t throw' /*, () => {
18
-
19
- expect( () => { const _foo = sm`hooks: closed; a -> b;`; })
20
- .not.toThrow();
21
-
22
- } */);
23
-
24
- });
25
-
26
-
27
-
28
-
29
-
30
- describe('Basic hooks on API callpoint', () => {
31
-
32
-
33
- test('Setting a regular hook doesn\'t throw', () => {
34
-
35
- expect( () => {
36
- const _foo = sm`a -> b;`;
37
- _foo.set_hook({ from: 'a', to: 'b', handler: () => console.log('hi'), kind: 'hook' })
38
- })
39
- .not.toThrow();
40
-
41
- } );
42
-
43
-
44
- test('Setting a named hook doesn\'t throw', () => {
45
-
46
- expect( () => {
47
- const _foo = sm`a 'foo' -> b;`;
48
- _foo.set_hook({ from: 'a', to: 'b', handler: () => console.log('hi'), kind: 'named', action: 'foo' })
49
- })
50
- .not.toThrow();
51
-
52
- } );
53
-
54
-
55
- test('Setting a kind of hook that doesn\'t exist throws', () => {
56
-
57
- expect( () => {
58
- const _foo = sm`a 'foo' -> b;`;
59
- _foo.set_hook({ from: 'a', to: 'b', handler: () => console.log('hi'), kind: 'Smaug the Merciless', action: 'foo' } as any)
60
- })
61
- .toThrow();
62
-
63
- } );
64
-
65
- });
66
-
67
-
68
-
69
-
70
-
71
- test('Basic hook rejection works', () => {
72
-
73
- const foo = sm`a => b;`;
74
-
75
- foo.set_hook({ from: 'a', to: 'b', kind: 'hook', handler: () => false });
76
- expect(foo.transition('b')).toBe(false);
77
- expect(foo.state()).toBe('a');
78
-
79
- foo.set_hook({ from: 'a', to: 'b', kind: 'hook', handler: () => true });
80
- expect(foo.transition('b')).toBe(true);
81
- expect(foo.state()).toBe('b');
82
-
83
- });
84
-
85
-
86
-
87
-
88
-
89
- test('Basic hook rejection works on forced edges', () => {
90
-
91
- const foo = sm`a ~> b ~> c;`;
92
-
93
- foo.set_hook({ from: 'a', to: 'b', kind: 'hook', handler: () => false });
94
- expect(foo.force_transition('b')).toBe(false);
95
- expect(foo.state()).toBe('a');
96
-
97
- foo.set_hook({ from: 'a', to: 'b', kind: 'hook', handler: () => true });
98
- expect(foo.force_transition('b')).toBe(true);
99
- expect(foo.state()).toBe('b');
100
-
101
- // line completion for when a hook lookup finds nothing
102
- expect(foo.force_transition('c')).toBe(true);
103
- expect(foo.state()).toBe('c');
104
-
105
- });
106
-
107
-
108
-
109
-
110
-
111
- test('Named hook rejection works', () => {
112
-
113
- const foo = sm`a 'foo' => b;`;
114
-
115
- foo.set_hook({ from: 'a', to: 'b', action: 'foo', kind: 'named', handler: () => false });
116
- expect(foo.action('foo')).toBe(false);
117
- expect(foo.state()).toBe('a');
118
-
119
- foo.set_hook({ from: 'a', to: 'b', action: 'foo', kind: 'named', handler: () => true });
120
- expect(foo.action('foo')).toBe(true);
121
- expect(foo.state()).toBe('b');
122
-
123
- });
124
-
125
-
126
-
127
-
128
-
129
- test('Named hook rejection doesn\'t block transitions', () => {
130
-
131
- const foo = sm`a 'foo' => b;`;
132
-
133
- foo.set_hook({ from: 'a', to: 'b', action: 'foo', kind: 'named', handler: () => false });
134
- expect(foo.action('foo')).toBe(false);
135
- expect(foo.state()).toBe('a');
136
-
137
- expect(foo.transition('b')).toBe(true);
138
- expect(foo.state()).toBe('b');
139
-
140
- });
141
-
142
-
143
-
144
-
145
-
146
- describe('Basic hooks on API callpoint', () => {
147
-
148
- test('Basic hooks call their handler', () => {
149
-
150
- const handler = jest.fn(x => true),
151
- uncalled = jest.fn(x => true);
152
-
153
- expect( () => {
154
- const _foo = sm`a -> b -> c;`;
155
- _foo.set_hook({ from: 'a', to: 'b', handler, kind: 'hook' });
156
- _foo.set_hook({ from: 'b', to: 'a', handler: uncalled, kind: 'hook' });
157
- _foo.set_hook({ from: 'b', to: 'c', handler: uncalled, kind: 'hook' });
158
- _foo.transition('b');
159
- })
160
- .not.toThrow();
161
-
162
- // should hook from first, but not from second
163
- expect(handler.mock.calls.length).toBe(1);
164
- expect(uncalled.mock.calls.length).toBe(0);
165
-
166
- } );
167
-
168
- test('Named hooks call their handler', () => {
169
-
170
- const handler = jest.fn(x => true),
171
- uncalled = jest.fn(x => true);
172
-
173
- expect( () => {
174
- const _foo = sm`a 'next' -> b 'next' -> c;`;
175
- _foo.set_hook({ from: 'a', to: 'b', handler, kind: 'named', action: 'next' });
176
- _foo.set_hook({ from: 'a', to: 'b', handler: uncalled, kind: 'named', action: 'borg' });
177
- _foo.set_hook({ from: 'b', to: 'a', handler: uncalled, kind: 'named', action: 'next' });
178
- _foo.action('next');
179
- _foo.action('next');
180
- })
181
- .not.toThrow();
182
-
183
- // should hook from first, but not from second
184
- expect(handler.mock.calls.length).toBe(1);
185
- expect(uncalled.mock.calls.length).toBe(0);
186
-
187
- } );
188
-
189
- test('Forced hooks call their handler', () => {
190
-
191
- const handler = jest.fn(x => true),
192
- uncalled = jest.fn(x => true);
193
-
194
- expect( () => {
195
- const _foo = sm`a ~> b ~> c;`;
196
- _foo.set_hook({ from: 'a', to: 'b', handler, kind: 'hook' });
197
- _foo.set_hook({ from: 'b', to: 'a', handler: uncalled, kind: 'hook' });
198
- _foo.set_hook({ from: 'b', to: 'c', handler: uncalled, kind: 'hook' });
199
- _foo.force_transition('b');
200
- })
201
- .not.toThrow();
202
-
203
- // should hook from first, but not from second
204
- expect(handler.mock.calls.length).toBe(1);
205
- expect(uncalled.mock.calls.length).toBe(0);
206
-
207
- } );
208
-
209
- });
@@ -1,37 +0,0 @@
1
-
2
- /* eslint-disable max-len */
3
-
4
- import { sm } from '../jssm';
5
-
6
- const glob = require('glob'),
7
-
8
- language_files = glob.sync('./src/ts/tests/language_data/*.json', {}) // for some reason glob is project-relative
9
- .map(rel => rel.replace('/src/ts/tests', '')); // instead of execution relative like i'd expect
10
-
11
-
12
-
13
-
14
-
15
- describe('base data walk/1', () => {
16
-
17
- language_files.map( (language_file, i) => {
18
-
19
- const testData = require(language_file),
20
- testTokens = testData.cases;
21
-
22
- const foreignTarget = sm`${testData.native_name} -> ${testData.english_name} -> ${testTokens.join(' -> ')};`;
23
-
24
- describe(`language ${i} "${testData.english_name}" contains all states`, () => {
25
-
26
- testTokens.map(tok =>
27
- test(tok, () =>
28
- expect( foreignTarget.states().includes(tok) ).toBe(true)
29
- )
30
- );
31
-
32
- });
33
-
34
- });
35
-
36
-
37
- });
@@ -1,14 +0,0 @@
1
- {
2
-
3
- "native_name" : "Беларускі",
4
- "english_name" : "Belorussian",
5
-
6
-
7
- "cases" : [
8
- "all_letters_абвгґдеёжзійклмнопрстуўфхцчшыьэюяАБВГҐДЕЁЖЗІЙКЛМНОПРСТУЎФХЦЧШІЬЄЮЯ",
9
- "all_digits_0123456789",
10
- "accents_’",
11
- "common_symbols_!»№,.?+=_*#"
12
- ]
13
-
14
- }
@@ -1,16 +0,0 @@
1
- {
2
-
3
- "native_name" : "বাংলা",
4
- "english_name" : "Bengali",
5
-
6
- "cases" : [
7
- "সংখ্যা_১০_দিয়ে_শেষ_হয়",
8
- "মাঝখানে_সংখ্যা_১০",
9
- "সংখ্যা_১০_দিয়ে_শুরু_হয়",
10
-
11
- "সব_বর্ণমালা_অআইঈউঊঋঌএঐওঔকখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহড়ঢ়য়ৎংঁ",
12
- "উচ্চারণ_ািীুূৃৄেৈোৌ্",
13
- "সাধারণ_চিহ্ন_।!@#$^&*()?.,=+#"
14
- ]
15
-
16
- }
@@ -1,22 +0,0 @@
1
- {
2
-
3
- "native_name" : "😜",
4
- "english_name" : "Emoji",
5
-
6
- "cases" : [
7
-
8
- "😂_ends_with_number_10",
9
- "🙄middle_10_number",
10
- "10_starts_with_number😰",
11
-
12
- "all_basic_faces_😀😃😄😁😆😅😂🤣😊😇🙂🙃😉😌😍😘😗😙😚😋😜😝😛🤑🤗🤓😎🤡🤠😏😒😞😔😟😕🙁☹️😣😖😫😩😤😠😡😶😐😑😯😦😧😮😲😵😳😱😨😰😢😥🤤😭😓😪😴🙄🤔🤥😬🤐🤢🤧😷🤒🤕",
13
- "all_extras_😈👿👹👺💩👻💀☠️👽👾🤖🎃😺😸😹😻😼😽🙀😿😾👐🙌👏🙏🤝👍👎👊✊🤛🤜🤞✌️🤘👌👈👉👆👇☝️✋🤚🖐🖖👋🤙💪🖕✍️🤳💅🖖💄💋👄👅👂👃👣👁👀🗣👤👥👶👦👧👨👩👱‍👱👴👵👲👳‍♀️👳👮‍♀️👮👷‍♀️👷💂‍♀️💂🕵️‍♀️🕵️👩‍⚕️👨‍⚕️👩‍🌾👨‍🌾👩‍🍳👨‍🍳👩‍🎓👨‍🎓👩‍🎤👨‍🎤👩‍🏫👨‍🏫👩‍🏭👨‍🏭👩‍💻👨‍💻👩‍💼👨‍💼👩‍🔧👨‍🔧👩‍🔬👨‍🔬👩‍🎨👨‍🎨👩‍🚒👨‍🚒👩‍✈️👨‍✈️👩‍🚀👨‍🚀👩‍⚖️👨‍⚖️🤶🎅👸🤴👰🤵👼🤰🙇‍♀️🙇💁💁‍♂️🙅🙅‍♂️🙆🙆‍♂️🙋🙋‍♂️🤦‍♀️🤦‍♂️🤷‍♀️🤷‍♂️🙎🙎‍♂️🙍🙍‍♂️💇💇‍♂️💆💆‍♂️🕴💃🕺👯👯‍♂️🚶‍♀️🚶🏃‍♀️🏃👫👭👬💑👩‍❤️‍👩👨‍❤️‍👨💏👩‍❤️‍💋‍👩👨‍❤️‍💋‍👨👪",
14
- "groups_👨‍👩‍👧👨‍👩‍👧‍👦👨‍👩‍👦‍👦👨‍👩‍👧‍👧👩‍👩‍👦👩‍👩‍👧👩‍👩‍👧‍👦👩‍👩‍👦‍👦👩‍👩‍👧‍👧👨‍👨‍👦👨‍👨‍👧👨‍👨‍👧‍👦👨‍👨‍👦‍👦👨‍👨‍👧‍👧👩‍👦👩‍👧👩‍👧‍👦👩‍👦‍👦👩‍👧‍👧👨‍👦👨‍👧👨‍👧‍👦👨‍👦‍👦👨‍👧‍👧",
15
- "misc_👚👕👖👔👗👙👘👠👡👢👞👟👒🎩🎓👑⛑🎒👝👛👜💼👓🕶🌂",
16
- "animals_🐶🐱🐭🐹🐰🦊🐻🐼🐨🐯🦁🐮🐷🐽🐸🐵🙊🙉🙊🐒🐔🐧🐦🐤🐣🐥🦆🦅🦉🦇🐺🐗🐴🦄🐝🐛🦋🐌🐚🐞🐜🕷🕸🐢🐍🦎🦂🦀🦑🐙🦐🐠🐟🐡🐬🦈🐳🐋🐊🐆🐅🐃🐂🐄🦌🐪🐫🐘🦏🦍🐎🐖🐐🐏🐑🐕🐩🐈🐓🦃🕊🐇🐁🐀🐿🐾🐉🐲",
17
- "plants_🌵🎄🌲🌳🌴🌱🌿☘️🍀🎍🎋🍃🍂🍁🍄🌾💐🌷🌹🥀🌻🌼🌸🌺",
18
- "planets_and_weather_🌎🌍🌏🌕🌖🌗🌘🌑🌒🌓🌔🌚🌝🌞🌛🌜🌙💫⭐️🌟✨⚡️🔥💥☄️☀️🌤⛅️🌥🌦🌈☁️🌧⛈🌩🌨☃️⛄️❄️🌬💨🌪🌫🌊💧💦☔"
19
-
20
- ]
21
-
22
- }
@@ -1,17 +0,0 @@
1
- {
2
-
3
- "native_name" : "English",
4
- "english_name" : "English",
5
-
6
- "cases" : [
7
- "ends_with_number_10",
8
- "middle_10_number",
9
- "10_starts_with_number",
10
-
11
- "all_letters_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
12
- "all_digits_0123456789",
13
- "accents_éÉëïöËÏÖæÆœŒß",
14
- "common_symbols_!@#$^&*()?.,=+#"
15
- ]
16
-
17
- }
@@ -1,17 +0,0 @@
1
- {
2
-
3
- "native_name" : "Français",
4
- "english_name" : "French",
5
-
6
- "cases" : [
7
- "termine_par_un_nombre_10",
8
- "nombre_10_milieu",
9
- "10_commence_par_un_nombre",
10
-
11
- "toutes_les_lettres_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
12
- "tous_les_chiffres_0123456789",
13
- "accents_àâäçéèêëîïôöùûüÿÀÂÄÇÉÈÊËÎÏÔÖÙÛÜŸ",
14
- "symboles_communs_!@#$^&*()?.,=+#"
15
- ]
16
-
17
- }
@@ -1,17 +0,0 @@
1
- {
2
-
3
- "native_name" : "Deutsch",
4
- "english_name" : "German",
5
-
6
- "cases" : [
7
- "endet_mit_nummer_10",
8
- "mittlere_10_nummer",
9
- "10_beginnt_mit_die_nummer",
10
-
11
- "all_letters_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
12
- "all_digits_0123456789",
13
- "accents_ÄäÖöÜüëïẞßſ",
14
- "common_symbols_!@#$€^&*()?.,=+#„“‚‘«»‹›§"
15
- ]
16
-
17
- }
@@ -1,16 +0,0 @@
1
- {
2
-
3
- "native_name" : "עברית",
4
- "english_name" : "English",
5
-
6
- "cases" : [
7
- "נגמר_במספר_10",
8
- "אמצע_10_מספר",
9
- "10_מתחיל_במספר",
10
-
11
- "all_letters_אבגדהוזחטיכךלמםנןסעפףצץקרשת",
12
- "all_digits_0123456789",
13
- "common_symbols_!@#$^&*()?.,=+#"
14
- ]
15
-
16
- }
@@ -1,13 +0,0 @@
1
- {
2
-
3
- "native_name" : "Português",
4
- "english_name" : "Portuguese",
5
-
6
- "cases" : [
7
- "all_letters_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
8
- "all_digits_0123456789",
9
- "accents_éÉëïöËÏÖæÆœŒßçÇáàãâéêíìôõóú",
10
- "common_symbols_!@#$^&*?.,=+#"
11
- ]
12
-
13
- }
@@ -1,13 +0,0 @@
1
- {
2
-
3
- "native_name" : "Русский",
4
- "english_name" : "Russian",
5
-
6
-
7
- "cases" : [
8
- "all_letters_абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ",
9
- "all_digits_0123456789",
10
- "common_symbols_!«»№,.?+=_*#"
11
- ]
12
-
13
- }
@@ -1,17 +0,0 @@
1
- {
2
-
3
- "native_name" : "Español",
4
- "english_name" : "Spanish",
5
-
6
- "cases" : [
7
- "termina_con_número_10",
8
- "medio_10_número",
9
- "10_empieza_con_número",
10
-
11
- "todas_las_letras_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
12
- "todos_los_dígitos_0123456789",
13
- "acentos_ñáéíóúÑÁÉÍÓÚ",
14
- "símbolos_comunes_!¡@#$^&*()?¿.,=+#"
15
- ]
16
-
17
- }
@@ -1,19 +0,0 @@
1
- {
2
-
3
- "native_name" : "Українська",
4
- "english_name" : "Ukrainian",
5
-
6
-
7
- "cases" : [
8
- "ends_with_number_10",
9
- "middle_10_number",
10
- "10_starts_with_number",
11
-
12
- "all_letters_абгґдеєжзиіїйклмнопрстуфхцчшщьюяАБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЬЮЯ",
13
- "all_digits_0123456789",
14
- "accents_’",
15
-
16
- "common_symbols_!«»№,.?+=_*#"
17
- ]
18
-
19
- }
@@ -1,29 +0,0 @@
1
-
2
- /* eslint-disable max-len */
3
-
4
- import { sm } from '../jssm';
5
-
6
-
7
-
8
-
9
-
10
- describe('graph attributes don\'t throw', () => {
11
-
12
- const machine = sm`graph_layout: circo; a->b->c->d->e->f->a;`;
13
-
14
- test('layout is circo', () => expect(machine.graph_layout()).toBe('circo') );
15
-
16
- });
17
-
18
-
19
-
20
-
21
-
22
- describe('error catchery', () => {
23
-
24
- test('double graph_layout throws', () =>
25
- expect( () => {
26
- const _machine = sm`graph_layout: circo; graph_layout: circo; a->b->c->d->e->f->a;`;
27
- } ).toThrow() );
28
-
29
- });