sportident.js 1.1.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/SiCard/BaseSiCard.js +8 -45
- package/SiCard/BaseSiCard.js.map +1 -1
- package/SiCard/BaseSiCard.test.js +64 -66
- package/SiCard/BaseSiCard.test.js.map +1 -1
- package/SiCard/IRaceResultData.js +1 -2
- package/SiCard/ISiCard.js +1 -2
- package/SiCard/ISiCardExamples.js +1 -2
- package/SiCard/index.js +2 -20
- package/SiCard/index.js.map +1 -1
- package/SiCard/raceResultTools.js +10 -52
- package/SiCard/raceResultTools.js.map +1 -1
- package/SiCard/raceResultTools.test.js +49 -51
- package/SiCard/raceResultTools.test.js.map +1 -1
- package/SiCard/types/FCard.js +4 -41
- package/SiCard/types/FCard.js.map +1 -1
- package/SiCard/types/FCard.test.js +11 -13
- package/SiCard/types/FCard.test.js.map +1 -1
- package/SiCard/types/ModernSiCard.js +25 -67
- package/SiCard/types/ModernSiCard.js.map +1 -1
- package/SiCard/types/ModernSiCard.test.js +69 -104
- package/SiCard/types/ModernSiCard.test.js.map +1 -1
- package/SiCard/types/PCard.js +4 -41
- package/SiCard/types/PCard.js.map +1 -1
- package/SiCard/types/PCard.test.js +11 -13
- package/SiCard/types/PCard.test.js.map +1 -1
- package/SiCard/types/SIAC.js +4 -8
- package/SiCard/types/SIAC.js.map +1 -1
- package/SiCard/types/SIAC.test.js +38 -73
- package/SiCard/types/SIAC.test.js.map +1 -1
- package/SiCard/types/SiCard10.js +4 -8
- package/SiCard/types/SiCard10.js.map +1 -1
- package/SiCard/types/SiCard10.test.js +41 -76
- package/SiCard/types/SiCard10.test.js.map +1 -1
- package/SiCard/types/SiCard11.js +4 -8
- package/SiCard/types/SiCard11.js.map +1 -1
- package/SiCard/types/SiCard11.test.js +38 -73
- package/SiCard/types/SiCard11.test.js.map +1 -1
- package/SiCard/types/SiCard5.js +16 -55
- package/SiCard/types/SiCard5.js.map +1 -1
- package/SiCard/types/SiCard5.test.js +81 -116
- package/SiCard/types/SiCard5.test.js.map +1 -1
- package/SiCard/types/SiCard6.js +17 -56
- package/SiCard/types/SiCard6.js.map +1 -1
- package/SiCard/types/SiCard6.test.js +79 -114
- package/SiCard/types/SiCard6.test.js.map +1 -1
- package/SiCard/types/SiCard8.js +16 -54
- package/SiCard/types/SiCard8.js.map +1 -1
- package/SiCard/types/SiCard8.test.js +69 -104
- package/SiCard/types/SiCard8.test.js.map +1 -1
- package/SiCard/types/SiCard9.js +15 -53
- package/SiCard/types/SiCard9.js.map +1 -1
- package/SiCard/types/SiCard9.test.js +65 -100
- package/SiCard/types/SiCard9.test.js.map +1 -1
- package/SiCard/types/TCard.js +4 -41
- package/SiCard/types/TCard.js.map +1 -1
- package/SiCard/types/TCard.test.js +11 -13
- package/SiCard/types/TCard.test.js.map +1 -1
- package/SiCard/types/index.js +15 -33
- package/SiCard/types/index.js.map +1 -1
- package/SiCard/types/index.test.js +13 -48
- package/SiCard/types/index.test.js.map +1 -1
- package/SiCard/types/modernSiCardExamples.js +21 -58
- package/SiCard/types/modernSiCardExamples.js.map +1 -1
- package/SiCard/types/siCard5Examples.js +6 -43
- package/SiCard/types/siCard5Examples.js.map +1 -1
- package/SiCard/types/siCard6Examples.js +10 -47
- package/SiCard/types/siCard6Examples.js.map +1 -1
- package/SiCard/types/siCard8Examples.js +8 -45
- package/SiCard/types/siCard8Examples.js.map +1 -1
- package/SiCard/types/siCard9Examples.js +8 -45
- package/SiCard/types/siCard9Examples.js.map +1 -1
- package/SiDevice/ISiDevice.js +6 -45
- package/SiDevice/ISiDevice.js.map +1 -1
- package/SiDevice/ISiDeviceDriver.js +3 -41
- package/SiDevice/ISiDeviceDriver.js.map +1 -1
- package/SiDevice/SiDevice.js +20 -57
- package/SiDevice/SiDevice.js.map +1 -1
- package/SiDevice/SiDevice.test.js +103 -138
- package/SiDevice/SiDevice.test.js.map +1 -1
- package/SiDevice/WebSerialSiDeviceDriver.d.ts +8 -7
- package/SiDevice/WebSerialSiDeviceDriver.d.ts.map +1 -1
- package/SiDevice/WebSerialSiDeviceDriver.js +117 -77
- package/SiDevice/WebSerialSiDeviceDriver.js.map +1 -1
- package/SiDevice/WebUsbSiDeviceDriver.d.ts +5 -6
- package/SiDevice/WebUsbSiDeviceDriver.d.ts.map +1 -1
- package/SiDevice/WebUsbSiDeviceDriver.js +36 -89
- package/SiDevice/WebUsbSiDeviceDriver.js.map +1 -1
- package/SiDevice/index.js +1 -5
- package/SiDevice/index.js.map +1 -1
- package/SiDevice/testUtils/index.js +2 -7
- package/SiDevice/testUtils/index.js.map +1 -1
- package/SiDevice/testUtils/testISiDeviceDriver.js +10 -47
- package/SiDevice/testUtils/testISiDeviceDriver.js.map +1 -1
- package/SiDevice/testUtils/testISiDeviceDriverWithAutodetection.js +15 -52
- package/SiDevice/testUtils/testISiDeviceDriverWithAutodetection.js.map +1 -1
- package/SiStation/BaseSiStation.js +18 -55
- package/SiStation/BaseSiStation.js.map +1 -1
- package/SiStation/BaseSiStation.test.js +60 -95
- package/SiStation/BaseSiStation.test.js.map +1 -1
- package/SiStation/CoupledSiStation.js +16 -53
- package/SiStation/CoupledSiStation.js.map +1 -1
- package/SiStation/CoupledSiStation.test.js +27 -62
- package/SiStation/CoupledSiStation.test.js.map +1 -1
- package/SiStation/ISiMainStation.js +4 -43
- package/SiStation/ISiMainStation.js.map +1 -1
- package/SiStation/ISiSendTask.js +2 -5
- package/SiStation/ISiSendTask.js.map +1 -1
- package/SiStation/ISiStation.js +5 -8
- package/SiStation/ISiStation.js.map +1 -1
- package/SiStation/ISiTargetMultiplexer.js +6 -45
- package/SiStation/ISiTargetMultiplexer.js.map +1 -1
- package/SiStation/SiMainStation.js +19 -56
- package/SiStation/SiMainStation.js.map +1 -1
- package/SiStation/SiMainStation.test.js +88 -123
- package/SiStation/SiMainStation.test.js.map +1 -1
- package/SiStation/SiSendTask.js +11 -48
- package/SiStation/SiSendTask.js.map +1 -1
- package/SiStation/SiTargetMultiplexer.js +46 -83
- package/SiStation/SiTargetMultiplexer.js.map +1 -1
- package/SiStation/SiTargetMultiplexer.targeting.test.js +42 -77
- package/SiStation/SiTargetMultiplexer.targeting.test.js.map +1 -1
- package/SiStation/SiTargetMultiplexer.test.js +201 -236
- package/SiStation/SiTargetMultiplexer.test.js.map +1 -1
- package/SiStation/index.js +5 -13
- package/SiStation/index.js.map +1 -1
- package/SiStation/siStationExamples.js +6 -43
- package/SiStation/siStationExamples.js.map +1 -1
- package/constants.js +4 -7
- package/constants.js.map +1 -1
- package/constants.test.js +12 -47
- package/constants.test.js.map +1 -1
- package/fakes/FakeSiCard/BaseFakeSiCard.js +1 -5
- package/fakes/FakeSiCard/BaseFakeSiCard.js.map +1 -1
- package/fakes/FakeSiCard/BaseFakeSiCard.test.js +6 -41
- package/fakes/FakeSiCard/BaseFakeSiCard.test.js.map +1 -1
- package/fakes/FakeSiCard/IFakeSiCard.js +1 -2
- package/fakes/FakeSiCard/index.js +2 -20
- package/fakes/FakeSiCard/index.js.map +1 -1
- package/fakes/FakeSiCard/types/FakeModernSiCard.js +12 -49
- package/fakes/FakeSiCard/types/FakeModernSiCard.js.map +1 -1
- package/fakes/FakeSiCard/types/FakeModernSiCard.test.js +25 -60
- package/fakes/FakeSiCard/types/FakeModernSiCard.test.js.map +1 -1
- package/fakes/FakeSiCard/types/FakeSIAC.js +8 -12
- package/fakes/FakeSiCard/types/FakeSIAC.js.map +1 -1
- package/fakes/FakeSiCard/types/FakeSiCard10.js +8 -12
- package/fakes/FakeSiCard/types/FakeSiCard10.js.map +1 -1
- package/fakes/FakeSiCard/types/FakeSiCard11.js +8 -12
- package/fakes/FakeSiCard/types/FakeSiCard11.js.map +1 -1
- package/fakes/FakeSiCard/types/FakeSiCard5.js +12 -49
- package/fakes/FakeSiCard/types/FakeSiCard5.js.map +1 -1
- package/fakes/FakeSiCard/types/FakeSiCard5.test.js +20 -55
- package/fakes/FakeSiCard/types/FakeSiCard5.test.js.map +1 -1
- package/fakes/FakeSiCard/types/FakeSiCard6.js +12 -49
- package/fakes/FakeSiCard/types/FakeSiCard6.js.map +1 -1
- package/fakes/FakeSiCard/types/FakeSiCard6.test.js +25 -60
- package/fakes/FakeSiCard/types/FakeSiCard6.test.js.map +1 -1
- package/fakes/FakeSiCard/types/FakeSiCard8.js +7 -11
- package/fakes/FakeSiCard/types/FakeSiCard8.js.map +1 -1
- package/fakes/FakeSiCard/types/FakeSiCard9.js +7 -11
- package/fakes/FakeSiCard/types/FakeSiCard9.js.map +1 -1
- package/fakes/FakeSiCard/types/index.js +7 -17
- package/fakes/FakeSiCard/types/index.js.map +1 -1
- package/fakes/FakeSiDeviceDriver.js +10 -47
- package/fakes/FakeSiDeviceDriver.js.map +1 -1
- package/fakes/FakeSiMainStation.js +29 -66
- package/fakes/FakeSiMainStation.js.map +1 -1
- package/fakes/FakeSiMainStation.test.js +43 -78
- package/fakes/FakeSiMainStation.test.js.map +1 -1
- package/fakes/IFakeSiMainStation.js +2 -39
- package/fakes/IFakeSiMainStation.js.map +1 -1
- package/fakes/index.js +2 -20
- package/fakes/index.js.map +1 -1
- package/index.js +10 -46
- package/index.js.map +1 -1
- package/package.json +3 -2
- package/siProtocol.js +35 -82
- package/siProtocol.js.map +1 -1
- package/siProtocol.test.js +308 -345
- package/siProtocol.test.js.map +1 -1
- package/storage/SiArray.js +4 -8
- package/storage/SiArray.js.map +1 -1
- package/storage/SiArray.test.js +56 -58
- package/storage/SiArray.test.js.map +1 -1
- package/storage/SiBool.js +5 -9
- package/storage/SiBool.js.map +1 -1
- package/storage/SiBool.test.js +63 -65
- package/storage/SiBool.test.js.map +1 -1
- package/storage/SiDataType.js +9 -14
- package/storage/SiDataType.js.map +1 -1
- package/storage/SiDataType.test.js +23 -25
- package/storage/SiDataType.test.js.map +1 -1
- package/storage/SiDict.js +4 -8
- package/storage/SiDict.js.map +1 -1
- package/storage/SiDict.test.js +52 -54
- package/storage/SiDict.test.js.map +1 -1
- package/storage/SiEnum.js +7 -44
- package/storage/SiEnum.js.map +1 -1
- package/storage/SiEnum.test.js +59 -61
- package/storage/SiEnum.test.js.map +1 -1
- package/storage/SiFieldValue.js +4 -8
- package/storage/SiFieldValue.js.map +1 -1
- package/storage/SiFieldValue.test.js +25 -27
- package/storage/SiFieldValue.test.js.map +1 -1
- package/storage/SiInt.js +5 -9
- package/storage/SiInt.js.map +1 -1
- package/storage/SiInt.test.js +63 -65
- package/storage/SiInt.test.js.map +1 -1
- package/storage/SiModified.js +5 -9
- package/storage/SiModified.js.map +1 -1
- package/storage/SiModified.test.js +75 -77
- package/storage/SiModified.test.js.map +1 -1
- package/storage/SiStorage.js +4 -9
- package/storage/SiStorage.js.map +1 -1
- package/storage/SiStorage.test.js +32 -67
- package/storage/SiStorage.test.js.map +1 -1
- package/storage/index.js +11 -28
- package/storage/index.js.map +1 -1
- package/storage/index.test.js +93 -128
- package/storage/index.test.js.map +1 -1
- package/storage/interfaces.js +3 -41
- package/storage/interfaces.js.map +1 -1
- package/storage/siStringEncoding.js +1 -5
- package/storage/siStringEncoding.js.map +1 -1
- package/testUtils.js +16 -28
- package/testUtils.js.map +1 -1
- package/testUtils.test.js +65 -100
- package/testUtils.test.js.map +1 -1
- package/utils/NumberRange.js +2 -6
- package/utils/NumberRange.js.map +1 -1
- package/utils/NumberRange.test.js +54 -56
- package/utils/NumberRange.test.js.map +1 -1
- package/utils/NumberRangeRegistry.js +5 -42
- package/utils/NumberRangeRegistry.js.map +1 -1
- package/utils/NumberRangeRegistry.test.js +35 -37
- package/utils/NumberRangeRegistry.test.js.map +1 -1
- package/utils/bytes.js +11 -22
- package/utils/bytes.js.map +1 -1
- package/utils/bytes.test.js +98 -133
- package/utils/bytes.test.js.map +1 -1
- package/utils/errors.js +4 -11
- package/utils/errors.js.map +1 -1
- package/utils/errors.test.js +16 -51
- package/utils/errors.test.js.map +1 -1
- package/utils/events.js +3 -41
- package/utils/events.js.map +1 -1
- package/utils/events.test.js +21 -56
- package/utils/events.test.js.map +1 -1
- package/utils/general.js +4 -11
- package/utils/general.js.map +1 -1
- package/utils/general.test.js +77 -112
- package/utils/general.test.js.map +1 -1
- package/utils/index.js +8 -24
- package/utils/index.js.map +1 -1
- package/utils/mixins.js +1 -5
- package/utils/mixins.js.map +1 -1
- package/utils/mixins.test.js +13 -48
- package/utils/mixins.test.js.map +1 -1
- package/utils/typed.js +1 -4
- package/utils/typed.js.map +1 -1
- package/SiDevice/INavigatorWebSerial.d.ts +0 -62
- package/SiDevice/INavigatorWebSerial.d.ts.map +0 -1
- package/SiDevice/INavigatorWebSerial.js +0 -3
- package/SiDevice/INavigatorWebSerial.js.map +0 -1
- package/SiDevice/INavigatorWebUsb.d.ts +0 -55
- package/SiDevice/INavigatorWebUsb.d.ts.map +0 -1
- package/SiDevice/INavigatorWebUsb.js +0 -3
- package/SiDevice/INavigatorWebUsb.js.map +0 -1
|
@@ -1,102 +1,67 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
const globals_1 = require("@jest/globals");
|
|
37
|
-
const constants_1 = require("../../constants");
|
|
38
|
-
const testUtils = __importStar(require("../../testUtils"));
|
|
39
|
-
const BaseSiCard_1 = require("../BaseSiCard");
|
|
40
|
-
const ModernSiCard_1 = require("./ModernSiCard");
|
|
41
|
-
const SiCard8_1 = require("./SiCard8");
|
|
42
|
-
const siCard8Examples_1 = require("./siCard8Examples");
|
|
43
|
-
const FakeSiCard8_1 = require("../../fakes/FakeSiCard/types/FakeSiCard8");
|
|
44
|
-
(0, globals_1.describe)('SiCard8', () => {
|
|
45
|
-
(0, globals_1.test)('is registered', () => {
|
|
46
|
-
(0, globals_1.expect)(BaseSiCard_1.BaseSiCard.getTypeByCardNumber(1999999)).not.toEqual(SiCard8_1.SiCard8);
|
|
47
|
-
(0, globals_1.expect)(BaseSiCard_1.BaseSiCard.getTypeByCardNumber(2000000)).toEqual(SiCard8_1.SiCard8);
|
|
48
|
-
(0, globals_1.expect)(BaseSiCard_1.BaseSiCard.getTypeByCardNumber(2002999)).toEqual(SiCard8_1.SiCard8);
|
|
49
|
-
(0, globals_1.expect)(BaseSiCard_1.BaseSiCard.getTypeByCardNumber(2003000)).not.toEqual(SiCard8_1.SiCard8);
|
|
50
|
-
(0, globals_1.expect)(BaseSiCard_1.BaseSiCard.getTypeByCardNumber(2003999)).not.toEqual(SiCard8_1.SiCard8);
|
|
51
|
-
(0, globals_1.expect)(BaseSiCard_1.BaseSiCard.getTypeByCardNumber(2004000)).toEqual(SiCard8_1.SiCard8);
|
|
52
|
-
(0, globals_1.expect)(BaseSiCard_1.BaseSiCard.getTypeByCardNumber(2999999)).toEqual(SiCard8_1.SiCard8);
|
|
53
|
-
(0, globals_1.expect)(BaseSiCard_1.BaseSiCard.getTypeByCardNumber(3000000)).not.toEqual(SiCard8_1.SiCard8);
|
|
1
|
+
import { describe, expect, test } from '@jest/globals';
|
|
2
|
+
import { proto } from '../../constants';
|
|
3
|
+
import * as testUtils from '../../testUtils';
|
|
4
|
+
import { BaseSiCard } from '../BaseSiCard';
|
|
5
|
+
import { ModernSiCardSeries } from './ModernSiCard';
|
|
6
|
+
import { getPunchOffset, SiCard8 } from './SiCard8';
|
|
7
|
+
import { getSiCard8Examples } from './siCard8Examples';
|
|
8
|
+
import { FakeSiCard8 } from '../../fakes/FakeSiCard/types/FakeSiCard8';
|
|
9
|
+
describe('SiCard8', () => {
|
|
10
|
+
test('is registered', () => {
|
|
11
|
+
expect(BaseSiCard.getTypeByCardNumber(1999999)).not.toEqual(SiCard8);
|
|
12
|
+
expect(BaseSiCard.getTypeByCardNumber(2000000)).toEqual(SiCard8);
|
|
13
|
+
expect(BaseSiCard.getTypeByCardNumber(2002999)).toEqual(SiCard8);
|
|
14
|
+
expect(BaseSiCard.getTypeByCardNumber(2003000)).not.toEqual(SiCard8);
|
|
15
|
+
expect(BaseSiCard.getTypeByCardNumber(2003999)).not.toEqual(SiCard8);
|
|
16
|
+
expect(BaseSiCard.getTypeByCardNumber(2004000)).toEqual(SiCard8);
|
|
17
|
+
expect(BaseSiCard.getTypeByCardNumber(2999999)).toEqual(SiCard8);
|
|
18
|
+
expect(BaseSiCard.getTypeByCardNumber(3000000)).not.toEqual(SiCard8);
|
|
54
19
|
});
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
const instance =
|
|
58
|
-
command:
|
|
59
|
-
parameters: [0x00, 0x00,
|
|
20
|
+
describe('typeSpecificInstanceFromMessage', () => {
|
|
21
|
+
test('works for valid message', () => {
|
|
22
|
+
const instance = SiCard8.typeSpecificInstanceFromMessage({
|
|
23
|
+
command: proto.cmd.SI8_DET,
|
|
24
|
+
parameters: [0x00, 0x00, ModernSiCardSeries.SiCard8, 0x22, 0x22, 0x22]
|
|
60
25
|
});
|
|
61
26
|
if (instance === undefined) {
|
|
62
27
|
throw new Error('expect instance');
|
|
63
28
|
}
|
|
64
|
-
|
|
65
|
-
|
|
29
|
+
expect(instance instanceof SiCard8).toBe(true);
|
|
30
|
+
expect(instance.cardNumber).toBe(2236962);
|
|
66
31
|
});
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
mode:
|
|
32
|
+
test('returns undefined when message has mode', () => {
|
|
33
|
+
expect(SiCard8.typeSpecificInstanceFromMessage({
|
|
34
|
+
mode: proto.NAK
|
|
70
35
|
})).toBe(undefined);
|
|
71
36
|
});
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
command: testUtils.getRandomByteExcept([
|
|
37
|
+
test('returns undefined when message has wrong command', () => {
|
|
38
|
+
expect(SiCard8.typeSpecificInstanceFromMessage({
|
|
39
|
+
command: testUtils.getRandomByteExcept([proto.cmd.SI8_DET]),
|
|
75
40
|
parameters: []
|
|
76
41
|
})).toBe(undefined);
|
|
77
42
|
});
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
command:
|
|
43
|
+
test('returns undefined when there are too few parameters', () => {
|
|
44
|
+
expect(SiCard8.typeSpecificInstanceFromMessage({
|
|
45
|
+
command: proto.cmd.SI8_DET,
|
|
81
46
|
parameters: []
|
|
82
47
|
})).toBe(undefined);
|
|
83
48
|
});
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
command:
|
|
87
|
-
parameters: [0x00, 0x00, testUtils.getRandomByteExcept([
|
|
49
|
+
test('returns undefined when the series does not match', () => {
|
|
50
|
+
expect(SiCard8.typeSpecificInstanceFromMessage({
|
|
51
|
+
command: proto.cmd.SI8_DET,
|
|
52
|
+
parameters: [0x00, 0x00, testUtils.getRandomByteExcept([ModernSiCardSeries.SiCard8]), 0x22, 0x22, 0x22]
|
|
88
53
|
})).toBe(undefined);
|
|
89
54
|
});
|
|
90
55
|
});
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
56
|
+
test('getPunchOffset', () => {
|
|
57
|
+
expect(getPunchOffset(0)).toEqual(0x88);
|
|
58
|
+
expect(getPunchOffset(1)).toEqual(0x8c);
|
|
59
|
+
expect(getPunchOffset(29)).toEqual(0xfc);
|
|
95
60
|
});
|
|
96
|
-
const examples =
|
|
61
|
+
const examples = getSiCard8Examples();
|
|
97
62
|
Object.keys(examples).forEach((exampleName) => {
|
|
98
63
|
const { storageData, cardData } = examples[exampleName];
|
|
99
|
-
const myFakeSiCard8 = new
|
|
64
|
+
const myFakeSiCard8 = new FakeSiCard8(storageData);
|
|
100
65
|
const mainStationSimulation = {
|
|
101
66
|
sendMessage: (message, numResponses) => {
|
|
102
67
|
const responses = myFakeSiCard8.handleRequest(message);
|
|
@@ -106,43 +71,43 @@ const FakeSiCard8_1 = require("../../fakes/FakeSiCard/types/FakeSiCard8");
|
|
|
106
71
|
return Promise.resolve(responses.map((response) => (response.mode === undefined ? [0x00, 0x00, ...response.parameters] : [])));
|
|
107
72
|
}
|
|
108
73
|
};
|
|
109
|
-
|
|
110
|
-
const mySiCard8 = new
|
|
74
|
+
test(`typeSpecificRead works with ${exampleName} example`, (done) => {
|
|
75
|
+
const mySiCard8 = new SiCard8(cardData.cardNumber);
|
|
111
76
|
mySiCard8.mainStation = mainStationSimulation;
|
|
112
77
|
mySiCard8.typeSpecificRead().then(() => {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
78
|
+
expect(mySiCard8.raceResult.cardNumber).toEqual(cardData.cardNumber);
|
|
79
|
+
expect(mySiCard8.raceResult.startTime).toEqual(cardData.startTime);
|
|
80
|
+
expect(mySiCard8.raceResult.finishTime).toEqual(cardData.finishTime);
|
|
81
|
+
expect(mySiCard8.raceResult.checkTime).toEqual(cardData.checkTime);
|
|
82
|
+
expect(mySiCard8.raceResult.punches).toEqual(cardData.punches);
|
|
83
|
+
expect(mySiCard8.raceResult.cardHolder).toEqual(cardData.cardHolder);
|
|
84
|
+
expect(mySiCard8.punchCount).toEqual(cardData.punchCount);
|
|
85
|
+
expect(mySiCard8.uid).toEqual(cardData.uid);
|
|
121
86
|
const cardSeriesString = mySiCard8.storage.get('cardSeries').toString();
|
|
122
|
-
|
|
87
|
+
expect(cardSeriesString in ModernSiCardSeries).toBe(true);
|
|
123
88
|
done();
|
|
124
89
|
});
|
|
125
90
|
});
|
|
126
|
-
|
|
127
|
-
const mySiCard8 = new
|
|
91
|
+
test(`typeSpecificRead works with wrong card number in ${exampleName} example`, (done) => {
|
|
92
|
+
const mySiCard8 = new SiCard8(cardData.cardNumber + 1);
|
|
128
93
|
mySiCard8.mainStation = mainStationSimulation;
|
|
129
94
|
mySiCard8.typeSpecificRead().then(() => {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
95
|
+
expect(mySiCard8.raceResult.cardNumber).toEqual(cardData.cardNumber);
|
|
96
|
+
expect(mySiCard8.raceResult.startTime).toEqual(cardData.startTime);
|
|
97
|
+
expect(mySiCard8.raceResult.finishTime).toEqual(cardData.finishTime);
|
|
98
|
+
expect(mySiCard8.raceResult.checkTime).toEqual(cardData.checkTime);
|
|
99
|
+
expect(mySiCard8.raceResult.punches).toEqual(cardData.punches);
|
|
100
|
+
expect(mySiCard8.raceResult.cardHolder).toEqual(cardData.cardHolder);
|
|
101
|
+
expect(mySiCard8.punchCount).toEqual(cardData.punchCount);
|
|
102
|
+
expect(mySiCard8.uid).toEqual(cardData.uid);
|
|
138
103
|
done();
|
|
139
104
|
});
|
|
140
105
|
});
|
|
141
106
|
});
|
|
142
|
-
|
|
107
|
+
test('typeSpecificRead if typeSpecificGetPage fails', (done) => {
|
|
143
108
|
const testError = new Error('test');
|
|
144
109
|
let attemptedToGetPage = false;
|
|
145
|
-
class ModernSiCardWithoutCardHolder extends
|
|
110
|
+
class ModernSiCardWithoutCardHolder extends SiCard8 {
|
|
146
111
|
typeSpecificGetPage() {
|
|
147
112
|
attemptedToGetPage = true;
|
|
148
113
|
return Promise.reject(testError);
|
|
@@ -150,8 +115,8 @@ const FakeSiCard8_1 = require("../../fakes/FakeSiCard/types/FakeSiCard8");
|
|
|
150
115
|
}
|
|
151
116
|
const myModernSiCard = new ModernSiCardWithoutCardHolder(7123456);
|
|
152
117
|
myModernSiCard.typeSpecificRead().catch((err) => {
|
|
153
|
-
|
|
154
|
-
|
|
118
|
+
expect(attemptedToGetPage).toBe(true);
|
|
119
|
+
expect(err).toBe(testError);
|
|
155
120
|
done();
|
|
156
121
|
});
|
|
157
122
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SiCard8.test.js","sourceRoot":"","sources":["../../../src/SiCard/types/SiCard8.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SiCard8.test.js","sourceRoot":"","sources":["../../../src/SiCard/types/SiCard8.test.ts"],"names":[],"mappings":"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"}
|
package/SiCard/types/SiCard9.js
CHANGED
|
@@ -1,50 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.SiCard9 = exports.siCard9StorageDefinition = exports.siCard9StorageLocations = exports.getPunchOffset = void 0;
|
|
37
|
-
const storage = __importStar(require("../../storage"));
|
|
38
|
-
const siProtocol = __importStar(require("../../siProtocol"));
|
|
39
|
-
const ModernSiCard_1 = require("./ModernSiCard");
|
|
40
|
-
const BaseSiCard_1 = require("../BaseSiCard");
|
|
1
|
+
import * as storage from '../../storage';
|
|
2
|
+
import * as siProtocol from '../../siProtocol';
|
|
3
|
+
import { cropPunches, getCroppedString, ModernSiCard, ModernSiCardSeries } from './ModernSiCard';
|
|
4
|
+
import { BaseSiCard } from '../BaseSiCard';
|
|
41
5
|
class ReadFinishedException {
|
|
42
6
|
}
|
|
43
7
|
const punchesPerPage = 32;
|
|
44
8
|
const bytesPerPage = 128;
|
|
45
9
|
const MAX_NUM_PUNCHES = 50;
|
|
46
|
-
const getPunchOffset = (i) => 0x38 + i * 4;
|
|
47
|
-
exports.getPunchOffset = getPunchOffset;
|
|
10
|
+
export const getPunchOffset = (i) => 0x38 + i * 4;
|
|
48
11
|
const parseCardHolderString = (semicolonSeparatedString) => {
|
|
49
12
|
const informationComponents = semicolonSeparatedString.split(';');
|
|
50
13
|
return {
|
|
@@ -54,12 +17,12 @@ const parseCardHolderString = (semicolonSeparatedString) => {
|
|
|
54
17
|
};
|
|
55
18
|
};
|
|
56
19
|
const parseCardHolder = (maybeCharCodes) => {
|
|
57
|
-
const semicolonSeparatedString =
|
|
20
|
+
const semicolonSeparatedString = getCroppedString(maybeCharCodes);
|
|
58
21
|
return parseCardHolderString(semicolonSeparatedString || '');
|
|
59
22
|
};
|
|
60
|
-
|
|
23
|
+
export const siCard9StorageLocations = {
|
|
61
24
|
uid: new storage.SiInt([[0x03], [0x02], [0x01], [0x00]]),
|
|
62
|
-
cardSeries: new storage.SiEnum([[0x18]],
|
|
25
|
+
cardSeries: new storage.SiEnum([[0x18]], ModernSiCardSeries),
|
|
63
26
|
cardNumber: new storage.SiModified(new storage.SiArray(3, (i) => new storage.SiInt([[0x19 + (2 - i)]])), (extractedValue) => siProtocol.arr2cardNumber(extractedValue)
|
|
64
27
|
// (cardNumber) => siProtocol.cardNumber2arr(cardNumber),
|
|
65
28
|
// (cardNumber) => `${cardNumber}`,
|
|
@@ -71,13 +34,13 @@ exports.siCard9StorageLocations = {
|
|
|
71
34
|
checkTime: new siProtocol.SiTime([[0x0b], [0x0a], [0x08]]),
|
|
72
35
|
punchCount: new storage.SiInt([[0x16]]),
|
|
73
36
|
punches: new storage.SiModified(new storage.SiArray(MAX_NUM_PUNCHES, (i) => new storage.SiDict({
|
|
74
|
-
code: new storage.SiInt([[
|
|
75
|
-
time: new siProtocol.SiTime([[
|
|
76
|
-
})), (allPunches) =>
|
|
37
|
+
code: new storage.SiInt([[getPunchOffset(i) + 1]]),
|
|
38
|
+
time: new siProtocol.SiTime([[getPunchOffset(i) + 3], [getPunchOffset(i) + 2], [getPunchOffset(i) + 0]])
|
|
39
|
+
})), (allPunches) => cropPunches(allPunches)),
|
|
77
40
|
cardHolder: new storage.SiModified(new storage.SiArray(0x18, (i) => new storage.SiInt([[0x20 + i]])), (charCodes) => parseCardHolder(charCodes))
|
|
78
41
|
};
|
|
79
|
-
|
|
80
|
-
class SiCard9 extends
|
|
42
|
+
export const siCard9StorageDefinition = storage.defineStorage(0x100, siCard9StorageLocations);
|
|
43
|
+
export class SiCard9 extends ModernSiCard {
|
|
81
44
|
static typeSpecificInstanceFromMessage(message) {
|
|
82
45
|
const info = this.parseModernSiCardDetectionMessage(message);
|
|
83
46
|
if (info === undefined) {
|
|
@@ -90,7 +53,7 @@ class SiCard9 extends ModernSiCard_1.ModernSiCard {
|
|
|
90
53
|
}
|
|
91
54
|
constructor(cardNumber) {
|
|
92
55
|
super(cardNumber);
|
|
93
|
-
this.storage =
|
|
56
|
+
this.storage = siCard9StorageDefinition();
|
|
94
57
|
}
|
|
95
58
|
typeSpecificRead() {
|
|
96
59
|
return new Promise((resolve, reject) => {
|
|
@@ -133,7 +96,6 @@ class SiCard9 extends ModernSiCard_1.ModernSiCard {
|
|
|
133
96
|
});
|
|
134
97
|
}
|
|
135
98
|
}
|
|
136
|
-
exports.SiCard9 = SiCard9;
|
|
137
99
|
SiCard9.maxNumPunches = MAX_NUM_PUNCHES;
|
|
138
|
-
|
|
100
|
+
BaseSiCard.registerNumberRange(1000000, 2000000, SiCard9);
|
|
139
101
|
//# sourceMappingURL=SiCard9.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SiCard9.js","sourceRoot":"","sources":["../../../src/SiCard/types/SiCard9.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SiCard9.js","sourceRoot":"","sources":["../../../src/SiCard/types/SiCard9.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,98 +1,63 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
const globals_1 = require("@jest/globals");
|
|
37
|
-
const constants_1 = require("../../constants");
|
|
38
|
-
const testUtils = __importStar(require("../../testUtils"));
|
|
39
|
-
const BaseSiCard_1 = require("../BaseSiCard");
|
|
40
|
-
const ModernSiCard_1 = require("./ModernSiCard");
|
|
41
|
-
const SiCard9_1 = require("./SiCard9");
|
|
42
|
-
const siCard9Examples_1 = require("./siCard9Examples");
|
|
43
|
-
const FakeSiCard9_1 = require("../../fakes/FakeSiCard/types/FakeSiCard9");
|
|
44
|
-
(0, globals_1.describe)('SiCard9', () => {
|
|
45
|
-
(0, globals_1.test)('is registered', () => {
|
|
46
|
-
(0, globals_1.expect)(BaseSiCard_1.BaseSiCard.getTypeByCardNumber(999999)).not.toEqual(SiCard9_1.SiCard9);
|
|
47
|
-
(0, globals_1.expect)(BaseSiCard_1.BaseSiCard.getTypeByCardNumber(1000000)).toEqual(SiCard9_1.SiCard9);
|
|
48
|
-
(0, globals_1.expect)(BaseSiCard_1.BaseSiCard.getTypeByCardNumber(1999999)).toEqual(SiCard9_1.SiCard9);
|
|
49
|
-
(0, globals_1.expect)(BaseSiCard_1.BaseSiCard.getTypeByCardNumber(2000000)).not.toEqual(SiCard9_1.SiCard9);
|
|
1
|
+
import { describe, expect, test } from '@jest/globals';
|
|
2
|
+
import { proto } from '../../constants';
|
|
3
|
+
import * as testUtils from '../../testUtils';
|
|
4
|
+
import { BaseSiCard } from '../BaseSiCard';
|
|
5
|
+
import { ModernSiCardSeries } from './ModernSiCard';
|
|
6
|
+
import { getPunchOffset, SiCard9 } from './SiCard9';
|
|
7
|
+
import { getSiCard9Examples } from './siCard9Examples';
|
|
8
|
+
import { FakeSiCard9 } from '../../fakes/FakeSiCard/types/FakeSiCard9';
|
|
9
|
+
describe('SiCard9', () => {
|
|
10
|
+
test('is registered', () => {
|
|
11
|
+
expect(BaseSiCard.getTypeByCardNumber(999999)).not.toEqual(SiCard9);
|
|
12
|
+
expect(BaseSiCard.getTypeByCardNumber(1000000)).toEqual(SiCard9);
|
|
13
|
+
expect(BaseSiCard.getTypeByCardNumber(1999999)).toEqual(SiCard9);
|
|
14
|
+
expect(BaseSiCard.getTypeByCardNumber(2000000)).not.toEqual(SiCard9);
|
|
50
15
|
});
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
const instance =
|
|
54
|
-
command:
|
|
55
|
-
parameters: [0x00, 0x00,
|
|
16
|
+
describe('typeSpecificInstanceFromMessage', () => {
|
|
17
|
+
test('works for valid message', () => {
|
|
18
|
+
const instance = SiCard9.typeSpecificInstanceFromMessage({
|
|
19
|
+
command: proto.cmd.SI8_DET,
|
|
20
|
+
parameters: [0x00, 0x00, ModernSiCardSeries.SiCard9, 0x11, 0x11, 0x11]
|
|
56
21
|
});
|
|
57
22
|
if (instance === undefined) {
|
|
58
23
|
throw new Error('expect instance');
|
|
59
24
|
}
|
|
60
|
-
|
|
61
|
-
|
|
25
|
+
expect(instance instanceof SiCard9).toBe(true);
|
|
26
|
+
expect(instance.cardNumber).toBe(1118481);
|
|
62
27
|
});
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
mode:
|
|
28
|
+
test('returns undefined when message has mode', () => {
|
|
29
|
+
expect(SiCard9.typeSpecificInstanceFromMessage({
|
|
30
|
+
mode: proto.NAK
|
|
66
31
|
})).toBe(undefined);
|
|
67
32
|
});
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
command: testUtils.getRandomByteExcept([
|
|
33
|
+
test('returns undefined when message has wrong command', () => {
|
|
34
|
+
expect(SiCard9.typeSpecificInstanceFromMessage({
|
|
35
|
+
command: testUtils.getRandomByteExcept([proto.cmd.SI8_DET]),
|
|
71
36
|
parameters: []
|
|
72
37
|
})).toBe(undefined);
|
|
73
38
|
});
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
command:
|
|
39
|
+
test('returns undefined when there are too few parameters', () => {
|
|
40
|
+
expect(SiCard9.typeSpecificInstanceFromMessage({
|
|
41
|
+
command: proto.cmd.SI8_DET,
|
|
77
42
|
parameters: []
|
|
78
43
|
})).toBe(undefined);
|
|
79
44
|
});
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
command:
|
|
83
|
-
parameters: [0x00, 0x00, testUtils.getRandomByteExcept([
|
|
45
|
+
test('returns undefined when the series does not match', () => {
|
|
46
|
+
expect(SiCard9.typeSpecificInstanceFromMessage({
|
|
47
|
+
command: proto.cmd.SI8_DET,
|
|
48
|
+
parameters: [0x00, 0x00, testUtils.getRandomByteExcept([ModernSiCardSeries.SiCard9]), 0x22, 0x22, 0x22]
|
|
84
49
|
})).toBe(undefined);
|
|
85
50
|
});
|
|
86
51
|
});
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
52
|
+
test('getPunchOffset', () => {
|
|
53
|
+
expect(getPunchOffset(0)).toEqual(0x38);
|
|
54
|
+
expect(getPunchOffset(1)).toEqual(0x3c);
|
|
55
|
+
expect(getPunchOffset(49)).toEqual(0xfc);
|
|
91
56
|
});
|
|
92
|
-
const examples =
|
|
57
|
+
const examples = getSiCard9Examples();
|
|
93
58
|
Object.keys(examples).forEach((exampleName) => {
|
|
94
59
|
const { storageData, cardData } = examples[exampleName];
|
|
95
|
-
const myFakeSiCard9 = new
|
|
60
|
+
const myFakeSiCard9 = new FakeSiCard9(storageData);
|
|
96
61
|
const mainStationSimulation = {
|
|
97
62
|
sendMessage: (message, numResponses) => {
|
|
98
63
|
const responses = myFakeSiCard9.handleRequest(message);
|
|
@@ -102,43 +67,43 @@ const FakeSiCard9_1 = require("../../fakes/FakeSiCard/types/FakeSiCard9");
|
|
|
102
67
|
return Promise.resolve(responses.map((response) => (response.mode === undefined ? [0x00, 0x00, ...response.parameters] : [])));
|
|
103
68
|
}
|
|
104
69
|
};
|
|
105
|
-
|
|
106
|
-
const mySiCard9 = new
|
|
70
|
+
test(`typeSpecificRead works with ${exampleName} example`, (done) => {
|
|
71
|
+
const mySiCard9 = new SiCard9(cardData.cardNumber);
|
|
107
72
|
mySiCard9.mainStation = mainStationSimulation;
|
|
108
73
|
mySiCard9.typeSpecificRead().then(() => {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
74
|
+
expect(mySiCard9.raceResult.cardNumber).toEqual(cardData.cardNumber);
|
|
75
|
+
expect(mySiCard9.raceResult.startTime).toEqual(cardData.startTime);
|
|
76
|
+
expect(mySiCard9.raceResult.finishTime).toEqual(cardData.finishTime);
|
|
77
|
+
expect(mySiCard9.raceResult.checkTime).toEqual(cardData.checkTime);
|
|
78
|
+
expect(mySiCard9.raceResult.punches).toEqual(cardData.punches);
|
|
79
|
+
expect(mySiCard9.raceResult.cardHolder).toEqual(cardData.cardHolder);
|
|
80
|
+
expect(mySiCard9.punchCount).toEqual(cardData.punchCount);
|
|
81
|
+
expect(mySiCard9.uid).toEqual(cardData.uid);
|
|
117
82
|
const cardSeriesString = mySiCard9.storage.get('cardSeries').toString();
|
|
118
|
-
|
|
83
|
+
expect(cardSeriesString in ModernSiCardSeries).toBe(true);
|
|
119
84
|
done();
|
|
120
85
|
});
|
|
121
86
|
});
|
|
122
|
-
|
|
123
|
-
const mySiCard9 = new
|
|
87
|
+
test(`typeSpecificRead works with wrong card number in ${exampleName} example`, (done) => {
|
|
88
|
+
const mySiCard9 = new SiCard9(cardData.cardNumber + 1);
|
|
124
89
|
mySiCard9.mainStation = mainStationSimulation;
|
|
125
90
|
mySiCard9.typeSpecificRead().then(() => {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
91
|
+
expect(mySiCard9.raceResult.cardNumber).toEqual(cardData.cardNumber);
|
|
92
|
+
expect(mySiCard9.raceResult.startTime).toEqual(cardData.startTime);
|
|
93
|
+
expect(mySiCard9.raceResult.finishTime).toEqual(cardData.finishTime);
|
|
94
|
+
expect(mySiCard9.raceResult.checkTime).toEqual(cardData.checkTime);
|
|
95
|
+
expect(mySiCard9.raceResult.punches).toEqual(cardData.punches);
|
|
96
|
+
expect(mySiCard9.raceResult.cardHolder).toEqual(cardData.cardHolder);
|
|
97
|
+
expect(mySiCard9.punchCount).toEqual(cardData.punchCount);
|
|
98
|
+
expect(mySiCard9.uid).toEqual(cardData.uid);
|
|
134
99
|
done();
|
|
135
100
|
});
|
|
136
101
|
});
|
|
137
102
|
});
|
|
138
|
-
|
|
103
|
+
test('typeSpecificRead if typeSpecificGetPage fails', (done) => {
|
|
139
104
|
const testError = new Error('test');
|
|
140
105
|
let attemptedToGetPage = false;
|
|
141
|
-
class ModernSiCardWithoutCardHolder extends
|
|
106
|
+
class ModernSiCardWithoutCardHolder extends SiCard9 {
|
|
142
107
|
typeSpecificGetPage() {
|
|
143
108
|
attemptedToGetPage = true;
|
|
144
109
|
return Promise.reject(testError);
|
|
@@ -146,8 +111,8 @@ const FakeSiCard9_1 = require("../../fakes/FakeSiCard/types/FakeSiCard9");
|
|
|
146
111
|
}
|
|
147
112
|
const myModernSiCard = new ModernSiCardWithoutCardHolder(7123456);
|
|
148
113
|
myModernSiCard.typeSpecificRead().catch((err) => {
|
|
149
|
-
|
|
150
|
-
|
|
114
|
+
expect(attemptedToGetPage).toBe(true);
|
|
115
|
+
expect(err).toBe(testError);
|
|
151
116
|
done();
|
|
152
117
|
});
|
|
153
118
|
});
|