1 |
|
2 | import { parse } from './fsw-parse';
|
3 |
|
4 | it('should parse a symbol', () => {
|
5 | expect(parse.symbol('S10000')).toEqual({ symbol: 'S10000' })
|
6 | })
|
7 |
|
8 | it('should parse a symbol with coordinate', () => {
|
9 | expect(parse.symbol('S10000500x500')).toEqual({ symbol: 'S10000', coord: [500, 500] })
|
10 | })
|
11 |
|
12 | it('should parse a symbol with style', () => {
|
13 | expect(parse.symbol('S10000-C')).toEqual({ symbol: 'S10000', style: '-C' })
|
14 | })
|
15 |
|
16 | it('should not break on invalid symbol key or input', () => {
|
17 | expect(parse.symbol()).toEqual({})
|
18 | expect(parse.symbol('a')).toEqual({})
|
19 | expect(parse.symbol({ 'a': 5 })).toEqual({})
|
20 | expect(parse.symbol(['a'])).toEqual({})
|
21 | })
|
22 |
|
23 | it('should parse an empty signbox', () => {
|
24 | expect(parse.sign('M500x500')).toEqual({
|
25 | box: 'M',
|
26 | max: [500, 500]
|
27 | })
|
28 | })
|
29 |
|
30 | it('should parse a plain signbox', () => {
|
31 | expect(parse.sign('M525x535S2e748483x510S10011501x466S2e704510x500S10019476x475')).toEqual({
|
32 | box: 'M',
|
33 | max: [525, 535],
|
34 | spatials: [
|
35 | {
|
36 | symbol: 'S2e748',
|
37 | coord: [483, 510]
|
38 | },
|
39 |
|
40 | {
|
41 | symbol: 'S10011',
|
42 | coord: [501, 466]
|
43 | },
|
44 |
|
45 | {
|
46 | symbol: 'S2e704',
|
47 | coord: [510, 500]
|
48 | },
|
49 |
|
50 | {
|
51 | symbol: 'S10019',
|
52 | coord: [476, 475]
|
53 | }
|
54 | ]
|
55 | })
|
56 | })
|
57 |
|
58 | it('should parse a prefixed signbox', () => {
|
59 | expect(parse.sign('AS10011S10019S2e704S2e748M525x535S2e748483x510S10011501x466S2e704510x500S10019476x475')).toEqual({
|
60 | sequence: ['S10011', 'S10019', 'S2e704', 'S2e748'],
|
61 | box: 'M',
|
62 | max: [525, 535],
|
63 | spatials: [
|
64 | {
|
65 | symbol: 'S2e748',
|
66 | coord: [483, 510]
|
67 | },
|
68 |
|
69 | {
|
70 | symbol: 'S10011',
|
71 | coord: [501, 466]
|
72 | },
|
73 |
|
74 | {
|
75 | symbol: 'S2e704',
|
76 | coord: [510, 500]
|
77 | },
|
78 |
|
79 | {
|
80 | symbol: 'S10019',
|
81 | coord: [476, 475]
|
82 | }
|
83 | ]
|
84 | })
|
85 | })
|
86 |
|
87 | it('should parse a prefixed signbox with style', () => {
|
88 | expect(parse.sign('AS10011S10019S2e704S2e748M525x535S2e748483x510S10011501x466S2e704510x500S10019476x475-C')).toEqual({
|
89 | sequence: ['S10011', 'S10019', 'S2e704', 'S2e748'],
|
90 | box: 'M',
|
91 | max: [525, 535],
|
92 | spatials: [
|
93 | {
|
94 | symbol: 'S2e748',
|
95 | coord: [483, 510]
|
96 | },
|
97 | {
|
98 | symbol: 'S10011',
|
99 | coord: [501, 466]
|
100 | },
|
101 | {
|
102 | symbol: 'S2e704',
|
103 | coord: [510, 500]
|
104 | },
|
105 | {
|
106 | symbol: 'S10019',
|
107 | coord: [476, 475]
|
108 | }
|
109 | ],
|
110 | style: '-C'
|
111 | })
|
112 | })
|
113 |
|
114 | it('should not break on invalid sign or input', () => {
|
115 | expect(parse.sign()).toEqual({})
|
116 | expect(parse.sign('a')).toEqual({})
|
117 | expect(parse.sign({ 'a': 5 })).toEqual({})
|
118 | expect(parse.sign(['a'])).toEqual({})
|
119 | })
|
120 |
|
121 | it('should parse a text', () => {
|
122 | expect(parse.text('AS14c20S27106M518x529S14c20481x471S27106503x489 AS18701S1870aS2e734S20500M518x533S1870a489x515S18701482x490S20500508x496S2e734500x468 S38800464x496')).toEqual([
|
123 | 'AS14c20S27106M518x529S14c20481x471S27106503x489',
|
124 | 'AS18701S1870aS2e734S20500M518x533S1870a489x515S18701482x490S20500508x496S2e734500x468',
|
125 | 'S38800464x496'
|
126 | ])
|
127 | })
|
128 |
|
129 | it('should parse a text with style', () => {
|
130 | expect(parse.text('AS14c20S27106M518x529S14c20481x471S27106503x489-C AS18701S1870aS2e734S20500M518x533S1870a489x515S18701482x490S20500508x496S2e734500x468 S38800464x496-Z2')).toEqual([
|
131 | 'AS14c20S27106M518x529S14c20481x471S27106503x489-C',
|
132 | 'AS18701S1870aS2e734S20500M518x533S1870a489x515S18701482x490S20500508x496S2e734500x468',
|
133 | 'S38800464x496-Z2'
|
134 | ])
|
135 | })
|
136 |
|
137 | it('should not break on invalid text or input', () => {
|
138 | expect(parse.text()).toEqual([])
|
139 | expect(parse.text('a')).toEqual([])
|
140 | expect(parse.text({ 'a': 5 })).toEqual([])
|
141 | expect(parse.text(['a'])).toEqual([])
|
142 | })
|