UNPKG

3.8 kBJavaScriptView Raw
1
2import { parse } from './fsw-parse';
3
4it('should parse a symbol', () => {
5 expect(parse.symbol('S10000')).toEqual({ symbol: 'S10000' })
6})
7
8it('should parse a symbol with coordinate', () => {
9 expect(parse.symbol('S10000500x500')).toEqual({ symbol: 'S10000', coord: [500, 500] })
10})
11
12it('should parse a symbol with style', () => {
13 expect(parse.symbol('S10000-C')).toEqual({ symbol: 'S10000', style: '-C' })
14})
15
16it('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
23it('should parse an empty signbox', () => {
24 expect(parse.sign('M500x500')).toEqual({
25 box: 'M',
26 max: [500, 500]
27 })
28})
29
30it('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
58it('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
87it('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
114it('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
121it('should parse a text', () => {
122 expect(parse.text('AS14c20S27106M518x529S14c20481x471S27106503x489 AS18701S1870aS2e734S20500M518x533S1870a489x515S18701482x490S20500508x496S2e734500x468 S38800464x496')).toEqual([
123 'AS14c20S27106M518x529S14c20481x471S27106503x489',
124 'AS18701S1870aS2e734S20500M518x533S1870a489x515S18701482x490S20500508x496S2e734500x468',
125 'S38800464x496'
126 ])
127})
128
129it('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
137it('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})