1 |
|
2 | import { compose } from './fswquery-compose';
|
3 | it('should compose generic queries', () => {
|
4 | expect(compose({
|
5 | query: true
|
6 | })).toBe('Q');
|
7 | expect(compose({
|
8 | query: true,
|
9 | style: true
|
10 | })).toBe('Q-');
|
11 | })
|
12 |
|
13 | it('should compose prefix queries', () => {
|
14 | expect(compose({
|
15 | query: true,
|
16 | prefix: { required: true }
|
17 | })).toBe('QT');
|
18 | expect(compose({
|
19 | query: true,
|
20 | prefix: { required: true },
|
21 | style: true
|
22 | })).toBe('QT-');
|
23 | expect(compose({
|
24 | query: true,
|
25 | prefix: {
|
26 | required: true,
|
27 | parts: [
|
28 | 'S10000',
|
29 | ['100', '204'],
|
30 | 'S20500'
|
31 | ]
|
32 | }
|
33 | })).toBe('QAS10000R100t204S20500T');
|
34 | expect(compose({
|
35 | query: true,
|
36 | prefix: {
|
37 | required: true,
|
38 | parts: [
|
39 | 'S10000',
|
40 | [
|
41 | 'or',
|
42 | ['100', '204'],
|
43 | 'S20500'
|
44 | ]
|
45 | ]
|
46 | }
|
47 | })).toBe('QAS10000R100t204oS20500T');
|
48 | })
|
49 |
|
50 | it('should compose signbox queries', () => {
|
51 | expect(compose({
|
52 | query: true,
|
53 | signbox: [
|
54 | { symbol: 'S20000' }
|
55 | ]
|
56 | })).toBe('QS20000');
|
57 | expect(compose({
|
58 | query: true,
|
59 | signbox: [
|
60 | {
|
61 | symbol: 'S20000',
|
62 | coord: [500, 500]
|
63 | }
|
64 | ]
|
65 | })).toBe('QS20000500x500');
|
66 | expect(compose({
|
67 | query: true,
|
68 | signbox: [
|
69 | { range: ['100', '105'] }
|
70 | ]
|
71 | })).toBe('QR100t105');
|
72 | expect(compose({
|
73 | query: true,
|
74 | signbox: [
|
75 | {
|
76 | range: ['100', '105'],
|
77 | coord: [500, 500]
|
78 | }
|
79 | ]
|
80 | })).toBe('QR100t105500x500');
|
81 | expect(compose({
|
82 | query: true,
|
83 | signbox: [
|
84 | { symbol: 'S20000' },
|
85 | {
|
86 | range: ['100', '105'],
|
87 | coord: [500, 500]
|
88 | }
|
89 | ]
|
90 | })).toBe('QS20000R100t105500x500');
|
91 | expect(compose({
|
92 | query: true,
|
93 | signbox: [
|
94 | {
|
95 | or: [
|
96 | 'S20000',
|
97 | ['100', '105']
|
98 | ],
|
99 | coord: [500, 500]
|
100 | }
|
101 | ]
|
102 | })).toBe('QS20000oR100t105500x500');
|
103 | })
|
104 |
|
105 | it('should not break on invalid input', () => {
|
106 | expect(compose()).toBe(undefined);
|
107 | expect(compose('a')).toBe(undefined);
|
108 | expect(compose({ 'a': 5 })).toBe(undefined);
|
109 | expect(compose(['a'])).toBe(undefined);
|
110 | })
|
111 |
|
112 | it('should not break on mangled input', () => {
|
113 | expect(compose({
|
114 | query: true,
|
115 | prefix: {
|
116 | required: true,
|
117 | parts: [
|
118 | 'x',
|
119 | ['100', '204'],
|
120 | 'S20500'
|
121 | ]
|
122 | }
|
123 | })).toBe('Q');
|
124 | expect(compose({
|
125 | query: true,
|
126 | prefix: {
|
127 | required: true,
|
128 | parts: [
|
129 | ['444', '204'],
|
130 | 'S20500'
|
131 | ]
|
132 | }
|
133 | })).toBe('Q');
|
134 | expect(compose({
|
135 | query: true,
|
136 | prefix: {
|
137 | required: true,
|
138 | parts: 'xx'
|
139 | }
|
140 | })).toBe('QT');
|
141 | expect(compose({
|
142 | query: true,
|
143 | prefix: {
|
144 | required: true,
|
145 | parts: [{ a: 'xx' }]
|
146 | }
|
147 | })).toBe('Q');
|
148 | expect(compose({
|
149 | query: true,
|
150 | signbox: [
|
151 | { symbolx: 'S20000' },
|
152 | {
|
153 | rangex: ['100', '105'],
|
154 | coord: [500, 500]
|
155 | }
|
156 | ]
|
157 | })).toBe('Q');
|
158 | expect(compose({
|
159 | query: true,
|
160 | signbox: [
|
161 | { symbol: 'x' },
|
162 | {
|
163 | rangex: ['100', '105'],
|
164 | coord: [500, 500]
|
165 | }
|
166 | ]
|
167 | })).toBe('Q');
|
168 | })
|