sportident.js 1.2.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/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 +4 -2
- package/SiDevice/WebSerialSiDeviceDriver.d.ts.map +1 -1
- package/SiDevice/WebSerialSiDeviceDriver.js +91 -74
- package/SiDevice/WebSerialSiDeviceDriver.js.map +1 -1
- package/SiDevice/WebUsbSiDeviceDriver.d.ts.map +1 -1
- package/SiDevice/WebUsbSiDeviceDriver.js +29 -88
- 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
|
@@ -1,37 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
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
1
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
36
2
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37
3
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -41,38 +7,37 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
41
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
8
|
});
|
|
43
9
|
};
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
const SiTargetMultiplexer_1 = require("./SiTargetMultiplexer");
|
|
10
|
+
import { describe, expect, test } from '@jest/globals';
|
|
11
|
+
import { proto } from '../constants';
|
|
12
|
+
import * as siProtocol from '../siProtocol';
|
|
13
|
+
import * as testUtils from '../testUtils';
|
|
14
|
+
import { SiDeviceState, SiDeviceReceiveEvent } from '../SiDevice/ISiDevice';
|
|
15
|
+
import { SiDevice } from '../SiDevice/SiDevice';
|
|
16
|
+
import { SiTargetMultiplexerTarget } from './ISiTargetMultiplexer';
|
|
17
|
+
import { SiSendTaskState } from './ISiSendTask';
|
|
18
|
+
import { DIRECT_DEVICE_INITIATED_COMMANDS, SiTargetMultiplexer } from './SiTargetMultiplexer';
|
|
54
19
|
testUtils.useFakeTimers();
|
|
55
20
|
function mockDriver(driver) {
|
|
56
21
|
return driver;
|
|
57
22
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const siDevice = new
|
|
23
|
+
describe('SiTargetMultiplexer', () => {
|
|
24
|
+
test('is unique per device', () => {
|
|
25
|
+
const siDevice = new SiDevice('isUniquePerDevice', {
|
|
61
26
|
driver: mockDriver({ name: 'FakeSiDevice' })
|
|
62
27
|
});
|
|
63
|
-
siDevice.setState(
|
|
64
|
-
const muxer1 =
|
|
65
|
-
|
|
66
|
-
const muxer2 =
|
|
67
|
-
|
|
28
|
+
siDevice.setState(SiDeviceState.Opened);
|
|
29
|
+
const muxer1 = SiTargetMultiplexer.fromSiDevice(siDevice);
|
|
30
|
+
expect(muxer1 instanceof SiTargetMultiplexer).toBe(true);
|
|
31
|
+
const muxer2 = SiTargetMultiplexer.fromSiDevice(siDevice);
|
|
32
|
+
expect(muxer2).toBe(muxer1);
|
|
68
33
|
});
|
|
69
|
-
|
|
70
|
-
const siDevice = new
|
|
34
|
+
test('handles receiving', () => {
|
|
35
|
+
const siDevice = new SiDevice('handlesReceiving', {
|
|
71
36
|
driver: mockDriver({})
|
|
72
37
|
});
|
|
73
|
-
siDevice.setState(
|
|
74
|
-
const muxer =
|
|
75
|
-
|
|
38
|
+
siDevice.setState(SiDeviceState.Opened);
|
|
39
|
+
const muxer = SiTargetMultiplexer.fromSiDevice(siDevice);
|
|
40
|
+
expect(muxer instanceof SiTargetMultiplexer).toBe(true);
|
|
76
41
|
const receivedMessages = [];
|
|
77
42
|
const recordMessage = (e) => {
|
|
78
43
|
receivedMessages.push(e.message);
|
|
@@ -88,186 +53,186 @@ function mockDriver(driver) {
|
|
|
88
53
|
receivedRemoteMessages.push(e.message);
|
|
89
54
|
};
|
|
90
55
|
muxer.addEventListener('remoteMessage', recordRemoteMessage);
|
|
91
|
-
const directOnlyCommands = Object.keys(
|
|
56
|
+
const directOnlyCommands = Object.keys(DIRECT_DEVICE_INITIATED_COMMANDS).map(Number);
|
|
92
57
|
const randomMessage1 = testUtils.getRandomMessage({
|
|
93
58
|
command: testUtils.getRandomByteExcept(directOnlyCommands)
|
|
94
59
|
});
|
|
95
|
-
siDevice.dispatchEvent('receive', new
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
60
|
+
siDevice.dispatchEvent('receive', new SiDeviceReceiveEvent(siDevice, siProtocol.render(randomMessage1)));
|
|
61
|
+
expect(receivedMessages).toEqual([randomMessage1]);
|
|
62
|
+
expect(receivedDirectMessages).toEqual([]);
|
|
63
|
+
expect(receivedRemoteMessages).toEqual([]);
|
|
99
64
|
const randomMessage2 = testUtils.getRandomMessage({
|
|
100
65
|
command: testUtils.getRandomByteExcept(directOnlyCommands)
|
|
101
66
|
});
|
|
102
|
-
muxer.target =
|
|
103
|
-
siDevice.dispatchEvent('receive', new
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
67
|
+
muxer.target = SiTargetMultiplexerTarget.Direct;
|
|
68
|
+
siDevice.dispatchEvent('receive', new SiDeviceReceiveEvent(siDevice, siProtocol.render(randomMessage2)));
|
|
69
|
+
expect(receivedMessages).toEqual([randomMessage1, randomMessage2]);
|
|
70
|
+
expect(receivedDirectMessages).toEqual([randomMessage2]);
|
|
71
|
+
expect(receivedRemoteMessages).toEqual([]);
|
|
107
72
|
const randomMessage3 = testUtils.getRandomMessage({
|
|
108
73
|
command: testUtils.getRandomByteExcept(directOnlyCommands)
|
|
109
74
|
});
|
|
110
|
-
muxer.target =
|
|
111
|
-
siDevice.dispatchEvent('receive', new
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
75
|
+
muxer.target = SiTargetMultiplexerTarget.Remote;
|
|
76
|
+
siDevice.dispatchEvent('receive', new SiDeviceReceiveEvent(siDevice, siProtocol.render(randomMessage3)));
|
|
77
|
+
expect(receivedMessages).toEqual([randomMessage1, randomMessage2, randomMessage3]);
|
|
78
|
+
expect(receivedDirectMessages).toEqual([randomMessage2]);
|
|
79
|
+
expect(receivedRemoteMessages).toEqual([randomMessage3]);
|
|
115
80
|
muxer.removeEventListener('message', recordMessage);
|
|
116
81
|
muxer.removeEventListener('directMessage', recordDirectMessage);
|
|
117
82
|
muxer.removeEventListener('remoteMessage', recordRemoteMessage);
|
|
118
83
|
});
|
|
119
|
-
|
|
120
|
-
const siDevice = new
|
|
84
|
+
test('handles simple sending', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
85
|
+
const siDevice = new SiDevice('handlesSending0', {
|
|
121
86
|
driver: mockDriver({
|
|
122
87
|
send: () => Promise.resolve()
|
|
123
88
|
})
|
|
124
89
|
});
|
|
125
|
-
siDevice.setState(
|
|
126
|
-
const muxer =
|
|
127
|
-
|
|
90
|
+
siDevice.setState(SiDeviceState.Opened);
|
|
91
|
+
const muxer = SiTargetMultiplexer.fromSiDevice(siDevice);
|
|
92
|
+
expect(muxer instanceof SiTargetMultiplexer).toBe(true);
|
|
128
93
|
const randomMessage = testUtils.getRandomMessage({});
|
|
129
94
|
const timeState = { sendingFinished: false };
|
|
130
95
|
muxer.sendMessageToLatestTarget(randomMessage, 0, 1).then((responses) => {
|
|
131
|
-
|
|
132
|
-
|
|
96
|
+
expect(responses.length).toBe(0);
|
|
97
|
+
expect(muxer._test.sendQueue.length).toBe(0);
|
|
133
98
|
timeState.sendingFinished = true;
|
|
134
99
|
});
|
|
135
100
|
yield testUtils.advanceTimersByTime(0);
|
|
136
|
-
|
|
101
|
+
expect(timeState).toEqual({ sendingFinished: true });
|
|
137
102
|
}));
|
|
138
|
-
|
|
139
|
-
const siDevice = new
|
|
103
|
+
test('handles sending and waiting for 1 response', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
104
|
+
const siDevice = new SiDevice('handlesSending1', {
|
|
140
105
|
driver: mockDriver({
|
|
141
106
|
send: () => Promise.resolve()
|
|
142
107
|
})
|
|
143
108
|
});
|
|
144
|
-
siDevice.setState(
|
|
145
|
-
const muxer =
|
|
146
|
-
|
|
109
|
+
siDevice.setState(SiDeviceState.Opened);
|
|
110
|
+
const muxer = SiTargetMultiplexer.fromSiDevice(siDevice);
|
|
111
|
+
expect(muxer instanceof SiTargetMultiplexer).toBe(true);
|
|
147
112
|
const randomMessage = testUtils.getRandomMessage({});
|
|
148
113
|
const timeState = { sendingFinished: false };
|
|
149
114
|
muxer.sendMessageToLatestTarget(randomMessage, 1, 2).then((responses) => {
|
|
150
|
-
|
|
151
|
-
|
|
115
|
+
expect(responses.length).toBe(1);
|
|
116
|
+
expect(muxer._test.sendQueue.length).toBe(0);
|
|
152
117
|
timeState.sendingFinished = true;
|
|
153
118
|
});
|
|
154
119
|
setTimeout(() => {
|
|
155
|
-
siDevice.dispatchEvent('receive', new
|
|
120
|
+
siDevice.dispatchEvent('receive', new SiDeviceReceiveEvent(siDevice, siProtocol.render(randomMessage)));
|
|
156
121
|
}, 1);
|
|
157
122
|
yield testUtils.advanceTimersByTime(0);
|
|
158
|
-
|
|
123
|
+
expect(timeState).toEqual({ sendingFinished: false });
|
|
159
124
|
yield testUtils.advanceTimersByTime(1);
|
|
160
|
-
|
|
125
|
+
expect(timeState).toEqual({ sendingFinished: true });
|
|
161
126
|
}));
|
|
162
|
-
|
|
163
|
-
const siDevice = new
|
|
127
|
+
test('handles sending and waiting for 1 NAK', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
128
|
+
const siDevice = new SiDevice('handlesSending1NAK', {
|
|
164
129
|
driver: mockDriver({
|
|
165
130
|
send: () => Promise.resolve()
|
|
166
131
|
})
|
|
167
132
|
});
|
|
168
|
-
siDevice.setState(
|
|
169
|
-
const muxer =
|
|
170
|
-
|
|
133
|
+
siDevice.setState(SiDeviceState.Opened);
|
|
134
|
+
const muxer = SiTargetMultiplexer.fromSiDevice(siDevice);
|
|
135
|
+
expect(muxer instanceof SiTargetMultiplexer).toBe(true);
|
|
171
136
|
const randomMessage = testUtils.getRandomMessage({});
|
|
172
137
|
const timeState = { sendingFailed: false };
|
|
173
138
|
muxer.sendMessageToLatestTarget(randomMessage, 1, 2).catch(() => {
|
|
174
|
-
|
|
139
|
+
expect(muxer._test.sendQueue.length).toBe(0);
|
|
175
140
|
timeState.sendingFailed = true;
|
|
176
141
|
});
|
|
177
142
|
setTimeout(() => {
|
|
178
|
-
siDevice.dispatchEvent('receive', new
|
|
143
|
+
siDevice.dispatchEvent('receive', new SiDeviceReceiveEvent(siDevice, siProtocol.render({ mode: proto.NAK })));
|
|
179
144
|
}, 1);
|
|
180
145
|
yield testUtils.advanceTimersByTime(0);
|
|
181
|
-
|
|
146
|
+
expect(timeState).toEqual({ sendingFailed: false });
|
|
182
147
|
yield testUtils.advanceTimersByTime(1);
|
|
183
|
-
|
|
148
|
+
expect(timeState).toEqual({ sendingFailed: true });
|
|
184
149
|
}));
|
|
185
|
-
|
|
186
|
-
const siDevice = new
|
|
150
|
+
test('handles sending and waiting for 2 responses', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
151
|
+
const siDevice = new SiDevice('handlesSending2', {
|
|
187
152
|
driver: mockDriver({
|
|
188
153
|
send: () => Promise.resolve()
|
|
189
154
|
})
|
|
190
155
|
});
|
|
191
|
-
siDevice.setState(
|
|
192
|
-
const muxer =
|
|
193
|
-
|
|
156
|
+
siDevice.setState(SiDeviceState.Opened);
|
|
157
|
+
const muxer = SiTargetMultiplexer.fromSiDevice(siDevice);
|
|
158
|
+
expect(muxer instanceof SiTargetMultiplexer).toBe(true);
|
|
194
159
|
const randomMessage = testUtils.getRandomMessage({});
|
|
195
160
|
const timeState = { receive1: false, receive2: false, sendingFinished: false };
|
|
196
161
|
muxer.sendMessageToLatestTarget(randomMessage, 2, 3).then((responses) => {
|
|
197
|
-
|
|
198
|
-
|
|
162
|
+
expect(responses.length).toBe(2);
|
|
163
|
+
expect(muxer._test.sendQueue.length).toBe(0);
|
|
199
164
|
timeState.sendingFinished = true;
|
|
200
165
|
});
|
|
201
166
|
setTimeout(() => {
|
|
202
|
-
siDevice.dispatchEvent('receive', new
|
|
167
|
+
siDevice.dispatchEvent('receive', new SiDeviceReceiveEvent(siDevice, siProtocol.render(randomMessage)));
|
|
203
168
|
timeState.receive1 = true;
|
|
204
169
|
}, 1);
|
|
205
170
|
setTimeout(() => {
|
|
206
|
-
siDevice.dispatchEvent('receive', new
|
|
171
|
+
siDevice.dispatchEvent('receive', new SiDeviceReceiveEvent(siDevice, siProtocol.render(randomMessage)));
|
|
207
172
|
timeState.receive2 = true;
|
|
208
173
|
}, 2);
|
|
209
174
|
yield testUtils.advanceTimersByTime(0);
|
|
210
|
-
|
|
175
|
+
expect(timeState).toEqual({ receive1: false, receive2: false, sendingFinished: false });
|
|
211
176
|
yield testUtils.advanceTimersByTime(1);
|
|
212
|
-
|
|
177
|
+
expect(timeState).toEqual({ receive1: true, receive2: false, sendingFinished: false });
|
|
213
178
|
yield testUtils.nTimesAsync(10, () => testUtils.advanceTimersByTime(1));
|
|
214
|
-
|
|
179
|
+
expect(timeState).toEqual({ receive1: true, receive2: true, sendingFinished: true });
|
|
215
180
|
}));
|
|
216
|
-
|
|
217
|
-
const siDevice = new
|
|
181
|
+
test('handles sending and timing out waiting for 1 response', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
182
|
+
const siDevice = new SiDevice('handlesSending1Timeout', {
|
|
218
183
|
driver: mockDriver({
|
|
219
184
|
send: () => Promise.resolve()
|
|
220
185
|
})
|
|
221
186
|
});
|
|
222
|
-
siDevice.setState(
|
|
223
|
-
const muxer =
|
|
224
|
-
|
|
187
|
+
siDevice.setState(SiDeviceState.Opened);
|
|
188
|
+
const muxer = SiTargetMultiplexer.fromSiDevice(siDevice);
|
|
189
|
+
expect(muxer instanceof SiTargetMultiplexer).toBe(true);
|
|
225
190
|
const randomMessage = testUtils.getRandomMessage({});
|
|
226
191
|
const timeState = { timedOut: false };
|
|
227
192
|
muxer.sendMessageToLatestTarget(randomMessage, 1, 1).catch(() => {
|
|
228
|
-
|
|
193
|
+
expect(muxer._test.sendQueue.length).toBe(0);
|
|
229
194
|
timeState.timedOut = true;
|
|
230
195
|
});
|
|
231
196
|
yield testUtils.advanceTimersByTime(0);
|
|
232
|
-
|
|
197
|
+
expect(timeState).toEqual({ timedOut: false });
|
|
233
198
|
yield testUtils.advanceTimersByTime(1);
|
|
234
|
-
|
|
199
|
+
expect(timeState).toEqual({ timedOut: true });
|
|
235
200
|
}));
|
|
236
|
-
|
|
237
|
-
const siDevice = new
|
|
201
|
+
test('handles sending and timing out waiting for 2 responses', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
202
|
+
const siDevice = new SiDevice('handlesSending2Timeout', {
|
|
238
203
|
driver: mockDriver({
|
|
239
204
|
send: () => Promise.resolve()
|
|
240
205
|
})
|
|
241
206
|
});
|
|
242
|
-
siDevice.setState(
|
|
243
|
-
const muxer =
|
|
244
|
-
|
|
207
|
+
siDevice.setState(SiDeviceState.Opened);
|
|
208
|
+
const muxer = SiTargetMultiplexer.fromSiDevice(siDevice);
|
|
209
|
+
expect(muxer instanceof SiTargetMultiplexer).toBe(true);
|
|
245
210
|
const randomMessage = testUtils.getRandomMessage({});
|
|
246
211
|
const timeState = { receive1: false, timedOut: false };
|
|
247
212
|
muxer.sendMessageToLatestTarget(randomMessage, 2, 2).catch(() => {
|
|
248
|
-
|
|
213
|
+
expect(muxer._test.sendQueue.length).toBe(0);
|
|
249
214
|
timeState.timedOut = true;
|
|
250
215
|
});
|
|
251
216
|
setTimeout(() => {
|
|
252
|
-
siDevice.dispatchEvent('receive', new
|
|
217
|
+
siDevice.dispatchEvent('receive', new SiDeviceReceiveEvent(siDevice, siProtocol.render(randomMessage)));
|
|
253
218
|
timeState.receive1 = true;
|
|
254
219
|
}, 1);
|
|
255
220
|
yield testUtils.advanceTimersByTime(0);
|
|
256
|
-
|
|
221
|
+
expect(timeState).toEqual({ receive1: false, timedOut: false });
|
|
257
222
|
yield testUtils.advanceTimersByTime(1);
|
|
258
|
-
|
|
223
|
+
expect(timeState).toEqual({ receive1: true, timedOut: false });
|
|
259
224
|
yield testUtils.advanceTimersByTime(1);
|
|
260
|
-
|
|
225
|
+
expect(timeState).toEqual({ receive1: true, timedOut: true });
|
|
261
226
|
}));
|
|
262
|
-
|
|
263
|
-
const siDevice = new
|
|
227
|
+
test('does not time out, if it already succeeded', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
228
|
+
const siDevice = new SiDevice('noTimeoutIfSucceeded', {
|
|
264
229
|
driver: mockDriver({
|
|
265
230
|
send: () => Promise.resolve()
|
|
266
231
|
})
|
|
267
232
|
});
|
|
268
|
-
siDevice.setState(
|
|
269
|
-
const muxer =
|
|
270
|
-
|
|
233
|
+
siDevice.setState(SiDeviceState.Opened);
|
|
234
|
+
const muxer = SiTargetMultiplexer.fromSiDevice(siDevice);
|
|
235
|
+
expect(muxer instanceof SiTargetMultiplexer).toBe(true);
|
|
271
236
|
const randomMessage = testUtils.getRandomMessage({});
|
|
272
237
|
const timeoutInMiliseconds = 2;
|
|
273
238
|
const timeState = {
|
|
@@ -285,43 +250,43 @@ function mockDriver(driver) {
|
|
|
285
250
|
timeState.timedOut = true;
|
|
286
251
|
});
|
|
287
252
|
setTimeout(() => {
|
|
288
|
-
muxer._test.sendQueue[0].state =
|
|
253
|
+
muxer._test.sendQueue[0].state = SiSendTaskState.Succeeded;
|
|
289
254
|
timeState.madeSuccessful = true;
|
|
290
255
|
}, 1);
|
|
291
256
|
setTimeout(() => {
|
|
292
257
|
timeState.timeoutPassed = true;
|
|
293
258
|
}, timeoutInMiliseconds);
|
|
294
259
|
yield testUtils.advanceTimersByTime(0);
|
|
295
|
-
|
|
260
|
+
expect(timeState).toEqual({
|
|
296
261
|
madeSuccessful: false,
|
|
297
262
|
timeoutPassed: false,
|
|
298
263
|
timedOut: false,
|
|
299
264
|
succeeded: false
|
|
300
265
|
});
|
|
301
266
|
yield testUtils.advanceTimersByTime(1);
|
|
302
|
-
|
|
267
|
+
expect(timeState).toEqual({
|
|
303
268
|
madeSuccessful: true,
|
|
304
269
|
timeoutPassed: false,
|
|
305
270
|
timedOut: false,
|
|
306
271
|
succeeded: false
|
|
307
272
|
});
|
|
308
273
|
yield testUtils.advanceTimersByTime(1);
|
|
309
|
-
|
|
274
|
+
expect(timeState).toEqual({
|
|
310
275
|
madeSuccessful: true,
|
|
311
276
|
timeoutPassed: true,
|
|
312
277
|
timedOut: false,
|
|
313
278
|
succeeded: false
|
|
314
279
|
});
|
|
315
280
|
}));
|
|
316
|
-
|
|
317
|
-
const siDevice = new
|
|
281
|
+
test('does not succeed, if response for different command arrives', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
282
|
+
const siDevice = new SiDevice('differentCommand', {
|
|
318
283
|
driver: mockDriver({
|
|
319
284
|
send: () => Promise.resolve()
|
|
320
285
|
})
|
|
321
286
|
});
|
|
322
|
-
siDevice.setState(
|
|
323
|
-
const muxer =
|
|
324
|
-
|
|
287
|
+
siDevice.setState(SiDeviceState.Opened);
|
|
288
|
+
const muxer = SiTargetMultiplexer.fromSiDevice(siDevice);
|
|
289
|
+
expect(muxer instanceof SiTargetMultiplexer).toBe(true);
|
|
325
290
|
const randomMessage = testUtils.getRandomMessage({});
|
|
326
291
|
const timeState = { receive1: false, timedOut: false, succeeded: false };
|
|
327
292
|
muxer
|
|
@@ -330,106 +295,106 @@ function mockDriver(driver) {
|
|
|
330
295
|
timeState.succeeded = true;
|
|
331
296
|
})
|
|
332
297
|
.catch(() => {
|
|
333
|
-
|
|
298
|
+
expect(muxer._test.sendQueue.length).toBe(0);
|
|
334
299
|
timeState.timedOut = true;
|
|
335
300
|
});
|
|
336
301
|
setTimeout(() => {
|
|
337
|
-
siDevice.dispatchEvent('receive', new
|
|
302
|
+
siDevice.dispatchEvent('receive', new SiDeviceReceiveEvent(siDevice, siProtocol.render({
|
|
338
303
|
command: testUtils.getRandomByteExcept([randomMessage.command]),
|
|
339
304
|
parameters: randomMessage.parameters
|
|
340
305
|
})));
|
|
341
306
|
timeState.receive1 = true;
|
|
342
307
|
}, 1);
|
|
343
308
|
yield testUtils.advanceTimersByTime(0);
|
|
344
|
-
|
|
309
|
+
expect(timeState).toEqual({ receive1: false, timedOut: false, succeeded: false });
|
|
345
310
|
yield testUtils.advanceTimersByTime(1);
|
|
346
|
-
|
|
311
|
+
expect(timeState).toEqual({ receive1: true, timedOut: false, succeeded: false });
|
|
347
312
|
yield testUtils.advanceTimersByTime(1);
|
|
348
|
-
|
|
313
|
+
expect(timeState).toEqual({ receive1: true, timedOut: true, succeeded: false });
|
|
349
314
|
}));
|
|
350
|
-
|
|
351
|
-
const siDevice = new
|
|
315
|
+
test('cannot send to unopened SiDevice', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
316
|
+
const siDevice = new SiDevice('cannotSendToUnopened', {
|
|
352
317
|
driver: mockDriver({})
|
|
353
318
|
});
|
|
354
|
-
const muxer =
|
|
355
|
-
|
|
319
|
+
const muxer = SiTargetMultiplexer.fromSiDevice(siDevice);
|
|
320
|
+
expect(muxer instanceof SiTargetMultiplexer).toBe(true);
|
|
356
321
|
const randomMessage = testUtils.getRandomMessage({});
|
|
357
322
|
const timeState = { timedOut: false };
|
|
358
323
|
muxer.sendMessageToLatestTarget(randomMessage, 1, 1).catch(() => {
|
|
359
|
-
|
|
324
|
+
expect(muxer._test.sendQueue.length).toBe(0);
|
|
360
325
|
timeState.timedOut = true;
|
|
361
326
|
});
|
|
362
327
|
yield testUtils.advanceTimersByTime(0);
|
|
363
|
-
|
|
328
|
+
expect(timeState).toEqual({ timedOut: false });
|
|
364
329
|
yield testUtils.advanceTimersByTime(1);
|
|
365
|
-
|
|
330
|
+
expect(timeState).toEqual({ timedOut: true });
|
|
366
331
|
}));
|
|
367
|
-
|
|
368
|
-
const siDevice = new
|
|
332
|
+
test('handles sending as soon as device is openend', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
333
|
+
const siDevice = new SiDevice('handlesSendingAsSoonAsOpened', {
|
|
369
334
|
driver: mockDriver({
|
|
370
335
|
send: () => Promise.resolve()
|
|
371
336
|
})
|
|
372
337
|
});
|
|
373
|
-
const muxer =
|
|
374
|
-
|
|
338
|
+
const muxer = SiTargetMultiplexer.fromSiDevice(siDevice);
|
|
339
|
+
expect(muxer instanceof SiTargetMultiplexer).toBe(true);
|
|
375
340
|
const randomMessage = testUtils.getRandomMessage({});
|
|
376
341
|
const timeState = { deviceOpened: false, sendingFinished: false };
|
|
377
342
|
muxer.sendMessageToLatestTarget(randomMessage, 0, 3).then(() => {
|
|
378
|
-
|
|
343
|
+
expect(muxer._test.sendQueue.length).toBe(0);
|
|
379
344
|
timeState.sendingFinished = true;
|
|
380
345
|
});
|
|
381
346
|
setTimeout(() => {
|
|
382
|
-
siDevice.setState(
|
|
347
|
+
siDevice.setState(SiDeviceState.Opened);
|
|
383
348
|
timeState.deviceOpened = true;
|
|
384
349
|
}, 1);
|
|
385
350
|
yield testUtils.advanceTimersByTime(0);
|
|
386
|
-
|
|
351
|
+
expect(timeState).toEqual({ deviceOpened: false, sendingFinished: false });
|
|
387
352
|
yield testUtils.advanceTimersByTime(1);
|
|
388
|
-
|
|
353
|
+
expect(timeState).toEqual({ deviceOpened: true, sendingFinished: false });
|
|
389
354
|
yield testUtils.advanceTimersByTime(1);
|
|
390
|
-
|
|
355
|
+
expect(timeState).toEqual({ deviceOpened: true, sendingFinished: true });
|
|
391
356
|
}));
|
|
392
|
-
|
|
393
|
-
const siDevice = new
|
|
357
|
+
test('sends all as soon as device is openend', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
358
|
+
const siDevice = new SiDevice('sendsAllAsSoonAsOpened', {
|
|
394
359
|
driver: mockDriver({
|
|
395
360
|
send: () => Promise.resolve()
|
|
396
361
|
})
|
|
397
362
|
});
|
|
398
|
-
const muxer =
|
|
399
|
-
|
|
363
|
+
const muxer = SiTargetMultiplexer.fromSiDevice(siDevice);
|
|
364
|
+
expect(muxer instanceof SiTargetMultiplexer).toBe(true);
|
|
400
365
|
const randomMessage = testUtils.getRandomMessage({});
|
|
401
366
|
const timeState = { deviceOpened: false, numSuccess: 0, allSendingFinished: false };
|
|
402
367
|
const getMuxerPromise = () => muxer.sendMessageToLatestTarget(randomMessage, 0, 4).then(() => {
|
|
403
368
|
timeState.numSuccess = (timeState.numSuccess || 0) + 1;
|
|
404
369
|
});
|
|
405
370
|
Promise.all([getMuxerPromise(), getMuxerPromise()]).then(() => {
|
|
406
|
-
|
|
371
|
+
expect(muxer._test.sendQueue.length).toBe(0);
|
|
407
372
|
timeState.allSendingFinished = true;
|
|
408
373
|
});
|
|
409
374
|
setTimeout(() => {
|
|
410
|
-
siDevice.setState(
|
|
375
|
+
siDevice.setState(SiDeviceState.Opened);
|
|
411
376
|
timeState.deviceOpened = true;
|
|
412
377
|
}, 1);
|
|
413
378
|
yield testUtils.advanceTimersByTime(0);
|
|
414
|
-
|
|
379
|
+
expect(timeState).toEqual({ deviceOpened: false, numSuccess: 0, allSendingFinished: false });
|
|
415
380
|
yield testUtils.advanceTimersByTime(1);
|
|
416
|
-
|
|
381
|
+
expect(timeState).toEqual({ deviceOpened: true, numSuccess: 0, allSendingFinished: false });
|
|
417
382
|
yield testUtils.advanceTimersByTime(1);
|
|
418
|
-
|
|
383
|
+
expect(timeState).toEqual({ deviceOpened: true, numSuccess: 1, allSendingFinished: false });
|
|
419
384
|
yield testUtils.advanceTimersByTime(1);
|
|
420
|
-
|
|
385
|
+
expect(timeState).toEqual({ deviceOpened: true, numSuccess: 2, allSendingFinished: false });
|
|
421
386
|
yield testUtils.advanceTimersByTime(0); // for Promise.all
|
|
422
|
-
|
|
387
|
+
expect(timeState).toEqual({ deviceOpened: true, numSuccess: 2, allSendingFinished: true });
|
|
423
388
|
}));
|
|
424
|
-
|
|
425
|
-
const siDevice = new
|
|
389
|
+
test('aborts sending as soon as device is closed', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
390
|
+
const siDevice = new SiDevice('abortsAllAsSoonAsClosed', {
|
|
426
391
|
driver: mockDriver({
|
|
427
392
|
send: () => Promise.resolve()
|
|
428
393
|
})
|
|
429
394
|
});
|
|
430
|
-
siDevice.setState(
|
|
431
|
-
const muxer =
|
|
432
|
-
|
|
395
|
+
siDevice.setState(SiDeviceState.Opened);
|
|
396
|
+
const muxer = SiTargetMultiplexer.fromSiDevice(siDevice);
|
|
397
|
+
expect(muxer instanceof SiTargetMultiplexer).toBe(true);
|
|
433
398
|
const randomMessage = testUtils.getRandomMessage({});
|
|
434
399
|
const timeState = {
|
|
435
400
|
numSuccess: 0,
|
|
@@ -446,143 +411,143 @@ function mockDriver(driver) {
|
|
|
446
411
|
timeState.numAbort = (timeState.numAbort || 0) + 1;
|
|
447
412
|
}, () => { });
|
|
448
413
|
Promise.all([getMuxerPromise(), getMuxerPromise(), getMuxerPromise()]).then(() => {
|
|
449
|
-
|
|
414
|
+
expect(muxer._test.sendQueue.length).toBe(0);
|
|
450
415
|
timeState.allSendingFinished = true;
|
|
451
416
|
}, () => { });
|
|
452
417
|
setTimeout(() => {
|
|
453
|
-
siDevice.setState(
|
|
418
|
+
siDevice.setState(SiDeviceState.Closing);
|
|
454
419
|
timeState.deviceClosed = true;
|
|
455
420
|
}, 1);
|
|
456
421
|
yield testUtils.advanceTimersByTime(0);
|
|
457
|
-
|
|
422
|
+
expect(timeState).toEqual({
|
|
458
423
|
numSuccess: 1,
|
|
459
424
|
numAbort: 0,
|
|
460
425
|
deviceClosed: false,
|
|
461
426
|
allSendingFinished: false
|
|
462
427
|
});
|
|
463
428
|
yield testUtils.advanceTimersByTime(1);
|
|
464
|
-
|
|
429
|
+
expect(timeState).toEqual({
|
|
465
430
|
numSuccess: 1,
|
|
466
431
|
numAbort: 2,
|
|
467
432
|
deviceClosed: true,
|
|
468
433
|
allSendingFinished: false
|
|
469
434
|
});
|
|
470
435
|
yield testUtils.advanceTimersByTime(0); // for Promise.all (not called)
|
|
471
|
-
|
|
436
|
+
expect(timeState).toEqual({
|
|
472
437
|
numSuccess: 1,
|
|
473
438
|
numAbort: 2,
|
|
474
439
|
deviceClosed: true,
|
|
475
440
|
allSendingFinished: false
|
|
476
441
|
});
|
|
477
442
|
}));
|
|
478
|
-
|
|
479
|
-
const siDevice = new
|
|
443
|
+
test('handles device failing to send', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
444
|
+
const siDevice = new SiDevice('handlesDeviceFailingToSend', {
|
|
480
445
|
driver: mockDriver({
|
|
481
446
|
send: () => Promise.reject(new Error('test'))
|
|
482
447
|
})
|
|
483
448
|
});
|
|
484
|
-
siDevice.setState(
|
|
485
|
-
const muxer =
|
|
486
|
-
|
|
449
|
+
siDevice.setState(SiDeviceState.Opened);
|
|
450
|
+
const muxer = SiTargetMultiplexer.fromSiDevice(siDevice);
|
|
451
|
+
expect(muxer instanceof SiTargetMultiplexer).toBe(true);
|
|
487
452
|
const randomMessage = testUtils.getRandomMessage({});
|
|
488
453
|
const timeState = { timedOut: false };
|
|
489
454
|
muxer.sendMessageToLatestTarget(randomMessage, 1, 1).catch(() => {
|
|
490
|
-
|
|
455
|
+
expect(muxer._test.sendQueue.length).toBe(0);
|
|
491
456
|
timeState.timedOut = true;
|
|
492
457
|
});
|
|
493
458
|
yield testUtils.advanceTimersByTime(0);
|
|
494
|
-
|
|
459
|
+
expect(timeState).toEqual({ timedOut: false });
|
|
495
460
|
yield testUtils.advanceTimersByTime(1);
|
|
496
|
-
|
|
461
|
+
expect(timeState).toEqual({ timedOut: true });
|
|
497
462
|
}));
|
|
498
|
-
|
|
499
|
-
const siDevice = new
|
|
500
|
-
siDevice.setState(
|
|
501
|
-
const muxer =
|
|
502
|
-
muxer.latestTarget =
|
|
463
|
+
test('cannot send to unknown target', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
464
|
+
const siDevice = new SiDevice('undefinedTarget', { driver: mockDriver({}) });
|
|
465
|
+
siDevice.setState(SiDeviceState.Opened);
|
|
466
|
+
const muxer = SiTargetMultiplexer.fromSiDevice(siDevice);
|
|
467
|
+
muxer.latestTarget = SiTargetMultiplexerTarget.Direct;
|
|
503
468
|
const randomMessage = testUtils.getRandomMessage({});
|
|
504
469
|
const timeState = { setToUnknownFailed: false };
|
|
505
|
-
muxer.sendMessage(
|
|
506
|
-
|
|
470
|
+
muxer.sendMessage(SiTargetMultiplexerTarget.Unknown, randomMessage, 1, 1).catch(() => {
|
|
471
|
+
expect(muxer._test.sendQueue.length).toBe(0);
|
|
507
472
|
timeState.setToUnknownFailed = true;
|
|
508
473
|
});
|
|
509
474
|
yield testUtils.advanceTimersByTime(0);
|
|
510
|
-
|
|
475
|
+
expect(timeState).toEqual({ setToUnknownFailed: true });
|
|
511
476
|
}));
|
|
512
|
-
|
|
513
|
-
const siDevice = new
|
|
514
|
-
siDevice.setState(
|
|
515
|
-
const muxer =
|
|
516
|
-
muxer.latestTarget =
|
|
477
|
+
test('cannot send to switching target', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
478
|
+
const siDevice = new SiDevice('switchingTarget', { driver: mockDriver({}) });
|
|
479
|
+
siDevice.setState(SiDeviceState.Opened);
|
|
480
|
+
const muxer = SiTargetMultiplexer.fromSiDevice(siDevice);
|
|
481
|
+
muxer.latestTarget = SiTargetMultiplexerTarget.Direct;
|
|
517
482
|
const randomMessage = testUtils.getRandomMessage({});
|
|
518
483
|
const timeState = { setToSwitchingFailed: false };
|
|
519
|
-
muxer.sendMessage(
|
|
520
|
-
|
|
484
|
+
muxer.sendMessage(SiTargetMultiplexerTarget.Switching, randomMessage, 1, 1).catch(() => {
|
|
485
|
+
expect(muxer._test.sendQueue.length).toBe(0);
|
|
521
486
|
timeState.setToSwitchingFailed = true;
|
|
522
487
|
});
|
|
523
488
|
yield testUtils.advanceTimersByTime(0);
|
|
524
|
-
|
|
489
|
+
expect(timeState).toEqual({ setToSwitchingFailed: true });
|
|
525
490
|
}));
|
|
526
|
-
|
|
527
|
-
const siDevice = new
|
|
491
|
+
test('handles error switching target', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
492
|
+
const siDevice = new SiDevice('errorSwitchingTarget', {
|
|
528
493
|
driver: mockDriver({
|
|
529
494
|
send: () => Promise.reject(new Error('test'))
|
|
530
495
|
})
|
|
531
496
|
});
|
|
532
|
-
siDevice.setState(
|
|
533
|
-
const muxer =
|
|
534
|
-
muxer.latestTarget =
|
|
497
|
+
siDevice.setState(SiDeviceState.Opened);
|
|
498
|
+
const muxer = SiTargetMultiplexer.fromSiDevice(siDevice);
|
|
499
|
+
muxer.latestTarget = SiTargetMultiplexerTarget.Direct;
|
|
535
500
|
const randomMessage = testUtils.getRandomMessage({});
|
|
536
501
|
const timeState = { setTargetFailed: false };
|
|
537
|
-
muxer.sendMessage(
|
|
502
|
+
muxer.sendMessage(SiTargetMultiplexerTarget.Remote, randomMessage, 1, 1).catch(() => {
|
|
538
503
|
timeState.setTargetFailed = true;
|
|
539
504
|
});
|
|
540
505
|
yield testUtils.nTimesAsync(2, () => testUtils.advanceTimersByTime(0));
|
|
541
|
-
|
|
542
|
-
|
|
506
|
+
expect(muxer.target).toEqual(SiTargetMultiplexerTarget.Unknown);
|
|
507
|
+
expect(timeState).toEqual({ setTargetFailed: true });
|
|
543
508
|
}));
|
|
544
|
-
|
|
545
|
-
const siDevice = new
|
|
509
|
+
test('handles unclear target switch response', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
510
|
+
const siDevice = new SiDevice('errorSwitchingTarget', {
|
|
546
511
|
driver: mockDriver({
|
|
547
512
|
send: () => {
|
|
548
513
|
setTimeout(() => {
|
|
549
|
-
siDevice.dispatchEvent('receive', new
|
|
550
|
-
command:
|
|
551
|
-
parameters: [
|
|
514
|
+
siDevice.dispatchEvent('receive', new SiDeviceReceiveEvent(siDevice, siProtocol.render({
|
|
515
|
+
command: proto.cmd.SET_MS,
|
|
516
|
+
parameters: [SiTargetMultiplexerTarget.Direct]
|
|
552
517
|
})));
|
|
553
518
|
}, 0);
|
|
554
519
|
return Promise.resolve();
|
|
555
520
|
}
|
|
556
521
|
})
|
|
557
522
|
});
|
|
558
|
-
siDevice.setState(
|
|
559
|
-
const muxer =
|
|
560
|
-
muxer.latestTarget =
|
|
523
|
+
siDevice.setState(SiDeviceState.Opened);
|
|
524
|
+
const muxer = SiTargetMultiplexer.fromSiDevice(siDevice);
|
|
525
|
+
muxer.latestTarget = SiTargetMultiplexerTarget.Direct;
|
|
561
526
|
const randomMessage = testUtils.getRandomMessage({});
|
|
562
527
|
const timeState = { setTargetFailed: false };
|
|
563
|
-
muxer.sendMessage(
|
|
528
|
+
muxer.sendMessage(SiTargetMultiplexerTarget.Remote, randomMessage, 1, 1).catch(() => {
|
|
564
529
|
timeState.setTargetFailed = true;
|
|
565
530
|
});
|
|
566
531
|
yield testUtils.nTimesAsync(2, () => testUtils.advanceTimersByTime(0));
|
|
567
|
-
|
|
568
|
-
|
|
532
|
+
expect(muxer.target).toEqual(SiTargetMultiplexerTarget.Unknown);
|
|
533
|
+
expect(timeState).toEqual({ setTargetFailed: true });
|
|
569
534
|
}));
|
|
570
|
-
|
|
571
|
-
const siDevice = new
|
|
535
|
+
test('handles direct device-initiated command', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
536
|
+
const siDevice = new SiDevice('errorSwitchingTarget', {
|
|
572
537
|
driver: mockDriver({
|
|
573
538
|
send: () => Promise.reject(new Error('test'))
|
|
574
539
|
})
|
|
575
540
|
});
|
|
576
|
-
siDevice.setState(
|
|
577
|
-
const muxer =
|
|
541
|
+
siDevice.setState(SiDeviceState.Opened);
|
|
542
|
+
const muxer = SiTargetMultiplexer.fromSiDevice(siDevice);
|
|
578
543
|
const deviceInitiatedMessage = siProtocol.render({
|
|
579
|
-
command:
|
|
544
|
+
command: proto.cmd.SI5_DET,
|
|
580
545
|
parameters: [0x00, 0x0a, 0x00, 0x04, 0x19, 0x02]
|
|
581
546
|
});
|
|
582
|
-
siDevice.dispatchEvent('receive', new
|
|
547
|
+
siDevice.dispatchEvent('receive', new SiDeviceReceiveEvent(siDevice, deviceInitiatedMessage));
|
|
583
548
|
yield testUtils.nTimesAsync(10, () => testUtils.advanceTimersByTime(1));
|
|
584
|
-
|
|
585
|
-
|
|
549
|
+
expect(muxer.target).toEqual(SiTargetMultiplexerTarget.Direct);
|
|
550
|
+
expect(muxer.latestTarget).toEqual(SiTargetMultiplexerTarget.Direct);
|
|
586
551
|
}));
|
|
587
552
|
});
|
|
588
553
|
//# sourceMappingURL=SiTargetMultiplexer.test.js.map
|