scandit-sdk
Version:
Scandit Barcode Scanner SDK for the Web
620 lines (596 loc) • 25.3 kB
text/typescript
/* 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 }
})
)
);
});