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