UNPKG

25.3 kBPlain TextView Raw
1/* tslint:disable:no-implicit-dependencies no-any */
2/**
3 * ScanSettings tests
4 */
5import test from "ava";
6import { Barcode, ScanSettings, SearchArea, SymbologySettings } from "..";
7
8const baseJSONScanSettings: {
9 symbologies: {};
10 codeDuplicateFilter: number;
11 maxNumberOfCodesPerFrame: number;
12 searchArea: SearchArea;
13 gpuAcceleration: boolean;
14 blurryRecognition: boolean;
15 properties: {};
16} = {
17 symbologies: {},
18 codeDuplicateFilter: 0,
19 maxNumberOfCodesPerFrame: 1,
20 searchArea: new ScanSettings().getSearchArea(),
21 gpuAcceleration: true,
22 blurryRecognition: true,
23 properties: {}
24};
25
26test("constructor", t => {
27 let ss: ScanSettings = new ScanSettings();
28 t.deepEqual((<any>ss).symbologySettings, new Map());
29 t.deepEqual((<any>ss).codeDuplicateFilter, 0);
30 t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 1);
31 t.deepEqual(ss.getSearchArea(), { height: 1, width: 1, x: 0, y: 0 });
32 t.deepEqual((<any>ss).gpuAcceleration, true);
33 t.deepEqual((<any>ss).blurryRecognition, true);
34 ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR });
35 t.deepEqual((<any>ss).symbologySettings, new Map([[Barcode.Symbology.QR, new SymbologySettings({ enabled: true })]]));
36 t.deepEqual((<any>ss).codeDuplicateFilter, 0);
37 t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 1);
38 t.deepEqual(ss.getSearchArea(), { height: 1, width: 1, x: 0, y: 0 });
39 t.deepEqual((<any>ss).gpuAcceleration, true);
40 t.deepEqual((<any>ss).blurryRecognition, true);
41 ss = new ScanSettings({ enabledSymbologies: [Barcode.Symbology.QR] });
42 t.deepEqual((<any>ss).symbologySettings, new Map([[Barcode.Symbology.QR, new SymbologySettings({ enabled: true })]]));
43 t.deepEqual((<any>ss).codeDuplicateFilter, 0);
44 t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 1);
45 t.deepEqual(ss.getSearchArea(), { height: 1, width: 1, x: 0, y: 0 });
46 t.deepEqual((<any>ss).gpuAcceleration, true);
47 t.deepEqual((<any>ss).blurryRecognition, true);
48 ss = new ScanSettings({ enabledSymbologies: new Set([Barcode.Symbology.QR]) });
49 t.deepEqual((<any>ss).symbologySettings, new Map([[Barcode.Symbology.QR, new SymbologySettings({ enabled: true })]]));
50 t.deepEqual((<any>ss).codeDuplicateFilter, 0);
51 t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 1);
52 t.deepEqual(ss.getSearchArea(), { height: 1, width: 1, x: 0, y: 0 });
53 t.deepEqual((<any>ss).gpuAcceleration, true);
54 t.deepEqual((<any>ss).blurryRecognition, true);
55 ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR, codeDuplicateFilter: 10 });
56 t.deepEqual((<any>ss).symbologySettings, new Map([[Barcode.Symbology.QR, new SymbologySettings({ enabled: true })]]));
57 t.deepEqual((<any>ss).codeDuplicateFilter, 10);
58 t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 1);
59 t.deepEqual(ss.getSearchArea(), { height: 1, width: 1, x: 0, y: 0 });
60 t.deepEqual((<any>ss).gpuAcceleration, true);
61 t.deepEqual((<any>ss).blurryRecognition, true);
62 ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR, maxNumberOfCodesPerFrame: 10 });
63 t.deepEqual((<any>ss).symbologySettings, new Map([[Barcode.Symbology.QR, new SymbologySettings({ enabled: true })]]));
64 t.deepEqual((<any>ss).codeDuplicateFilter, 0);
65 t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 10);
66 t.deepEqual(ss.getSearchArea(), { height: 1, width: 1, x: 0, y: 0 });
67 t.deepEqual((<any>ss).gpuAcceleration, true);
68 t.deepEqual((<any>ss).blurryRecognition, true);
69 ss = new ScanSettings({
70 enabledSymbologies: Barcode.Symbology.QR,
71 codeDuplicateFilter: 10,
72 maxNumberOfCodesPerFrame: 10
73 });
74 t.deepEqual((<any>ss).symbologySettings, new Map([[Barcode.Symbology.QR, new SymbologySettings({ enabled: true })]]));
75 t.deepEqual((<any>ss).codeDuplicateFilter, 10);
76 t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 10);
77 t.deepEqual(ss.getSearchArea(), { height: 1, width: 1, x: 0, y: 0 });
78 t.deepEqual((<any>ss).gpuAcceleration, true);
79 t.deepEqual((<any>ss).blurryRecognition, true);
80 ss = new ScanSettings({
81 enabledSymbologies: Barcode.Symbology.QR,
82 codeDuplicateFilter: 10,
83 maxNumberOfCodesPerFrame: 10,
84 searchArea: { x: 0.5, y: 0.5, width: 0.5, height: 0.1 }
85 });
86 t.deepEqual((<any>ss).symbologySettings, new Map([[Barcode.Symbology.QR, new SymbologySettings({ enabled: true })]]));
87 t.deepEqual((<any>ss).codeDuplicateFilter, 10);
88 t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 10);
89 t.deepEqual(ss.getSearchArea(), { height: 0.1, width: 0.5, x: 0.5, y: 0.5 });
90 t.deepEqual((<any>ss).gpuAcceleration, true);
91 t.deepEqual((<any>ss).blurryRecognition, true);
92 ss = new ScanSettings({
93 enabledSymbologies: Barcode.Symbology.QR,
94 codeDuplicateFilter: 10,
95 maxNumberOfCodesPerFrame: 10,
96 searchArea: { x: 0.5, y: 0.5, width: 0.5, height: 0.1 },
97 gpuAcceleration: false
98 });
99 t.deepEqual((<any>ss).symbologySettings, new Map([[Barcode.Symbology.QR, new SymbologySettings({ enabled: true })]]));
100 t.deepEqual((<any>ss).codeDuplicateFilter, 10);
101 t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 10);
102 t.deepEqual(ss.getSearchArea(), { height: 0.1, width: 0.5, x: 0.5, y: 0.5 });
103 t.deepEqual((<any>ss).gpuAcceleration, false);
104 t.deepEqual((<any>ss).blurryRecognition, true);
105 ss = new ScanSettings({
106 enabledSymbologies: Barcode.Symbology.QR,
107 codeDuplicateFilter: 10,
108 maxNumberOfCodesPerFrame: 10,
109 searchArea: { x: 0.5, y: 0.5, width: 0.5, height: 0.1 },
110 gpuAcceleration: false,
111 blurryRecognition: false
112 });
113 t.deepEqual((<any>ss).symbologySettings, new Map([[Barcode.Symbology.QR, new SymbologySettings({ enabled: true })]]));
114 t.deepEqual((<any>ss).codeDuplicateFilter, 10);
115 t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 10);
116 t.deepEqual(ss.getSearchArea(), { height: 0.1, width: 0.5, x: 0.5, y: 0.5 });
117 t.deepEqual((<any>ss).gpuAcceleration, false);
118 t.deepEqual((<any>ss).blurryRecognition, false);
119});
120
121test("constructor (strings)", t => {
122 let ss: ScanSettings = new ScanSettings();
123 t.deepEqual((<any>ss).symbologySettings, new Map());
124 t.deepEqual((<any>ss).codeDuplicateFilter, 0);
125 t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 1);
126 t.deepEqual(ss.getSearchArea(), { height: 1, width: 1, x: 0, y: 0 });
127 t.deepEqual((<any>ss).gpuAcceleration, true);
128 t.deepEqual((<any>ss).blurryRecognition, true);
129 ss = new ScanSettings({ enabledSymbologies: <Barcode.Symbology>"qr" });
130 t.deepEqual((<any>ss).symbologySettings, new Map([[Barcode.Symbology.QR, new SymbologySettings({ enabled: true })]]));
131 t.deepEqual((<any>ss).codeDuplicateFilter, 0);
132 t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 1);
133 t.deepEqual(ss.getSearchArea(), { height: 1, width: 1, x: 0, y: 0 });
134 t.deepEqual((<any>ss).gpuAcceleration, true);
135 t.deepEqual((<any>ss).blurryRecognition, true);
136 ss = new ScanSettings({ enabledSymbologies: <Barcode.Symbology[]>["qr"] });
137 t.deepEqual((<any>ss).symbologySettings, new Map([[Barcode.Symbology.QR, new SymbologySettings({ enabled: true })]]));
138 t.deepEqual((<any>ss).codeDuplicateFilter, 0);
139 t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 1);
140 t.deepEqual(ss.getSearchArea(), { height: 1, width: 1, x: 0, y: 0 });
141 t.deepEqual((<any>ss).gpuAcceleration, true);
142 t.deepEqual((<any>ss).blurryRecognition, true);
143 ss = new ScanSettings({ enabledSymbologies: <Set<Barcode.Symbology>>new Set(["qr"]) });
144 t.deepEqual((<any>ss).symbologySettings, new Map([[Barcode.Symbology.QR, new SymbologySettings({ enabled: true })]]));
145 t.deepEqual((<any>ss).codeDuplicateFilter, 0);
146 t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 1);
147 t.deepEqual(ss.getSearchArea(), { height: 1, width: 1, x: 0, y: 0 });
148 t.deepEqual((<any>ss).gpuAcceleration, true);
149 t.deepEqual((<any>ss).blurryRecognition, true);
150
151 t.throws(
152 () => {
153 return new ScanSettings({ enabledSymbologies: <Barcode.Symbology>(<unknown>"i_dont_exist") });
154 },
155 TypeError,
156 "i_dont_exist"
157 );
158 t.throws(
159 () => {
160 return new ScanSettings({ enabledSymbologies: <Barcode.Symbology[]>(<unknown>Array.from(["i_dont_exist"])) });
161 },
162 TypeError,
163 "i_dont_exist"
164 );
165 t.throws(
166 () => {
167 return new ScanSettings({ enabledSymbologies: <Set<Barcode.Symbology>>(<unknown>new Set(["i_dont_exist"])) });
168 },
169 TypeError,
170 "i_dont_exist"
171 );
172});
173
174test("getSymbologySettings", t => {
175 let ss: ScanSettings = new ScanSettings();
176 t.deepEqual(ss.getSymbologySettings(Barcode.Symbology.QR), new SymbologySettings());
177 ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR });
178 t.deepEqual(ss.getSymbologySettings(Barcode.Symbology.QR), new SymbologySettings({ enabled: true }));
179 ss = new ScanSettings();
180 ss.getSymbologySettings(Barcode.Symbology.QR).setColorInvertedEnabled(true);
181 t.deepEqual(ss.getSymbologySettings(Barcode.Symbology.QR), new SymbologySettings({ colorInvertedEnabled: true }));
182});
183
184test("getSymbologySettings (strings)", t => {
185 let ss: ScanSettings = new ScanSettings();
186 t.throws(
187 () => {
188 ss.getSymbologySettings(<Barcode.Symbology>"i_dont_exist");
189 },
190 TypeError,
191 "i_dont_exist"
192 );
193 t.deepEqual(ss.getSymbologySettings(<Barcode.Symbology>"qr"), new SymbologySettings());
194 ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR });
195 t.deepEqual(ss.getSymbologySettings(<Barcode.Symbology>"qr"), new SymbologySettings({ enabled: true }));
196 ss = new ScanSettings();
197 ss.getSymbologySettings(Barcode.Symbology.QR).setColorInvertedEnabled(true);
198 t.deepEqual(ss.getSymbologySettings(<Barcode.Symbology>"qr"), new SymbologySettings({ colorInvertedEnabled: true }));
199});
200
201test("isSymbologyEnabled & enableSymbologies & disableSymbologies", t => {
202 let ss: ScanSettings = new ScanSettings();
203 t.false(ss.isSymbologyEnabled(Barcode.Symbology.QR));
204 ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR });
205 t.true(ss.isSymbologyEnabled(Barcode.Symbology.QR));
206
207 // Set
208 ss = new ScanSettings();
209 ss.enableSymbologies(new Set([Barcode.Symbology.QR]));
210 t.false(ss.isSymbologyEnabled(Barcode.Symbology.CODE128));
211 t.false(ss.isSymbologyEnabled(Barcode.Symbology.EAN13));
212 t.true(ss.isSymbologyEnabled(Barcode.Symbology.QR));
213 ss.enableSymbologies(new Set([Barcode.Symbology.CODE128, Barcode.Symbology.EAN13]));
214 t.true(ss.isSymbologyEnabled(Barcode.Symbology.CODE128));
215 t.true(ss.isSymbologyEnabled(Barcode.Symbology.EAN13));
216 t.true(ss.isSymbologyEnabled(Barcode.Symbology.QR));
217 ss.disableSymbologies(new Set([Barcode.Symbology.QR]));
218 t.true(ss.isSymbologyEnabled(Barcode.Symbology.CODE128));
219 t.true(ss.isSymbologyEnabled(Barcode.Symbology.EAN13));
220 t.false(ss.isSymbologyEnabled(Barcode.Symbology.QR));
221 ss.disableSymbologies(new Set([Barcode.Symbology.CODE128, Barcode.Symbology.EAN13]));
222 t.false(ss.isSymbologyEnabled(Barcode.Symbology.CODE128));
223 t.false(ss.isSymbologyEnabled(Barcode.Symbology.EAN13));
224 t.false(ss.isSymbologyEnabled(Barcode.Symbology.QR));
225
226 // Array
227 ss = new ScanSettings();
228 ss.enableSymbologies([Barcode.Symbology.QR]);
229 t.false(ss.isSymbologyEnabled(Barcode.Symbology.CODE128));
230 t.false(ss.isSymbologyEnabled(Barcode.Symbology.EAN13));
231 t.true(ss.isSymbologyEnabled(Barcode.Symbology.QR));
232 ss.enableSymbologies([Barcode.Symbology.CODE128, Barcode.Symbology.EAN13]);
233 t.true(ss.isSymbologyEnabled(Barcode.Symbology.CODE128));
234 t.true(ss.isSymbologyEnabled(Barcode.Symbology.EAN13));
235 t.true(ss.isSymbologyEnabled(Barcode.Symbology.QR));
236 ss.disableSymbologies([Barcode.Symbology.QR]);
237 t.true(ss.isSymbologyEnabled(Barcode.Symbology.CODE128));
238 t.true(ss.isSymbologyEnabled(Barcode.Symbology.EAN13));
239 t.false(ss.isSymbologyEnabled(Barcode.Symbology.QR));
240 ss.disableSymbologies([Barcode.Symbology.CODE128, Barcode.Symbology.EAN13]);
241 t.false(ss.isSymbologyEnabled(Barcode.Symbology.CODE128));
242 t.false(ss.isSymbologyEnabled(Barcode.Symbology.EAN13));
243 t.false(ss.isSymbologyEnabled(Barcode.Symbology.QR));
244
245 // Single
246 ss = new ScanSettings();
247 ss.enableSymbologies(Barcode.Symbology.QR);
248 t.false(ss.isSymbologyEnabled(Barcode.Symbology.CODE128));
249 t.true(ss.isSymbologyEnabled(Barcode.Symbology.QR));
250 ss.enableSymbologies(Barcode.Symbology.CODE128);
251 t.true(ss.isSymbologyEnabled(Barcode.Symbology.CODE128));
252 t.true(ss.isSymbologyEnabled(Barcode.Symbology.QR));
253 ss.disableSymbologies(Barcode.Symbology.QR);
254 t.true(ss.isSymbologyEnabled(Barcode.Symbology.CODE128));
255 t.false(ss.isSymbologyEnabled(Barcode.Symbology.QR));
256 ss.disableSymbologies(Barcode.Symbology.CODE128);
257 t.false(ss.isSymbologyEnabled(Barcode.Symbology.CODE128));
258 t.false(ss.isSymbologyEnabled(Barcode.Symbology.QR));
259});
260
261test("isSymbologyEnabled & enableSymbologies & disableSymbologies (strings)", t => {
262 let ss: ScanSettings = new ScanSettings();
263 t.false(ss.isSymbologyEnabled(<Barcode.Symbology>"qr"));
264 ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR });
265 t.true(ss.isSymbologyEnabled(<Barcode.Symbology>"qr"));
266
267 ss = new ScanSettings();
268 t.throws(
269 () => {
270 ss.enableSymbologies(<Barcode.Symbology>"i_dont_exist");
271 },
272 TypeError,
273 "i_dont_exist"
274 );
275 t.deepEqual((<any>ss).symbologySettings, new Map());
276 t.throws(
277 () => {
278 ss.enableSymbologies(<Barcode.Symbology[]>(<unknown>Array.from(["i_dont_exist"])));
279 },
280 TypeError,
281 "i_dont_exist"
282 );
283 t.deepEqual((<any>ss).symbologySettings, new Map());
284 t.throws(
285 () => {
286 ss.enableSymbologies(<Set<Barcode.Symbology>>(<unknown>new Set(["i_dont_exist"])));
287 },
288 TypeError,
289 "i_dont_exist"
290 );
291 t.deepEqual((<any>ss).symbologySettings, new Map());
292
293 // Set
294 ss = new ScanSettings();
295 ss.enableSymbologies(<Set<Barcode.Symbology>>new Set(["qr"]));
296 t.false(ss.isSymbologyEnabled(Barcode.Symbology.CODE128));
297 t.false(ss.isSymbologyEnabled(Barcode.Symbology.EAN13));
298 t.true(ss.isSymbologyEnabled(Barcode.Symbology.QR));
299 ss.enableSymbologies(<Set<Barcode.Symbology>>new Set(["code128", "ean13"]));
300 t.true(ss.isSymbologyEnabled(Barcode.Symbology.CODE128));
301 t.true(ss.isSymbologyEnabled(Barcode.Symbology.EAN13));
302 t.true(ss.isSymbologyEnabled(Barcode.Symbology.QR));
303 ss.disableSymbologies(<Set<Barcode.Symbology>>new Set(["qr"]));
304 t.true(ss.isSymbologyEnabled(Barcode.Symbology.CODE128));
305 t.true(ss.isSymbologyEnabled(Barcode.Symbology.EAN13));
306 t.false(ss.isSymbologyEnabled(Barcode.Symbology.QR));
307 ss.disableSymbologies(<Set<Barcode.Symbology>>new Set(["code128", "ean13"]));
308 t.false(ss.isSymbologyEnabled(Barcode.Symbology.CODE128));
309 t.false(ss.isSymbologyEnabled(Barcode.Symbology.EAN13));
310 t.false(ss.isSymbologyEnabled(Barcode.Symbology.QR));
311
312 // Array
313 ss = new ScanSettings();
314 ss.enableSymbologies(<Barcode.Symbology[]>["qr"]);
315 t.false(ss.isSymbologyEnabled(Barcode.Symbology.CODE128));
316 t.false(ss.isSymbologyEnabled(Barcode.Symbology.EAN13));
317 t.true(ss.isSymbologyEnabled(Barcode.Symbology.QR));
318 ss.enableSymbologies(<Barcode.Symbology[]>["code128", "ean13"]);
319 t.true(ss.isSymbologyEnabled(Barcode.Symbology.CODE128));
320 t.true(ss.isSymbologyEnabled(Barcode.Symbology.EAN13));
321 t.true(ss.isSymbologyEnabled(Barcode.Symbology.QR));
322 ss.disableSymbologies(<Barcode.Symbology[]>["qr"]);
323 t.true(ss.isSymbologyEnabled(Barcode.Symbology.CODE128));
324 t.true(ss.isSymbologyEnabled(Barcode.Symbology.EAN13));
325 t.false(ss.isSymbologyEnabled(Barcode.Symbology.QR));
326 ss.disableSymbologies(<Barcode.Symbology[]>["code128", "ean13"]);
327 t.false(ss.isSymbologyEnabled(Barcode.Symbology.CODE128));
328 t.false(ss.isSymbologyEnabled(Barcode.Symbology.EAN13));
329 t.false(ss.isSymbologyEnabled(Barcode.Symbology.QR));
330
331 // Single
332 ss = new ScanSettings();
333 ss.enableSymbologies(<Barcode.Symbology>"qr");
334 t.false(ss.isSymbologyEnabled(Barcode.Symbology.CODE128));
335 t.true(ss.isSymbologyEnabled(Barcode.Symbology.QR));
336 ss.enableSymbologies(<Barcode.Symbology>"code128");
337 t.true(ss.isSymbologyEnabled(Barcode.Symbology.CODE128));
338 t.true(ss.isSymbologyEnabled(Barcode.Symbology.QR));
339 ss.disableSymbologies(<Barcode.Symbology>"qr");
340 t.true(ss.isSymbologyEnabled(Barcode.Symbology.CODE128));
341 t.false(ss.isSymbologyEnabled(Barcode.Symbology.QR));
342 ss.disableSymbologies(<Barcode.Symbology>"code128");
343 t.false(ss.isSymbologyEnabled(Barcode.Symbology.CODE128));
344 t.false(ss.isSymbologyEnabled(Barcode.Symbology.QR));
345});
346
347test("getCodeDuplicateFilter & setCodeDuplicateFilter", t => {
348 const ss: ScanSettings = new ScanSettings();
349 t.deepEqual(ss.getCodeDuplicateFilter(), 0);
350 ss.setCodeDuplicateFilter(100);
351 t.deepEqual(ss.getCodeDuplicateFilter(), 100);
352});
353
354test("getMaxNumberOfCodesPerFrame & setMaxNumberOfCodesPerFrame", t => {
355 const ss: ScanSettings = new ScanSettings();
356 t.deepEqual(ss.getMaxNumberOfCodesPerFrame(), 1);
357 ss.setMaxNumberOfCodesPerFrame(10);
358 t.deepEqual(ss.getMaxNumberOfCodesPerFrame(), 10);
359});
360
361test("getSearchArea & setSearchArea", t => {
362 const ss: ScanSettings = new ScanSettings();
363 t.deepEqual(ss.getSearchArea(), { height: 1, width: 1, x: 0, y: 0 });
364 ss.setSearchArea({ x: 0.5, y: 0.5, width: 0.5, height: 0.1 });
365 t.deepEqual(ss.getSearchArea(), { height: 0.1, width: 0.5, x: 0.5, y: 0.5 });
366});
367
368test("isGpuAccelerationEnabled & setGpuAccelerationEnabled", t => {
369 const ss: ScanSettings = new ScanSettings();
370 t.deepEqual(ss.isGpuAccelerationEnabled(), true);
371 ss.setGpuAccelerationEnabled(false);
372 t.deepEqual(ss.isGpuAccelerationEnabled(), false);
373 ss.setGpuAccelerationEnabled(true);
374 t.deepEqual(ss.isGpuAccelerationEnabled(), true);
375});
376
377test("isBlurryRecognitionEnabled & setBlurryRecognitionEnabled", t => {
378 const ss: ScanSettings = new ScanSettings();
379 t.deepEqual(ss.isBlurryRecognitionEnabled(), true);
380 ss.setBlurryRecognitionEnabled(false);
381 t.deepEqual(ss.isBlurryRecognitionEnabled(), false);
382 ss.setBlurryRecognitionEnabled(true);
383 t.deepEqual(ss.isBlurryRecognitionEnabled(), true);
384});
385
386// tslint:disable-next-line:max-func-body-length
387test("toJSONString", t => {
388 let ss: ScanSettings = new ScanSettings();
389 t.deepEqual(JSON.parse(ss.toJSONString()), JSON.parse(JSON.stringify(baseJSONScanSettings)));
390 ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR });
391 t.deepEqual(
392 JSON.parse(ss.toJSONString()),
393 JSON.parse(
394 JSON.stringify({
395 ...baseJSONScanSettings,
396 symbologies: { [Barcode.Symbology.QR]: new SymbologySettings({ enabled: true }) }
397 })
398 )
399 );
400 ss = new ScanSettings({ enabledSymbologies: [Barcode.Symbology.QR] });
401 t.deepEqual(
402 JSON.parse(ss.toJSONString()),
403 JSON.parse(
404 JSON.stringify({
405 ...baseJSONScanSettings,
406 symbologies: { [Barcode.Symbology.QR]: new SymbologySettings({ enabled: true }) }
407 })
408 )
409 );
410 ss = new ScanSettings({ enabledSymbologies: new Set([Barcode.Symbology.QR]) });
411 t.deepEqual(
412 JSON.parse(ss.toJSONString()),
413 JSON.parse(
414 JSON.stringify({
415 ...baseJSONScanSettings,
416 symbologies: { [Barcode.Symbology.QR]: new SymbologySettings({ enabled: true }) }
417 })
418 )
419 );
420 ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR, codeDuplicateFilter: 10 });
421 t.deepEqual(
422 JSON.parse(ss.toJSONString()),
423 JSON.parse(
424 JSON.stringify({
425 ...baseJSONScanSettings,
426 symbologies: { [Barcode.Symbology.QR]: new SymbologySettings({ enabled: true }) },
427 codeDuplicateFilter: 10
428 })
429 )
430 );
431 ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR, maxNumberOfCodesPerFrame: 10 });
432 t.deepEqual(
433 JSON.parse(ss.toJSONString()),
434 JSON.parse(
435 JSON.stringify({
436 ...baseJSONScanSettings,
437 symbologies: { [Barcode.Symbology.QR]: new SymbologySettings({ enabled: true }) },
438 maxNumberOfCodesPerFrame: 10
439 })
440 )
441 );
442 ss = new ScanSettings({
443 enabledSymbologies: Barcode.Symbology.QR,
444 codeDuplicateFilter: 10,
445 maxNumberOfCodesPerFrame: 10
446 });
447 t.deepEqual(
448 JSON.parse(ss.toJSONString()),
449 JSON.parse(
450 JSON.stringify({
451 ...baseJSONScanSettings,
452 symbologies: { [Barcode.Symbology.QR]: new SymbologySettings({ enabled: true }) },
453 codeDuplicateFilter: 10,
454 maxNumberOfCodesPerFrame: 10
455 })
456 )
457 );
458 ss = new ScanSettings({
459 enabledSymbologies: Barcode.Symbology.QR,
460 codeDuplicateFilter: 10,
461 maxNumberOfCodesPerFrame: 10,
462 gpuAcceleration: false,
463 blurryRecognition: true
464 });
465 t.deepEqual(
466 JSON.parse(ss.toJSONString()),
467 JSON.parse(
468 JSON.stringify({
469 ...baseJSONScanSettings,
470 symbologies: { [Barcode.Symbology.QR]: new SymbologySettings({ enabled: true }) },
471 codeDuplicateFilter: 10,
472 maxNumberOfCodesPerFrame: 10,
473 gpuAcceleration: false,
474 blurryRecognition: true
475 })
476 )
477 );
478 ss = new ScanSettings({
479 enabledSymbologies: Barcode.Symbology.QR,
480 codeDuplicateFilter: 10,
481 maxNumberOfCodesPerFrame: 10,
482 gpuAcceleration: false,
483 blurryRecognition: false
484 });
485 t.deepEqual(
486 JSON.parse(ss.toJSONString()),
487 JSON.parse(
488 JSON.stringify({
489 ...baseJSONScanSettings,
490 symbologies: { [Barcode.Symbology.QR]: new SymbologySettings({ enabled: true }) },
491 codeDuplicateFilter: 10,
492 maxNumberOfCodesPerFrame: 10,
493 gpuAcceleration: false,
494 blurryRecognition: false
495 })
496 )
497 );
498 ss = new ScanSettings({
499 enabledSymbologies: Barcode.Symbology.QR,
500 codeDuplicateFilter: 10,
501 maxNumberOfCodesPerFrame: 10,
502 searchArea: { x: 0.5, y: 0.5, width: 0.5, height: 0.1 },
503 gpuAcceleration: false,
504 blurryRecognition: false
505 });
506 t.deepEqual(
507 JSON.parse(ss.toJSONString()),
508 JSON.parse(
509 JSON.stringify({
510 ...baseJSONScanSettings,
511 symbologies: { [Barcode.Symbology.QR]: new SymbologySettings({ enabled: true }) },
512 codeDuplicateFilter: 10,
513 maxNumberOfCodesPerFrame: 10,
514 searchArea: ss.getSearchArea(),
515 codeLocation1d: {
516 area: {
517 x: ss.getSearchArea().x,
518 y: ss.getSearchArea().y + (ss.getSearchArea().height * 0.75) / 2,
519 width: ss.getSearchArea().width,
520 height: ss.getSearchArea().height * 0.25
521 }
522 },
523 codeLocation2d: { area: ss.getSearchArea() },
524 gpuAcceleration: false,
525 blurryRecognition: false
526 })
527 )
528 );
529});
530
531test("getBaseSearchArea & setBaseSearchArea", t => {
532 const ss: ScanSettings = new ScanSettings({
533 enabledSymbologies: Barcode.Symbology.AZTEC,
534 codeDuplicateFilter: 5,
535 maxNumberOfCodesPerFrame: 5,
536 searchArea: { x: 0.5, y: 0.5, width: 0.5, height: 0.1 }
537 });
538 t.deepEqual(ss.getBaseSearchArea(), { height: 1, width: 1, x: 0, y: 0 });
539 t.deepEqual(
540 JSON.parse(ss.toJSONString()),
541 JSON.parse(
542 JSON.stringify({
543 ...baseJSONScanSettings,
544 symbologies: { [Barcode.Symbology.AZTEC]: new SymbologySettings({ enabled: true }) },
545 codeDuplicateFilter: 5,
546 maxNumberOfCodesPerFrame: 5,
547 searchArea: ss.getSearchArea(),
548 codeLocation1d: {
549 area: {
550 x: ss.getSearchArea().x,
551 y: ss.getSearchArea().y + (ss.getSearchArea().height * 0.75) / 2,
552 width: ss.getSearchArea().width,
553 height: ss.getSearchArea().height * 0.25
554 }
555 },
556 codeLocation2d: { area: ss.getSearchArea() }
557 })
558 )
559 );
560 ss.setBaseSearchArea({ x: 0.5, y: 0.5, width: 0.5, height: 0.1 });
561 const baseSearchArea: SearchArea = ss.getBaseSearchArea();
562 const searchArea: SearchArea = ss.getSearchArea();
563 t.deepEqual(baseSearchArea, { x: 0.5, y: 0.5, width: 0.5, height: 0.1 });
564 const combinedSearchArea: SearchArea = {
565 x: baseSearchArea.x + searchArea.x * baseSearchArea.width,
566 y: baseSearchArea.y + searchArea.y * baseSearchArea.height,
567 width: baseSearchArea.width * searchArea.width,
568 height: baseSearchArea.height * searchArea.height
569 };
570 t.deepEqual(
571 JSON.parse(ss.toJSONString()),
572 JSON.parse(
573 JSON.stringify({
574 ...baseJSONScanSettings,
575 symbologies: { [Barcode.Symbology.AZTEC]: new SymbologySettings({ enabled: true }) },
576 codeDuplicateFilter: 5,
577 maxNumberOfCodesPerFrame: 5,
578 searchArea: combinedSearchArea,
579 codeLocation1d: {
580 area: {
581 x: combinedSearchArea.x,
582 y: combinedSearchArea.y + (combinedSearchArea.height * 0.75) / 2,
583 width: combinedSearchArea.width,
584 height: combinedSearchArea.height * 0.25
585 }
586 },
587 codeLocation2d: { area: combinedSearchArea }
588 })
589 )
590 );
591});
592
593test("getProperty & setProperty", t => {
594 const ss: ScanSettings = new ScanSettings();
595 t.deepEqual(JSON.parse(ss.toJSONString()), JSON.parse(JSON.stringify(baseJSONScanSettings)));
596 t.deepEqual(ss.getProperty("2d_enabled"), -1);
597 ss.setProperty("2d_enabled", 0);
598 t.deepEqual(ss.getProperty("2d_enabled"), 0);
599 t.deepEqual(
600 JSON.parse(ss.toJSONString()),
601 JSON.parse(
602 JSON.stringify({
603 ...baseJSONScanSettings,
604 properties: { "2d_enabled": 0 }
605 })
606 )
607 );
608 ss.setProperty("force_2d_recognition", 1);
609 t.deepEqual(ss.getProperty("force_2d_recognition"), 1);
610 t.deepEqual(
611 JSON.parse(ss.toJSONString()),
612 JSON.parse(
613 JSON.stringify({
614 ...baseJSONScanSettings,
615 properties: { "2d_enabled": 0, force_2d_recognition: 1 }
616 })
617 )
618 );
619});