UNPKG

scandit-sdk

Version:

Scandit Barcode Scanner SDK for the Web

620 lines (596 loc) 25.3 kB
/* tslint:disable:no-implicit-dependencies no-any */ /** * ScanSettings tests */ import test from "ava"; import { Barcode, ScanSettings, SearchArea, SymbologySettings } from ".."; const baseJSONScanSettings: { symbologies: {}; codeDuplicateFilter: number; maxNumberOfCodesPerFrame: number; searchArea: SearchArea; gpuAcceleration: boolean; blurryRecognition: boolean; properties: {}; } = { symbologies: {}, codeDuplicateFilter: 0, maxNumberOfCodesPerFrame: 1, searchArea: new ScanSettings().getSearchArea(), gpuAcceleration: true, blurryRecognition: true, properties: {} }; test("constructor", t => { let ss: ScanSettings = new ScanSettings(); t.deepEqual((<any>ss).symbologySettings, new Map()); t.deepEqual((<any>ss).codeDuplicateFilter, 0); t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 1); t.deepEqual(ss.getSearchArea(), { height: 1, width: 1, x: 0, y: 0 }); t.deepEqual((<any>ss).gpuAcceleration, true); t.deepEqual((<any>ss).blurryRecognition, true); ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR }); t.deepEqual((<any>ss).symbologySettings, new Map([[Barcode.Symbology.QR, new SymbologySettings({ enabled: true })]])); t.deepEqual((<any>ss).codeDuplicateFilter, 0); t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 1); t.deepEqual(ss.getSearchArea(), { height: 1, width: 1, x: 0, y: 0 }); t.deepEqual((<any>ss).gpuAcceleration, true); t.deepEqual((<any>ss).blurryRecognition, true); ss = new ScanSettings({ enabledSymbologies: [Barcode.Symbology.QR] }); t.deepEqual((<any>ss).symbologySettings, new Map([[Barcode.Symbology.QR, new SymbologySettings({ enabled: true })]])); t.deepEqual((<any>ss).codeDuplicateFilter, 0); t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 1); t.deepEqual(ss.getSearchArea(), { height: 1, width: 1, x: 0, y: 0 }); t.deepEqual((<any>ss).gpuAcceleration, true); t.deepEqual((<any>ss).blurryRecognition, true); ss = new ScanSettings({ enabledSymbologies: new Set([Barcode.Symbology.QR]) }); t.deepEqual((<any>ss).symbologySettings, new Map([[Barcode.Symbology.QR, new SymbologySettings({ enabled: true })]])); t.deepEqual((<any>ss).codeDuplicateFilter, 0); t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 1); t.deepEqual(ss.getSearchArea(), { height: 1, width: 1, x: 0, y: 0 }); t.deepEqual((<any>ss).gpuAcceleration, true); t.deepEqual((<any>ss).blurryRecognition, true); ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR, codeDuplicateFilter: 10 }); t.deepEqual((<any>ss).symbologySettings, new Map([[Barcode.Symbology.QR, new SymbologySettings({ enabled: true })]])); t.deepEqual((<any>ss).codeDuplicateFilter, 10); t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 1); t.deepEqual(ss.getSearchArea(), { height: 1, width: 1, x: 0, y: 0 }); t.deepEqual((<any>ss).gpuAcceleration, true); t.deepEqual((<any>ss).blurryRecognition, true); ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR, maxNumberOfCodesPerFrame: 10 }); t.deepEqual((<any>ss).symbologySettings, new Map([[Barcode.Symbology.QR, new SymbologySettings({ enabled: true })]])); t.deepEqual((<any>ss).codeDuplicateFilter, 0); t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 10); t.deepEqual(ss.getSearchArea(), { height: 1, width: 1, x: 0, y: 0 }); t.deepEqual((<any>ss).gpuAcceleration, true); t.deepEqual((<any>ss).blurryRecognition, true); ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR, codeDuplicateFilter: 10, maxNumberOfCodesPerFrame: 10 }); t.deepEqual((<any>ss).symbologySettings, new Map([[Barcode.Symbology.QR, new SymbologySettings({ enabled: true })]])); t.deepEqual((<any>ss).codeDuplicateFilter, 10); t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 10); t.deepEqual(ss.getSearchArea(), { height: 1, width: 1, x: 0, y: 0 }); t.deepEqual((<any>ss).gpuAcceleration, true); t.deepEqual((<any>ss).blurryRecognition, true); ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR, codeDuplicateFilter: 10, maxNumberOfCodesPerFrame: 10, searchArea: { x: 0.5, y: 0.5, width: 0.5, height: 0.1 } }); t.deepEqual((<any>ss).symbologySettings, new Map([[Barcode.Symbology.QR, new SymbologySettings({ enabled: true })]])); t.deepEqual((<any>ss).codeDuplicateFilter, 10); t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 10); t.deepEqual(ss.getSearchArea(), { height: 0.1, width: 0.5, x: 0.5, y: 0.5 }); t.deepEqual((<any>ss).gpuAcceleration, true); t.deepEqual((<any>ss).blurryRecognition, true); ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR, codeDuplicateFilter: 10, maxNumberOfCodesPerFrame: 10, searchArea: { x: 0.5, y: 0.5, width: 0.5, height: 0.1 }, gpuAcceleration: false }); t.deepEqual((<any>ss).symbologySettings, new Map([[Barcode.Symbology.QR, new SymbologySettings({ enabled: true })]])); t.deepEqual((<any>ss).codeDuplicateFilter, 10); t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 10); t.deepEqual(ss.getSearchArea(), { height: 0.1, width: 0.5, x: 0.5, y: 0.5 }); t.deepEqual((<any>ss).gpuAcceleration, false); t.deepEqual((<any>ss).blurryRecognition, true); ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR, codeDuplicateFilter: 10, maxNumberOfCodesPerFrame: 10, searchArea: { x: 0.5, y: 0.5, width: 0.5, height: 0.1 }, gpuAcceleration: false, blurryRecognition: false }); t.deepEqual((<any>ss).symbologySettings, new Map([[Barcode.Symbology.QR, new SymbologySettings({ enabled: true })]])); t.deepEqual((<any>ss).codeDuplicateFilter, 10); t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 10); t.deepEqual(ss.getSearchArea(), { height: 0.1, width: 0.5, x: 0.5, y: 0.5 }); t.deepEqual((<any>ss).gpuAcceleration, false); t.deepEqual((<any>ss).blurryRecognition, false); }); test("constructor (strings)", t => { let ss: ScanSettings = new ScanSettings(); t.deepEqual((<any>ss).symbologySettings, new Map()); t.deepEqual((<any>ss).codeDuplicateFilter, 0); t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 1); t.deepEqual(ss.getSearchArea(), { height: 1, width: 1, x: 0, y: 0 }); t.deepEqual((<any>ss).gpuAcceleration, true); t.deepEqual((<any>ss).blurryRecognition, true); ss = new ScanSettings({ enabledSymbologies: <Barcode.Symbology>"qr" }); t.deepEqual((<any>ss).symbologySettings, new Map([[Barcode.Symbology.QR, new SymbologySettings({ enabled: true })]])); t.deepEqual((<any>ss).codeDuplicateFilter, 0); t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 1); t.deepEqual(ss.getSearchArea(), { height: 1, width: 1, x: 0, y: 0 }); t.deepEqual((<any>ss).gpuAcceleration, true); t.deepEqual((<any>ss).blurryRecognition, true); ss = new ScanSettings({ enabledSymbologies: <Barcode.Symbology[]>["qr"] }); t.deepEqual((<any>ss).symbologySettings, new Map([[Barcode.Symbology.QR, new SymbologySettings({ enabled: true })]])); t.deepEqual((<any>ss).codeDuplicateFilter, 0); t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 1); t.deepEqual(ss.getSearchArea(), { height: 1, width: 1, x: 0, y: 0 }); t.deepEqual((<any>ss).gpuAcceleration, true); t.deepEqual((<any>ss).blurryRecognition, true); ss = new ScanSettings({ enabledSymbologies: <Set<Barcode.Symbology>>new Set(["qr"]) }); t.deepEqual((<any>ss).symbologySettings, new Map([[Barcode.Symbology.QR, new SymbologySettings({ enabled: true })]])); t.deepEqual((<any>ss).codeDuplicateFilter, 0); t.deepEqual((<any>ss).maxNumberOfCodesPerFrame, 1); t.deepEqual(ss.getSearchArea(), { height: 1, width: 1, x: 0, y: 0 }); t.deepEqual((<any>ss).gpuAcceleration, true); t.deepEqual((<any>ss).blurryRecognition, true); t.throws( () => { return new ScanSettings({ enabledSymbologies: <Barcode.Symbology>(<unknown>"i_dont_exist") }); }, TypeError, "i_dont_exist" ); t.throws( () => { return new ScanSettings({ enabledSymbologies: <Barcode.Symbology[]>(<unknown>Array.from(["i_dont_exist"])) }); }, TypeError, "i_dont_exist" ); t.throws( () => { return new ScanSettings({ enabledSymbologies: <Set<Barcode.Symbology>>(<unknown>new Set(["i_dont_exist"])) }); }, TypeError, "i_dont_exist" ); }); test("getSymbologySettings", t => { let ss: ScanSettings = new ScanSettings(); t.deepEqual(ss.getSymbologySettings(Barcode.Symbology.QR), new SymbologySettings()); ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR }); t.deepEqual(ss.getSymbologySettings(Barcode.Symbology.QR), new SymbologySettings({ enabled: true })); ss = new ScanSettings(); ss.getSymbologySettings(Barcode.Symbology.QR).setColorInvertedEnabled(true); t.deepEqual(ss.getSymbologySettings(Barcode.Symbology.QR), new SymbologySettings({ colorInvertedEnabled: true })); }); test("getSymbologySettings (strings)", t => { let ss: ScanSettings = new ScanSettings(); t.throws( () => { ss.getSymbologySettings(<Barcode.Symbology>"i_dont_exist"); }, TypeError, "i_dont_exist" ); t.deepEqual(ss.getSymbologySettings(<Barcode.Symbology>"qr"), new SymbologySettings()); ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR }); t.deepEqual(ss.getSymbologySettings(<Barcode.Symbology>"qr"), new SymbologySettings({ enabled: true })); ss = new ScanSettings(); ss.getSymbologySettings(Barcode.Symbology.QR).setColorInvertedEnabled(true); t.deepEqual(ss.getSymbologySettings(<Barcode.Symbology>"qr"), new SymbologySettings({ colorInvertedEnabled: true })); }); test("isSymbologyEnabled & enableSymbologies & disableSymbologies", t => { let ss: ScanSettings = new ScanSettings(); t.false(ss.isSymbologyEnabled(Barcode.Symbology.QR)); ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR }); t.true(ss.isSymbologyEnabled(Barcode.Symbology.QR)); // Set ss = new ScanSettings(); ss.enableSymbologies(new Set([Barcode.Symbology.QR])); t.false(ss.isSymbologyEnabled(Barcode.Symbology.CODE128)); t.false(ss.isSymbologyEnabled(Barcode.Symbology.EAN13)); t.true(ss.isSymbologyEnabled(Barcode.Symbology.QR)); ss.enableSymbologies(new Set([Barcode.Symbology.CODE128, Barcode.Symbology.EAN13])); t.true(ss.isSymbologyEnabled(Barcode.Symbology.CODE128)); t.true(ss.isSymbologyEnabled(Barcode.Symbology.EAN13)); t.true(ss.isSymbologyEnabled(Barcode.Symbology.QR)); ss.disableSymbologies(new Set([Barcode.Symbology.QR])); t.true(ss.isSymbologyEnabled(Barcode.Symbology.CODE128)); t.true(ss.isSymbologyEnabled(Barcode.Symbology.EAN13)); t.false(ss.isSymbologyEnabled(Barcode.Symbology.QR)); ss.disableSymbologies(new Set([Barcode.Symbology.CODE128, Barcode.Symbology.EAN13])); t.false(ss.isSymbologyEnabled(Barcode.Symbology.CODE128)); t.false(ss.isSymbologyEnabled(Barcode.Symbology.EAN13)); t.false(ss.isSymbologyEnabled(Barcode.Symbology.QR)); // Array ss = new ScanSettings(); ss.enableSymbologies([Barcode.Symbology.QR]); t.false(ss.isSymbologyEnabled(Barcode.Symbology.CODE128)); t.false(ss.isSymbologyEnabled(Barcode.Symbology.EAN13)); t.true(ss.isSymbologyEnabled(Barcode.Symbology.QR)); ss.enableSymbologies([Barcode.Symbology.CODE128, Barcode.Symbology.EAN13]); t.true(ss.isSymbologyEnabled(Barcode.Symbology.CODE128)); t.true(ss.isSymbologyEnabled(Barcode.Symbology.EAN13)); t.true(ss.isSymbologyEnabled(Barcode.Symbology.QR)); ss.disableSymbologies([Barcode.Symbology.QR]); t.true(ss.isSymbologyEnabled(Barcode.Symbology.CODE128)); t.true(ss.isSymbologyEnabled(Barcode.Symbology.EAN13)); t.false(ss.isSymbologyEnabled(Barcode.Symbology.QR)); ss.disableSymbologies([Barcode.Symbology.CODE128, Barcode.Symbology.EAN13]); t.false(ss.isSymbologyEnabled(Barcode.Symbology.CODE128)); t.false(ss.isSymbologyEnabled(Barcode.Symbology.EAN13)); t.false(ss.isSymbologyEnabled(Barcode.Symbology.QR)); // Single ss = new ScanSettings(); ss.enableSymbologies(Barcode.Symbology.QR); t.false(ss.isSymbologyEnabled(Barcode.Symbology.CODE128)); t.true(ss.isSymbologyEnabled(Barcode.Symbology.QR)); ss.enableSymbologies(Barcode.Symbology.CODE128); t.true(ss.isSymbologyEnabled(Barcode.Symbology.CODE128)); t.true(ss.isSymbologyEnabled(Barcode.Symbology.QR)); ss.disableSymbologies(Barcode.Symbology.QR); t.true(ss.isSymbologyEnabled(Barcode.Symbology.CODE128)); t.false(ss.isSymbologyEnabled(Barcode.Symbology.QR)); ss.disableSymbologies(Barcode.Symbology.CODE128); t.false(ss.isSymbologyEnabled(Barcode.Symbology.CODE128)); t.false(ss.isSymbologyEnabled(Barcode.Symbology.QR)); }); test("isSymbologyEnabled & enableSymbologies & disableSymbologies (strings)", t => { let ss: ScanSettings = new ScanSettings(); t.false(ss.isSymbologyEnabled(<Barcode.Symbology>"qr")); ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR }); t.true(ss.isSymbologyEnabled(<Barcode.Symbology>"qr")); ss = new ScanSettings(); t.throws( () => { ss.enableSymbologies(<Barcode.Symbology>"i_dont_exist"); }, TypeError, "i_dont_exist" ); t.deepEqual((<any>ss).symbologySettings, new Map()); t.throws( () => { ss.enableSymbologies(<Barcode.Symbology[]>(<unknown>Array.from(["i_dont_exist"]))); }, TypeError, "i_dont_exist" ); t.deepEqual((<any>ss).symbologySettings, new Map()); t.throws( () => { ss.enableSymbologies(<Set<Barcode.Symbology>>(<unknown>new Set(["i_dont_exist"]))); }, TypeError, "i_dont_exist" ); t.deepEqual((<any>ss).symbologySettings, new Map()); // Set ss = new ScanSettings(); ss.enableSymbologies(<Set<Barcode.Symbology>>new Set(["qr"])); t.false(ss.isSymbologyEnabled(Barcode.Symbology.CODE128)); t.false(ss.isSymbologyEnabled(Barcode.Symbology.EAN13)); t.true(ss.isSymbologyEnabled(Barcode.Symbology.QR)); ss.enableSymbologies(<Set<Barcode.Symbology>>new Set(["code128", "ean13"])); t.true(ss.isSymbologyEnabled(Barcode.Symbology.CODE128)); t.true(ss.isSymbologyEnabled(Barcode.Symbology.EAN13)); t.true(ss.isSymbologyEnabled(Barcode.Symbology.QR)); ss.disableSymbologies(<Set<Barcode.Symbology>>new Set(["qr"])); t.true(ss.isSymbologyEnabled(Barcode.Symbology.CODE128)); t.true(ss.isSymbologyEnabled(Barcode.Symbology.EAN13)); t.false(ss.isSymbologyEnabled(Barcode.Symbology.QR)); ss.disableSymbologies(<Set<Barcode.Symbology>>new Set(["code128", "ean13"])); t.false(ss.isSymbologyEnabled(Barcode.Symbology.CODE128)); t.false(ss.isSymbologyEnabled(Barcode.Symbology.EAN13)); t.false(ss.isSymbologyEnabled(Barcode.Symbology.QR)); // Array ss = new ScanSettings(); ss.enableSymbologies(<Barcode.Symbology[]>["qr"]); t.false(ss.isSymbologyEnabled(Barcode.Symbology.CODE128)); t.false(ss.isSymbologyEnabled(Barcode.Symbology.EAN13)); t.true(ss.isSymbologyEnabled(Barcode.Symbology.QR)); ss.enableSymbologies(<Barcode.Symbology[]>["code128", "ean13"]); t.true(ss.isSymbologyEnabled(Barcode.Symbology.CODE128)); t.true(ss.isSymbologyEnabled(Barcode.Symbology.EAN13)); t.true(ss.isSymbologyEnabled(Barcode.Symbology.QR)); ss.disableSymbologies(<Barcode.Symbology[]>["qr"]); t.true(ss.isSymbologyEnabled(Barcode.Symbology.CODE128)); t.true(ss.isSymbologyEnabled(Barcode.Symbology.EAN13)); t.false(ss.isSymbologyEnabled(Barcode.Symbology.QR)); ss.disableSymbologies(<Barcode.Symbology[]>["code128", "ean13"]); t.false(ss.isSymbologyEnabled(Barcode.Symbology.CODE128)); t.false(ss.isSymbologyEnabled(Barcode.Symbology.EAN13)); t.false(ss.isSymbologyEnabled(Barcode.Symbology.QR)); // Single ss = new ScanSettings(); ss.enableSymbologies(<Barcode.Symbology>"qr"); t.false(ss.isSymbologyEnabled(Barcode.Symbology.CODE128)); t.true(ss.isSymbologyEnabled(Barcode.Symbology.QR)); ss.enableSymbologies(<Barcode.Symbology>"code128"); t.true(ss.isSymbologyEnabled(Barcode.Symbology.CODE128)); t.true(ss.isSymbologyEnabled(Barcode.Symbology.QR)); ss.disableSymbologies(<Barcode.Symbology>"qr"); t.true(ss.isSymbologyEnabled(Barcode.Symbology.CODE128)); t.false(ss.isSymbologyEnabled(Barcode.Symbology.QR)); ss.disableSymbologies(<Barcode.Symbology>"code128"); t.false(ss.isSymbologyEnabled(Barcode.Symbology.CODE128)); t.false(ss.isSymbologyEnabled(Barcode.Symbology.QR)); }); test("getCodeDuplicateFilter & setCodeDuplicateFilter", t => { const ss: ScanSettings = new ScanSettings(); t.deepEqual(ss.getCodeDuplicateFilter(), 0); ss.setCodeDuplicateFilter(100); t.deepEqual(ss.getCodeDuplicateFilter(), 100); }); test("getMaxNumberOfCodesPerFrame & setMaxNumberOfCodesPerFrame", t => { const ss: ScanSettings = new ScanSettings(); t.deepEqual(ss.getMaxNumberOfCodesPerFrame(), 1); ss.setMaxNumberOfCodesPerFrame(10); t.deepEqual(ss.getMaxNumberOfCodesPerFrame(), 10); }); test("getSearchArea & setSearchArea", t => { const ss: ScanSettings = new ScanSettings(); t.deepEqual(ss.getSearchArea(), { height: 1, width: 1, x: 0, y: 0 }); ss.setSearchArea({ x: 0.5, y: 0.5, width: 0.5, height: 0.1 }); t.deepEqual(ss.getSearchArea(), { height: 0.1, width: 0.5, x: 0.5, y: 0.5 }); }); test("isGpuAccelerationEnabled & setGpuAccelerationEnabled", t => { const ss: ScanSettings = new ScanSettings(); t.deepEqual(ss.isGpuAccelerationEnabled(), true); ss.setGpuAccelerationEnabled(false); t.deepEqual(ss.isGpuAccelerationEnabled(), false); ss.setGpuAccelerationEnabled(true); t.deepEqual(ss.isGpuAccelerationEnabled(), true); }); test("isBlurryRecognitionEnabled & setBlurryRecognitionEnabled", t => { const ss: ScanSettings = new ScanSettings(); t.deepEqual(ss.isBlurryRecognitionEnabled(), true); ss.setBlurryRecognitionEnabled(false); t.deepEqual(ss.isBlurryRecognitionEnabled(), false); ss.setBlurryRecognitionEnabled(true); t.deepEqual(ss.isBlurryRecognitionEnabled(), true); }); // tslint:disable-next-line:max-func-body-length test("toJSONString", t => { let ss: ScanSettings = new ScanSettings(); t.deepEqual(JSON.parse(ss.toJSONString()), JSON.parse(JSON.stringify(baseJSONScanSettings))); ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR }); t.deepEqual( JSON.parse(ss.toJSONString()), JSON.parse( JSON.stringify({ ...baseJSONScanSettings, symbologies: { [Barcode.Symbology.QR]: new SymbologySettings({ enabled: true }) } }) ) ); ss = new ScanSettings({ enabledSymbologies: [Barcode.Symbology.QR] }); t.deepEqual( JSON.parse(ss.toJSONString()), JSON.parse( JSON.stringify({ ...baseJSONScanSettings, symbologies: { [Barcode.Symbology.QR]: new SymbologySettings({ enabled: true }) } }) ) ); ss = new ScanSettings({ enabledSymbologies: new Set([Barcode.Symbology.QR]) }); t.deepEqual( JSON.parse(ss.toJSONString()), JSON.parse( JSON.stringify({ ...baseJSONScanSettings, symbologies: { [Barcode.Symbology.QR]: new SymbologySettings({ enabled: true }) } }) ) ); ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR, codeDuplicateFilter: 10 }); t.deepEqual( JSON.parse(ss.toJSONString()), JSON.parse( JSON.stringify({ ...baseJSONScanSettings, symbologies: { [Barcode.Symbology.QR]: new SymbologySettings({ enabled: true }) }, codeDuplicateFilter: 10 }) ) ); ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR, maxNumberOfCodesPerFrame: 10 }); t.deepEqual( JSON.parse(ss.toJSONString()), JSON.parse( JSON.stringify({ ...baseJSONScanSettings, symbologies: { [Barcode.Symbology.QR]: new SymbologySettings({ enabled: true }) }, maxNumberOfCodesPerFrame: 10 }) ) ); ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR, codeDuplicateFilter: 10, maxNumberOfCodesPerFrame: 10 }); t.deepEqual( JSON.parse(ss.toJSONString()), JSON.parse( JSON.stringify({ ...baseJSONScanSettings, symbologies: { [Barcode.Symbology.QR]: new SymbologySettings({ enabled: true }) }, codeDuplicateFilter: 10, maxNumberOfCodesPerFrame: 10 }) ) ); ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR, codeDuplicateFilter: 10, maxNumberOfCodesPerFrame: 10, gpuAcceleration: false, blurryRecognition: true }); t.deepEqual( JSON.parse(ss.toJSONString()), JSON.parse( JSON.stringify({ ...baseJSONScanSettings, symbologies: { [Barcode.Symbology.QR]: new SymbologySettings({ enabled: true }) }, codeDuplicateFilter: 10, maxNumberOfCodesPerFrame: 10, gpuAcceleration: false, blurryRecognition: true }) ) ); ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR, codeDuplicateFilter: 10, maxNumberOfCodesPerFrame: 10, gpuAcceleration: false, blurryRecognition: false }); t.deepEqual( JSON.parse(ss.toJSONString()), JSON.parse( JSON.stringify({ ...baseJSONScanSettings, symbologies: { [Barcode.Symbology.QR]: new SymbologySettings({ enabled: true }) }, codeDuplicateFilter: 10, maxNumberOfCodesPerFrame: 10, gpuAcceleration: false, blurryRecognition: false }) ) ); ss = new ScanSettings({ enabledSymbologies: Barcode.Symbology.QR, codeDuplicateFilter: 10, maxNumberOfCodesPerFrame: 10, searchArea: { x: 0.5, y: 0.5, width: 0.5, height: 0.1 }, gpuAcceleration: false, blurryRecognition: false }); t.deepEqual( JSON.parse(ss.toJSONString()), JSON.parse( JSON.stringify({ ...baseJSONScanSettings, symbologies: { [Barcode.Symbology.QR]: new SymbologySettings({ enabled: true }) }, codeDuplicateFilter: 10, maxNumberOfCodesPerFrame: 10, searchArea: ss.getSearchArea(), codeLocation1d: { area: { x: ss.getSearchArea().x, y: ss.getSearchArea().y + (ss.getSearchArea().height * 0.75) / 2, width: ss.getSearchArea().width, height: ss.getSearchArea().height * 0.25 } }, codeLocation2d: { area: ss.getSearchArea() }, gpuAcceleration: false, blurryRecognition: false }) ) ); }); test("getBaseSearchArea & setBaseSearchArea", t => { const ss: ScanSettings = new ScanSettings({ enabledSymbologies: Barcode.Symbology.AZTEC, codeDuplicateFilter: 5, maxNumberOfCodesPerFrame: 5, searchArea: { x: 0.5, y: 0.5, width: 0.5, height: 0.1 } }); t.deepEqual(ss.getBaseSearchArea(), { height: 1, width: 1, x: 0, y: 0 }); t.deepEqual( JSON.parse(ss.toJSONString()), JSON.parse( JSON.stringify({ ...baseJSONScanSettings, symbologies: { [Barcode.Symbology.AZTEC]: new SymbologySettings({ enabled: true }) }, codeDuplicateFilter: 5, maxNumberOfCodesPerFrame: 5, searchArea: ss.getSearchArea(), codeLocation1d: { area: { x: ss.getSearchArea().x, y: ss.getSearchArea().y + (ss.getSearchArea().height * 0.75) / 2, width: ss.getSearchArea().width, height: ss.getSearchArea().height * 0.25 } }, codeLocation2d: { area: ss.getSearchArea() } }) ) ); ss.setBaseSearchArea({ x: 0.5, y: 0.5, width: 0.5, height: 0.1 }); const baseSearchArea: SearchArea = ss.getBaseSearchArea(); const searchArea: SearchArea = ss.getSearchArea(); t.deepEqual(baseSearchArea, { x: 0.5, y: 0.5, width: 0.5, height: 0.1 }); const combinedSearchArea: SearchArea = { x: baseSearchArea.x + searchArea.x * baseSearchArea.width, y: baseSearchArea.y + searchArea.y * baseSearchArea.height, width: baseSearchArea.width * searchArea.width, height: baseSearchArea.height * searchArea.height }; t.deepEqual( JSON.parse(ss.toJSONString()), JSON.parse( JSON.stringify({ ...baseJSONScanSettings, symbologies: { [Barcode.Symbology.AZTEC]: new SymbologySettings({ enabled: true }) }, codeDuplicateFilter: 5, maxNumberOfCodesPerFrame: 5, searchArea: combinedSearchArea, codeLocation1d: { area: { x: combinedSearchArea.x, y: combinedSearchArea.y + (combinedSearchArea.height * 0.75) / 2, width: combinedSearchArea.width, height: combinedSearchArea.height * 0.25 } }, codeLocation2d: { area: combinedSearchArea } }) ) ); }); test("getProperty & setProperty", t => { const ss: ScanSettings = new ScanSettings(); t.deepEqual(JSON.parse(ss.toJSONString()), JSON.parse(JSON.stringify(baseJSONScanSettings))); t.deepEqual(ss.getProperty("2d_enabled"), -1); ss.setProperty("2d_enabled", 0); t.deepEqual(ss.getProperty("2d_enabled"), 0); t.deepEqual( JSON.parse(ss.toJSONString()), JSON.parse( JSON.stringify({ ...baseJSONScanSettings, properties: { "2d_enabled": 0 } }) ) ); ss.setProperty("force_2d_recognition", 1); t.deepEqual(ss.getProperty("force_2d_recognition"), 1); t.deepEqual( JSON.parse(ss.toJSONString()), JSON.parse( JSON.stringify({ ...baseJSONScanSettings, properties: { "2d_enabled": 0, force_2d_recognition: 1 } }) ) ); });