UNPKG

scandit-sdk

Version:

Scandit Barcode Scanner SDK for the Web

1,097 lines (1,096 loc) 86.1 kB
"use strict"; /* tslint:disable:no-implicit-dependencies no-any */ /** * BarcodePicker tests */ var _this = this; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var ava_1 = tslib_1.__importDefault(require("ava")); var sinon = tslib_1.__importStar(require("sinon")); var webworker_threads_1 = require("webworker-threads"); var __1 = require(".."); var barcodePickerCameraManager_1 = require("./barcodePickerCameraManager"); HTMLVideoElement.prototype.load = function () { return; }; HTMLVideoElement.prototype.play = function () { Object.defineProperty(this, "videoWidth", { value: 4 }); Object.defineProperty(this, "videoHeight", { value: 4 }); this.currentTime = 1; this.dispatchEvent(new Event("loadstart")); this.dispatchEvent(new Event("loadeddata")); return Promise.resolve(); }; var fakeCamera1 = { deviceId: "1", groupId: "1", kind: "videoinput", label: "Fake Camera Device (back)", toJSON: function () { return this; } }; var fakeCamera2 = { deviceId: "2", groupId: "1", kind: "videoinput", label: "Fake Camera Device (front)", toJSON: function () { return this; } }; var fakeCamera1Object = { deviceId: fakeCamera1.deviceId, label: fakeCamera1.label, cameraType: __1.Camera.Type.BACK, currentResolution: { width: 4, height: 4 } }; var fakeCamera2Object = { deviceId: fakeCamera2.deviceId, label: fakeCamera2.label, cameraType: __1.Camera.Type.FRONT, currentResolution: { width: 4, height: 4 } }; var sampleBarcode = { symbology: __1.Barcode.Symbology.QR, compositeFlag: __1.Barcode.CompositeFlag.NONE, isGs1DataCarrier: false, encodingArray: [], location: { topLeft: { x: 0, y: 0 }, topRight: { x: 1, y: 0 }, bottomRight: { x: 1, y: 1 }, bottomLeft: { x: 0, y: 1 } }, data: "", rawData: new Uint8Array() }; function fakePartialCompatibleBrowser() { __1.BrowserHelper.checkBrowserCompatibility = function () { return { fullSupport: false, scannerSupport: true, missingFeatures: [__1.BrowserCompatibility.Feature.MEDIA_DEVICES] }; }; } function fakeFullCompatibleBrowser(configureLibrary) { if (configureLibrary === void 0) { configureLibrary = true; } return tslib_1.__awaiter(this, void 0, void 0, function () { var mediaStreamTrack; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: mediaStreamTrack = { stop: sinon.spy(), addEventListener: sinon.spy(), getSettings: function () { return { width: 4, height: 4, deviceId: "1", facingMode: "environment" }; } }; Object.defineProperty(navigator, "mediaDevices", { value: { getUserMedia: function () { return Promise.resolve({ getTracks: function () { return [mediaStreamTrack]; }, getVideoTracks: function () { return [mediaStreamTrack]; } }); } }, configurable: true }); navigator.enumerateDevices = function () { return Promise.resolve([fakeCamera1, fakeCamera2]); }; URL.createObjectURL = sinon.stub(); __1.BrowserHelper.checkBrowserCompatibility = function () { return { fullSupport: true, scannerSupport: true, missingFeatures: [] }; }; if (!configureLibrary) return [3 /*break*/, 2]; return [4 /*yield*/, __1.configure("#".repeat(64))]; case 1: _a.sent(); _a.label = 2; case 2: return [2 /*return*/]; } }); }); } function wait(ms) { return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { return [2 /*return*/, new Promise(function (resolve) { setTimeout(resolve, ms); })]; }); }); } function prepareBarcodePickerForEvents() { return tslib_1.__awaiter(this, void 0, void 0, function () { var s, imageSettings, barcodePicker; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: s = new __1.Scanner(); imageSettings = { width: 2, height: 2, format: __1.ImageSettings.Format.GRAY_8U }; s.applyImageSettings(imageSettings); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false, scanner: s, playSoundOnScan: true, vibrateOnScan: true })]; case 1: barcodePicker = _a.sent(); sinon.stub(barcodePicker.barcodePickerGui, "getVideoImageData").returns(new Uint8ClampedArray(4)); s.engineWorkerOnMessage({ data: ["status", "ready"] }); sinon.stub(s, "processImage").callsFake(function () { return Promise.resolve(new __1.ScanResult([], new Uint8ClampedArray(4), imageSettings)); }); return [2 /*return*/, barcodePicker]; } }); }); } global.Worker = webworker_threads_1.Worker; global.URL = { createObjectURL: function () { return __1.engineWorkerFunction; } }; ava_1.default.serial("constructor & destroy", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var error, barcodePicker; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, t.throwsAsync(__1.BarcodePicker.create(document.createElement("div")))]; case 1: error = _a.sent(); t.is(error.name, "UnsupportedBrowserError"); return [4 /*yield*/, fakeFullCompatibleBrowser(false)]; case 2: _a.sent(); return [4 /*yield*/, t.throwsAsync(__1.BarcodePicker.create(document.createElement("div")))]; case 3: error = _a.sent(); t.is(error.name, "LibraryNotConfiguredError"); return [4 /*yield*/, fakeFullCompatibleBrowser()]; case 4: _a.sent(); return [4 /*yield*/, t.throwsAsync(__1.BarcodePicker.create("wrong-argument"))]; case 5: error = _a.sent(); t.is(error.name, "NoOriginElementError"); return [4 /*yield*/, t.throwsAsync(__1.BarcodePicker.create({}))]; case 6: error = _a.sent(); t.is(error.name, "NoOriginElementError"); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { singleImageMode: { desktop: { always: true, allowFallback: true }, mobile: { always: true, allowFallback: true } } })]; case 7: barcodePicker = _a.sent(); barcodePicker.destroy(); fakePartialCompatibleBrowser(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { singleImageMode: { desktop: { always: false, allowFallback: true }, mobile: { always: false, allowFallback: true } } })]; case 8: barcodePicker = _a.sent(); barcodePicker.destroy(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"))]; case 9: barcodePicker = _a.sent(); barcodePicker.destroy(false); barcodePicker.getScanner().destroy(); return [4 /*yield*/, t.throwsAsync(__1.BarcodePicker.create(document.createElement("div"), { singleImageMode: { desktop: { always: false, allowFallback: false }, mobile: { always: false, allowFallback: false } } }))]; case 10: error = _a.sent(); t.is(error.name, "UnsupportedBrowserError"); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { targetScanningFPS: -1 })]; case 11: barcodePicker = _a.sent(); barcodePicker.destroy(); t.pass(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { scanner: new __1.Scanner() })]; case 12: barcodePicker = _a.sent(); barcodePicker.destroy(); t.pass(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false })]; case 13: barcodePicker = _a.sent(); barcodePicker.destroy(); t.pass(); __1.BrowserHelper.userAgentInfo.setUA("Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) " + "AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1"); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"))]; case 14: barcodePicker = _a.sent(); barcodePicker.destroy(); t.pass(); return [2 /*return*/]; } }); }); }); ava_1.default.serial("constructor & destroy (with fake camera)", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var s, barcodePicker; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()]; case 1: _a.sent(); s = new __1.Scanner(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { scanner: s })]; case 2: barcodePicker = _a.sent(); s.engineWorkerOnMessage({ data: ["status", "ready"] }); barcodePicker.destroy(); t.pass(); return [2 /*return*/]; } }); }); }); ava_1.default.serial("constructor interaction options", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var setInteractionOptionsSpy, barcodePicker; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()]; case 1: _a.sent(); setInteractionOptionsSpy = sinon.spy(barcodePickerCameraManager_1.BarcodePickerCameraManager.prototype, "setInteractionOptions"); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false })]; case 2: barcodePicker = _a.sent(); t.is(setInteractionOptionsSpy.callCount, 1); t.deepEqual(setInteractionOptionsSpy.getCall(0).args, [true, true, true, true]); barcodePicker.destroy(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false, enableCameraSwitcher: false, enableTorchToggle: false, enableTapToFocus: false, enablePinchToZoom: false })]; case 3: barcodePicker = _a.sent(); t.is(setInteractionOptionsSpy.callCount, 2); t.deepEqual(setInteractionOptionsSpy.getCall(1).args, [false, false, false, false]); barcodePicker.destroy(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false, enableCameraSwitcher: false, enableTorchToggle: true, enableTapToFocus: false, enablePinchToZoom: true })]; case 4: barcodePicker = _a.sent(); t.is(setInteractionOptionsSpy.callCount, 3); t.deepEqual(setInteractionOptionsSpy.getCall(2).args, [false, true, false, true]); barcodePicker.destroy(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false, enableCameraSwitcher: true, enableTorchToggle: false, enableTapToFocus: true, enablePinchToZoom: false })]; case 5: barcodePicker = _a.sent(); t.is(setInteractionOptionsSpy.callCount, 4); t.deepEqual(setInteractionOptionsSpy.getCall(3).args, [true, false, true, false]); barcodePicker.destroy(); return [2 /*return*/]; } }); }); }); ava_1.default.serial("constructor scanningPaused & isScanningPaused & pauseScanning & resumeScanning (with fake camera)", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var s, barcodePicker; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()]; case 1: _a.sent(); s = new __1.Scanner(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { scanner: s })]; case 2: barcodePicker = _a.sent(); t.false(barcodePicker.isScanningPaused()); return [4 /*yield*/, barcodePicker.resumeScanning()]; case 3: _a.sent(); t.false(barcodePicker.isScanningPaused()); s.engineWorkerOnMessage({ data: ["status", "ready"] }); barcodePicker.pauseScanning(); t.true(barcodePicker.isScanningPaused()); return [4 /*yield*/, barcodePicker.resumeScanning()]; case 4: _a.sent(); t.false(barcodePicker.isScanningPaused()); barcodePicker.destroy(false); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { scanner: s, scanningPaused: true })]; case 5: barcodePicker = _a.sent(); t.true(barcodePicker.isScanningPaused()); return [4 /*yield*/, barcodePicker.resumeScanning()]; case 6: _a.sent(); t.false(barcodePicker.isScanningPaused()); return [2 /*return*/]; } }); }); }); ava_1.default.serial("accessCamera & getActiveCamera & setActiveCamera (with fake camera)", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var barcodePicker; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()]; case 1: _a.sent(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false })]; case 2: barcodePicker = _a.sent(); t.is(barcodePicker.getActiveCamera(), undefined); return [4 /*yield*/, barcodePicker.accessCamera()]; case 3: _a.sent(); t.deepEqual(barcodePicker.getActiveCamera(), fakeCamera1Object); barcodePicker.pauseScanning(); t.deepEqual(barcodePicker.getActiveCamera(), fakeCamera1Object); barcodePicker.pauseScanning(true); t.is(barcodePicker.getActiveCamera(), undefined); return [4 /*yield*/, barcodePicker.resumeScanning()]; case 4: _a.sent(); t.deepEqual(barcodePicker.getActiveCamera(), fakeCamera1Object); return [4 /*yield*/, barcodePicker.setActiveCamera(fakeCamera2Object)]; case 5: _a.sent(); t.deepEqual(barcodePicker.getActiveCamera(), fakeCamera2Object); return [4 /*yield*/, barcodePicker.setActiveCamera()]; case 6: _a.sent(); t.deepEqual(barcodePicker.getActiveCamera(), fakeCamera1Object); barcodePicker.destroy(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"))]; case 7: barcodePicker = _a.sent(); t.deepEqual(barcodePicker.getActiveCamera(), fakeCamera1Object); return [4 /*yield*/, barcodePicker.accessCamera()]; case 8: _a.sent(); t.deepEqual(barcodePicker.getActiveCamera(), fakeCamera1Object); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false })]; case 9: barcodePicker = _a.sent(); return [4 /*yield*/, barcodePicker.setActiveCamera(fakeCamera2Object)]; case 10: _a.sent(); t.deepEqual(barcodePicker.getActiveCamera(), undefined); return [4 /*yield*/, barcodePicker.accessCamera()]; case 11: _a.sent(); t.deepEqual(barcodePicker.getActiveCamera(), fakeCamera2Object); __1.BrowserHelper.userAgentInfo.setUA("Mozilla/5.0 (Windows NT 10.0; Win64; x64) " + "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36"); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"))]; case 12: barcodePicker = _a.sent(); t.deepEqual(barcodePicker.getActiveCamera(), fakeCamera1Object); return [4 /*yield*/, barcodePicker.accessCamera()]; case 13: _a.sent(); t.deepEqual(barcodePicker.getActiveCamera(), fakeCamera1Object); return [2 /*return*/]; } }); }); }); ava_1.default.serial("applyCameraSettings (with fake camera)", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var barcodePicker, cs, setSelectedCameraSettingsSpy, applyCameraSettingsSpy; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()]; case 1: _a.sent(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false })]; case 2: barcodePicker = _a.sent(); cs = { resolutionPreference: __1.CameraSettings.ResolutionPreference.FULL_HD }; setSelectedCameraSettingsSpy = sinon.spy(barcodePicker.cameraManager, "setSelectedCameraSettings"); applyCameraSettingsSpy = sinon.spy(barcodePicker.cameraManager, "applyCameraSettings"); t.is(setSelectedCameraSettingsSpy.callCount, 0); t.is(applyCameraSettingsSpy.callCount, 0); return [4 /*yield*/, barcodePicker.applyCameraSettings(cs)]; case 3: _a.sent(); t.is(barcodePicker.getActiveCamera(), undefined); t.is(setSelectedCameraSettingsSpy.callCount, 1); t.is(applyCameraSettingsSpy.callCount, 0); t.deepEqual(setSelectedCameraSettingsSpy.getCall(0).args, [cs]); return [4 /*yield*/, barcodePicker.applyCameraSettings()]; case 4: _a.sent(); t.is(barcodePicker.getActiveCamera(), undefined); t.is(setSelectedCameraSettingsSpy.callCount, 2); t.deepEqual(setSelectedCameraSettingsSpy.getCall(1).args, [undefined]); return [4 /*yield*/, barcodePicker.accessCamera()]; case 5: _a.sent(); return [4 /*yield*/, barcodePicker.applyCameraSettings(cs)]; case 6: _a.sent(); t.is(applyCameraSettingsSpy.callCount, 1); t.deepEqual(applyCameraSettingsSpy.getCall(0).args, [cs]); barcodePicker.destroy(); return [2 /*return*/]; } }); }); }); ava_1.default.serial("constructor scanSettings & applyScanSettings", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var s, barcodePicker, ss, applyScanSettingsSpy; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()]; case 1: _a.sent(); s = new __1.Scanner(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false, scanner: s })]; case 2: barcodePicker = _a.sent(); ss = new __1.ScanSettings({ enabledSymbologies: __1.Barcode.Symbology.QR, codeDuplicateFilter: 10, maxNumberOfCodesPerFrame: 10, searchArea: { x: 0.5, y: 0.5, width: 0.5, height: 0.1 } }); applyScanSettingsSpy = sinon.spy(s, "applyScanSettings"); t.is(applyScanSettingsSpy.callCount, 0); barcodePicker.applyScanSettings(ss); t.is(applyScanSettingsSpy.callCount, 1); t.deepEqual(applyScanSettingsSpy.getCall(0).args, [ss]); barcodePicker.destroy(false); applyScanSettingsSpy.resetHistory(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false, scanner: s, scanSettings: ss })]; case 3: barcodePicker = _a.sent(); t.deepEqual(applyScanSettingsSpy.getCall(0).args, [ss]); barcodePicker.destroy(); return [2 /*return*/]; } }); }); }); ava_1.default.serial("isVisible & setVisible", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var barcodePicker; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()]; case 1: _a.sent(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false })]; case 2: barcodePicker = _a.sent(); t.true(barcodePicker.isVisible()); barcodePicker.setVisible(false); t.false(barcodePicker.isVisible()); barcodePicker.setVisible(true); t.true(barcodePicker.isVisible()); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false, visible: false })]; case 3: barcodePicker = _a.sent(); t.false(barcodePicker.isVisible()); barcodePicker.setVisible(true); t.true(barcodePicker.isVisible()); barcodePicker.destroy(); return [2 /*return*/]; } }); }); }); ava_1.default.serial("isMirrorImageEnabled & setMirrorImageEnabled", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var barcodePicker; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()]; case 1: _a.sent(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false })]; case 2: barcodePicker = _a.sent(); t.false(barcodePicker.isMirrorImageEnabled()); barcodePicker.setMirrorImageEnabled(true); t.false(barcodePicker.isMirrorImageEnabled()); // No camera has been accessed yet return [4 /*yield*/, barcodePicker.accessCamera()]; case 3: _a.sent(); t.false(barcodePicker.isMirrorImageEnabled()); barcodePicker.setMirrorImageEnabled(true); t.true(barcodePicker.isMirrorImageEnabled()); return [4 /*yield*/, barcodePicker.setActiveCamera(fakeCamera2Object)]; case 4: _a.sent(); t.true(barcodePicker.isMirrorImageEnabled()); // Front camera barcodePicker.setMirrorImageEnabled(false); t.false(barcodePicker.isMirrorImageEnabled()); return [4 /*yield*/, barcodePicker.setActiveCamera()]; case 5: _a.sent(); t.true(barcodePicker.isMirrorImageEnabled()); return [4 /*yield*/, barcodePicker.setActiveCamera(fakeCamera2Object)]; case 6: _a.sent(); t.false(barcodePicker.isMirrorImageEnabled()); barcodePicker.destroy(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { camera: fakeCamera2Object })]; case 7: barcodePicker = _a.sent(); t.true(barcodePicker.isMirrorImageEnabled()); barcodePicker.setMirrorImageEnabled(false); t.false(barcodePicker.isMirrorImageEnabled()); barcodePicker.destroy(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { camera: fakeCamera2Object })]; case 8: barcodePicker = _a.sent(); t.true(barcodePicker.isMirrorImageEnabled()); barcodePicker.pauseScanning(true); t.false(barcodePicker.isMirrorImageEnabled()); barcodePicker.setMirrorImageEnabled(true); t.false(barcodePicker.isMirrorImageEnabled()); return [4 /*yield*/, barcodePicker.resumeScanning()]; case 9: _a.sent(); t.true(barcodePicker.isMirrorImageEnabled()); barcodePicker.pauseScanning(true); return [4 /*yield*/, barcodePicker.setActiveCamera(fakeCamera1Object)]; case 10: _a.sent(); t.false(barcodePicker.isMirrorImageEnabled()); return [4 /*yield*/, barcodePicker.resumeScanning()]; case 11: _a.sent(); t.false(barcodePicker.isMirrorImageEnabled()); barcodePicker.destroy(); return [2 /*return*/]; } }); }); }); ava_1.default.serial("isPlaySoundOnScanEnabled & setPlaySoundOnScanEnabled", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var barcodePicker; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()]; case 1: _a.sent(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false })]; case 2: barcodePicker = _a.sent(); t.false(barcodePicker.isPlaySoundOnScanEnabled()); barcodePicker.setPlaySoundOnScanEnabled(true); t.true(barcodePicker.isPlaySoundOnScanEnabled()); barcodePicker.setPlaySoundOnScanEnabled(false); t.false(barcodePicker.isPlaySoundOnScanEnabled()); barcodePicker.destroy(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false, playSoundOnScan: true })]; case 3: barcodePicker = _a.sent(); t.true(barcodePicker.isPlaySoundOnScanEnabled()); barcodePicker.setPlaySoundOnScanEnabled(false); t.false(barcodePicker.isPlaySoundOnScanEnabled()); barcodePicker.destroy(); return [2 /*return*/]; } }); }); }); ava_1.default.serial("isVibrateOnScanEnabled & setVibrateOnScanEnabled", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var barcodePicker; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()]; case 1: _a.sent(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false })]; case 2: barcodePicker = _a.sent(); t.false(barcodePicker.isVibrateOnScanEnabled()); barcodePicker.setVibrateOnScanEnabled(true); t.true(barcodePicker.isVibrateOnScanEnabled()); barcodePicker.setVibrateOnScanEnabled(false); t.false(barcodePicker.isVibrateOnScanEnabled()); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false, vibrateOnScan: true })]; case 3: barcodePicker = _a.sent(); t.true(barcodePicker.isVibrateOnScanEnabled()); barcodePicker.setVibrateOnScanEnabled(false); t.false(barcodePicker.isVibrateOnScanEnabled()); barcodePicker.destroy(); return [2 /*return*/]; } }); }); }); ava_1.default.serial("isCameraSwitcherEnabled & setCameraSwitcherEnabled", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var barcodePicker; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()]; case 1: _a.sent(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false })]; case 2: barcodePicker = _a.sent(); t.true(barcodePicker.isCameraSwitcherEnabled()); barcodePicker.setCameraSwitcherEnabled(false); t.false(barcodePicker.isCameraSwitcherEnabled()); barcodePicker.setCameraSwitcherEnabled(true); t.true(barcodePicker.isCameraSwitcherEnabled()); barcodePicker.destroy(); return [2 /*return*/]; } }); }); }); ava_1.default.serial("isTorchToggleEnabled & setTorchToggleEnabled", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var barcodePicker; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()]; case 1: _a.sent(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false })]; case 2: barcodePicker = _a.sent(); t.true(barcodePicker.isTorchToggleEnabled()); barcodePicker.setTorchToggleEnabled(false); t.false(barcodePicker.isTorchToggleEnabled()); barcodePicker.setTorchToggleEnabled(true); t.true(barcodePicker.isTorchToggleEnabled()); barcodePicker.destroy(); return [2 /*return*/]; } }); }); }); ava_1.default.serial("isTapToFocusEnabled & setTapToFocusEnabled", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var barcodePicker; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()]; case 1: _a.sent(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false })]; case 2: barcodePicker = _a.sent(); t.true(barcodePicker.isTapToFocusEnabled()); barcodePicker.setTapToFocusEnabled(false); t.false(barcodePicker.isTapToFocusEnabled()); barcodePicker.setTapToFocusEnabled(true); t.true(barcodePicker.isTapToFocusEnabled()); barcodePicker.destroy(); return [2 /*return*/]; } }); }); }); ava_1.default.serial("isPinchToZoomEnabled & setPinchToZoomEnabled", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var barcodePicker; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()]; case 1: _a.sent(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false })]; case 2: barcodePicker = _a.sent(); t.true(barcodePicker.isPinchToZoomEnabled()); barcodePicker.setPinchToZoomEnabled(false); t.false(barcodePicker.isPinchToZoomEnabled()); barcodePicker.setPinchToZoomEnabled(true); t.true(barcodePicker.isPinchToZoomEnabled()); barcodePicker.destroy(); return [2 /*return*/]; } }); }); }); ava_1.default.serial("setTorchEnabled", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var barcodePicker; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()]; case 1: _a.sent(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false })]; case 2: barcodePicker = _a.sent(); barcodePicker.setTorchEnabled(true); barcodePicker.setTorchEnabled(false); barcodePicker.destroy(); t.pass(); return [2 /*return*/]; } }); }); }); ava_1.default.serial("setZoom", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var barcodePicker; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()]; case 1: _a.sent(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false })]; case 2: barcodePicker = _a.sent(); barcodePicker.setZoom(0.1); barcodePicker.setZoom(1); barcodePicker.destroy(); t.pass(); return [2 /*return*/]; } }); }); }); ava_1.default.serial("constructor guiStyle option & setGuiStyle", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var barcodePicker, setGuiStyleSpy; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()]; case 1: _a.sent(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false })]; case 2: barcodePicker = _a.sent(); setGuiStyleSpy = sinon.spy(barcodePicker.barcodePickerGui, "setGuiStyle"); t.is(barcodePicker.barcodePickerGui.guiStyle, __1.BarcodePicker.GuiStyle.LASER); barcodePicker.setGuiStyle(__1.BarcodePicker.GuiStyle.NONE); t.is(setGuiStyleSpy.callCount, 1); t.deepEqual(setGuiStyleSpy.getCall(0).args, [__1.BarcodePicker.GuiStyle.NONE]); barcodePicker.setGuiStyle(__1.BarcodePicker.GuiStyle.LASER); t.is(setGuiStyleSpy.callCount, 2); t.deepEqual(setGuiStyleSpy.getCall(1).args, [__1.BarcodePicker.GuiStyle.LASER]); barcodePicker.setGuiStyle(__1.BarcodePicker.GuiStyle.VIEWFINDER); t.is(setGuiStyleSpy.callCount, 3); t.deepEqual(setGuiStyleSpy.getCall(2).args, [__1.BarcodePicker.GuiStyle.VIEWFINDER]); barcodePicker.setGuiStyle(__1.BarcodePicker.GuiStyle.NONE); t.is(setGuiStyleSpy.callCount, 4); t.deepEqual(setGuiStyleSpy.getCall(3).args, [__1.BarcodePicker.GuiStyle.NONE]); barcodePicker.destroy(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false, guiStyle: __1.BarcodePicker.GuiStyle.NONE })]; case 3: barcodePicker = _a.sent(); t.is(barcodePicker.barcodePickerGui.guiStyle, __1.BarcodePicker.GuiStyle.NONE); return [2 /*return*/]; } }); }); }); ava_1.default.serial("constructor videoFit option & setVideoFit", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var barcodePicker, setVideoFitSpy; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()]; case 1: _a.sent(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false })]; case 2: barcodePicker = _a.sent(); setVideoFitSpy = sinon.spy(barcodePicker.barcodePickerGui, "setVideoFit"); t.is(barcodePicker.barcodePickerGui.videoFit, __1.BarcodePicker.ObjectFit.CONTAIN); barcodePicker.setVideoFit(__1.BarcodePicker.ObjectFit.COVER); t.is(setVideoFitSpy.callCount, 1); t.deepEqual(setVideoFitSpy.getCall(0).args, [__1.BarcodePicker.ObjectFit.COVER]); barcodePicker.setVideoFit(__1.BarcodePicker.ObjectFit.CONTAIN); t.is(setVideoFitSpy.callCount, 2); t.deepEqual(setVideoFitSpy.getCall(1).args, [__1.BarcodePicker.ObjectFit.CONTAIN]); barcodePicker.destroy(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false, videoFit: __1.BarcodePicker.ObjectFit.COVER })]; case 3: barcodePicker = _a.sent(); t.is(barcodePicker.barcodePickerGui.videoFit, __1.BarcodePicker.ObjectFit.COVER); return [2 /*return*/]; } }); }); }); ava_1.default.serial("constructor laserArea option & setLaserArea", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var barcodePicker, setLaserAreaSpy; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()]; case 1: _a.sent(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false })]; case 2: barcodePicker = _a.sent(); setLaserAreaSpy = sinon.spy(barcodePicker.barcodePickerGui, "setLaserArea"); t.is(barcodePicker.barcodePickerGui.customLaserArea, undefined); barcodePicker.setLaserArea({ x: 0.25, y: 0.25, width: 0.5, height: 0.5 }); t.is(setLaserAreaSpy.callCount, 1); t.deepEqual(setLaserAreaSpy.getCall(0).args, [ { x: 0.25, y: 0.25, width: 0.5, height: 0.5 } ]); barcodePicker.setLaserArea(); t.is(setLaserAreaSpy.callCount, 2); t.deepEqual(setLaserAreaSpy.getCall(1).args, [undefined]); barcodePicker.destroy(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false, laserArea: { x: 0.25, y: 0.25, width: 0.5, height: 0.5 } })]; case 3: barcodePicker = _a.sent(); t.deepEqual(barcodePicker.barcodePickerGui.customLaserArea, { x: 0.25, y: 0.25, width: 0.5, height: 0.5 }); return [2 /*return*/]; } }); }); }); ava_1.default.serial("constructor viewfinderArea option & setViewfinderArea", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var barcodePicker, setViewfinderAreaSpy; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()]; case 1: _a.sent(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false })]; case 2: barcodePicker = _a.sent(); setViewfinderAreaSpy = sinon.spy(barcodePicker.barcodePickerGui, "setViewfinderArea"); t.is(barcodePicker.barcodePickerGui.customViewfinderArea, undefined); barcodePicker.setViewfinderArea({ x: 0.25, y: 0.25, width: 0.5, height: 0.5 }); t.is(setViewfinderAreaSpy.callCount, 1); t.deepEqual(setViewfinderAreaSpy.getCall(0).args, [ { x: 0.25, y: 0.25, width: 0.5, height: 0.5 } ]); barcodePicker.setViewfinderArea(); t.is(setViewfinderAreaSpy.callCount, 2); t.deepEqual(setViewfinderAreaSpy.getCall(1).args, [undefined]); barcodePicker.destroy(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false, viewfinderArea: { x: 0.25, y: 0.25, width: 0.5, height: 0.5 } })]; case 3: barcodePicker = _a.sent(); t.deepEqual(barcodePicker.barcodePickerGui.customViewfinderArea, { x: 0.25, y: 0.25, width: 0.5, height: 0.5 }); return [2 /*return*/]; } }); }); }); ava_1.default.serial("createParserForFormat", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var barcodePicker, parser; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()]; case 1: _a.sent(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false })]; case 2: barcodePicker = _a.sent(); parser = barcodePicker.createParserForFormat(__1.Parser.DataFormat.DLID); t.truthy(parser); parser = barcodePicker.createParserForFormat(__1.Parser.DataFormat.GS1_AI); t.truthy(parser); parser = barcodePicker.createParserForFormat(__1.Parser.DataFormat.HIBC); t.truthy(parser); parser = barcodePicker.createParserForFormat(__1.Parser.DataFormat.MRTD); t.truthy(parser); parser = barcodePicker.createParserForFormat(__1.Parser.DataFormat.SWISSQR); t.truthy(parser); barcodePicker.destroy(); return [2 /*return*/]; } }); }); }); ava_1.default.serial("reassignOriginElement", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var element, barcodePicker, reassignOriginElementSpy, element2; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()]; case 1: _a.sent(); element = document.createElement("div"); return [4 /*yield*/, __1.BarcodePicker.create(element, { accessCamera: false })]; case 2: barcodePicker = _a.sent(); t.deepEqual(barcodePicker.barcodePickerGui.originElement, element); t.throws(function () { return barcodePicker.reassignOriginElement("wrong-argument"); }, __1.CustomError, "A valid origin HTML element must be given"); t.throws(function () { return barcodePicker.reassignOriginElement({}); }, __1.CustomError, "A valid origin HTML element must be given"); reassignOriginElementSpy = sinon.spy(barcodePicker.barcodePickerGui, "reassignOriginElement"); element2 = document.createElement("div"); barcodePicker.reassignOriginElement(element2); t.true(reassignOriginElementSpy.calledOnceWithExactly(element2)); return [2 /*return*/]; } }); }); }); ava_1.default.serial("setTargetScanningFPS", function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var barcodePicker, scheduleVideoProcessingStub, videoProcessingStub; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, fakeFullCompatibleBrowser()]; case 1: _a.sent(); return [4 /*yield*/, __1.BarcodePicker.create(document.createElement("div"), { accessCamera: false })]; case 2: barcodePicker = _a.sent();