@neurodevs/node-lsl 19.0.0 → 20.0.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/build/__tests__/AbstractPackageTest.d.ts +11 -11
- package/build/__tests__/AbstractPackageTest.js +26 -30
- package/build/__tests__/AbstractPackageTest.js.map +1 -1
- package/build/__tests__/impl/BleDeviceController.test.d.ts +1 -1
- package/build/__tests__/impl/BleDeviceController.test.js +8 -10
- package/build/__tests__/impl/BleDeviceController.test.js.map +1 -1
- package/build/__tests__/impl/LslEventMarkerEmitter.test.js +13 -13
- package/build/__tests__/impl/LslEventMarkerEmitter.test.js.map +1 -1
- package/build/__tests__/impl/LslStreamInfo.test.js +2 -2
- package/build/__tests__/impl/LslStreamInfo.test.js.map +1 -1
- package/build/__tests__/impl/LslStreamInlet.test.d.ts +3 -5
- package/build/__tests__/impl/LslStreamInlet.test.js +13 -46
- package/build/__tests__/impl/LslStreamInlet.test.js.map +1 -1
- package/build/__tests__/impl/LslStreamOutlet.test.js +7 -12
- package/build/__tests__/impl/LslStreamOutlet.test.js.map +1 -1
- package/build/__tests__/impl/LslWebSocketBridge.test.js +9 -10
- package/build/__tests__/impl/LslWebSocketBridge.test.js.map +1 -1
- package/build/__tests__/impl/WindowedClockRegressor.test.js +1 -1
- package/build/__tests__/impl/WindowedClockRegressor.test.js.map +1 -1
- package/build/assertions.js +1 -1
- package/build/assertions.js.map +1 -1
- package/build/impl/LslEventMarkerEmitter.d.ts +12 -12
- package/build/impl/LslEventMarkerEmitter.js.map +1 -1
- package/build/impl/LslStreamInfo.d.ts +7 -7
- package/build/impl/LslStreamInfo.js.map +1 -1
- package/build/impl/LslStreamInlet.d.ts +63 -21
- package/build/impl/LslStreamInlet.js +221 -65
- package/build/impl/LslStreamInlet.js.map +1 -1
- package/build/impl/LslStreamOutlet.d.ts +15 -14
- package/build/impl/LslStreamOutlet.js +32 -36
- package/build/impl/LslStreamOutlet.js.map +1 -1
- package/build/impl/LslWebSocketBridge.d.ts +10 -10
- package/build/impl/LslWebSocketBridge.js.map +1 -1
- package/build/impl/clocks/WindowedClockRegressor.js.map +1 -0
- package/build/impl/controllers/BleDeviceController.d.ts +1 -1
- package/build/impl/controllers/BleDeviceController.js +1 -1
- package/build/impl/controllers/BleDeviceController.js.map +1 -1
- package/build/index.d.ts +27 -23
- package/build/index.js +32 -29
- package/build/index.js.map +1 -1
- package/build/scripts/{runLslEventMarkerEmitter.js → runLslEmitter.js} +5 -4
- package/build/scripts/runLslEmitter.js.map +1 -0
- package/build/scripts/{runLslStreamOutlet.js → runLslOutlet.js} +1 -1
- package/build/scripts/runLslOutlet.js.map +1 -0
- package/build/scripts/runMuse.js +1 -1
- package/build/scripts/runMuse.js.map +1 -1
- package/build/testDoubles/ClockRegressor/FakeClockRegressor.d.ts +1 -1
- package/build/testDoubles/{EventMarkerEmitter/FakeEventMarkerEmitter.d.ts → LslEmitter/FakeLslEmitter.d.ts} +4 -4
- package/build/testDoubles/{EventMarkerEmitter/FakeEventMarkerEmitter.js → LslEmitter/FakeLslEmitter.js} +7 -7
- package/build/testDoubles/LslEmitter/FakeLslEmitter.js.map +1 -0
- package/build/testDoubles/{EventMarkerEmitter/SpyEventMarkerEmitter.d.ts → LslEmitter/SpyLslEmitter.d.ts} +4 -4
- package/build/testDoubles/{EventMarkerEmitter/SpyEventMarkerEmitter.js → LslEmitter/SpyLslEmitter.js} +3 -3
- package/build/testDoubles/LslEmitter/SpyLslEmitter.js.map +1 -0
- package/build/testDoubles/LslEmitter/ThrowingLslEmitter.d.ts +9 -0
- package/build/testDoubles/{EventMarkerEmitter/ThrowingEventMarkerEmitter.js → LslEmitter/ThrowingLslEmitter.js} +2 -2
- package/build/testDoubles/LslEmitter/ThrowingLslEmitter.js.map +1 -0
- package/build/testDoubles/{StreamInfo/FakeStreamInfo.d.ts → LslInfo/FakeLslInfo.d.ts} +4 -4
- package/build/testDoubles/{StreamInfo/FakeStreamInfo.js → LslInfo/FakeLslInfo.js} +7 -7
- package/build/testDoubles/LslInfo/FakeLslInfo.js.map +1 -0
- package/build/testDoubles/LslInfo/SpyLslInfo.d.ts +10 -0
- package/build/testDoubles/{StreamInfo/SpyStreamInfo.js → LslInfo/SpyLslInfo.js} +4 -4
- package/build/testDoubles/LslInfo/SpyLslInfo.js.map +1 -0
- package/build/testDoubles/{StreamInlet/FakeStreamInlet.d.ts → LslInlet/FakeLslInlet.d.ts} +4 -4
- package/build/testDoubles/{StreamInlet/FakeStreamInlet.js → LslInlet/FakeLslInlet.js} +12 -11
- package/build/testDoubles/LslInlet/FakeLslInlet.js.map +1 -0
- package/build/testDoubles/LslInlet/SpyLslInlet.d.ts +4 -0
- package/build/testDoubles/{StreamInlet/SpyStreamInlet.js → LslInlet/SpyLslInlet.js} +2 -2
- package/build/testDoubles/LslInlet/SpyLslInlet.js.map +1 -0
- package/build/testDoubles/{StreamOutlet/FakeStreamOutlet.d.ts → LslOutlet/FakeLslOutlet.d.ts} +5 -5
- package/build/testDoubles/{StreamOutlet/FakeStreamOutlet.js → LslOutlet/FakeLslOutlet.js} +8 -8
- package/build/testDoubles/LslOutlet/FakeLslOutlet.js.map +1 -0
- package/build/testDoubles/LslWsBridge/FakeLslWsBridge.d.ts +14 -0
- package/build/testDoubles/{WebSocketBridge/FakeWebSocketBridge.js → LslWsBridge/FakeLslWsBridge.js} +14 -14
- package/build/testDoubles/LslWsBridge/FakeLslWsBridge.js.map +1 -0
- package/build/testDoubles/LslWsBridge/SpyLslWsBridge.d.ts +4 -0
- package/build/testDoubles/{WebSocketBridge/SpyLslWebSocketBridge.js → LslWsBridge/SpyLslWsBridge.js} +2 -2
- package/build/testDoubles/LslWsBridge/SpyLslWsBridge.js.map +1 -0
- package/build/testDoubles/consts.d.ts +2 -12
- package/build/testDoubles/consts.js +0 -20
- package/build/testDoubles/consts.js.map +1 -1
- package/build/testDoubles/generateRandomOutletOptions.d.ts +2 -2
- package/build/testDoubles/generateRandomOutletOptions.js.map +1 -1
- package/package.json +4 -3
- package/src/__tests__/AbstractPackageTest.ts +29 -38
- package/src/__tests__/impl/BleDeviceController.test.ts +8 -10
- package/src/__tests__/impl/LslEventMarkerEmitter.test.ts +19 -24
- package/src/__tests__/impl/LslStreamInfo.test.ts +8 -8
- package/src/__tests__/impl/LslStreamInlet.test.ts +21 -78
- package/src/__tests__/impl/LslStreamOutlet.test.ts +17 -24
- package/src/__tests__/impl/LslWebSocketBridge.test.ts +15 -18
- package/src/__tests__/impl/WindowedClockRegressor.test.ts +1 -1
- package/src/assertions.ts +1 -2
- package/src/impl/LslEventMarkerEmitter.ts +15 -17
- package/src/impl/LslStreamInfo.ts +7 -9
- package/src/impl/LslStreamInlet.ts +305 -81
- package/src/impl/LslStreamOutlet.ts +57 -56
- package/src/impl/LslWebSocketBridge.ts +15 -18
- package/src/impl/controllers/BleDeviceController.ts +1 -1
- package/src/index.ts +38 -34
- package/src/scripts/{runLslEventMarkerEmitter.ts → runLslEmitter.ts} +4 -3
- package/src/scripts/runMuse.ts +1 -1
- package/src/testDoubles/ClockRegressor/FakeClockRegressor.ts +1 -1
- package/src/testDoubles/{EventMarkerEmitter/FakeEventMarkerEmitter.ts → LslEmitter/FakeLslEmitter.ts} +10 -10
- package/src/testDoubles/{EventMarkerEmitter/SpyEventMarkerEmitter.ts → LslEmitter/SpyLslEmitter.ts} +4 -4
- package/src/testDoubles/{EventMarkerEmitter/ThrowingEventMarkerEmitter.ts → LslEmitter/ThrowingLslEmitter.ts} +4 -4
- package/src/testDoubles/{StreamInfo/FakeStreamInfo.ts → LslInfo/FakeLslInfo.ts} +9 -9
- package/src/testDoubles/{StreamInfo/SpyStreamInfo.ts → LslInfo/SpyLslInfo.ts} +5 -5
- package/src/testDoubles/{StreamInlet/FakeStreamInlet.ts → LslInlet/FakeLslInlet.ts} +15 -14
- package/src/testDoubles/LslInlet/SpyLslInlet.ts +10 -0
- package/src/testDoubles/{StreamOutlet/FakeStreamOutlet.ts → LslOutlet/FakeLslOutlet.ts} +11 -14
- package/src/testDoubles/{WebSocketBridge/FakeWebSocketBridge.ts → LslWsBridge/FakeLslWsBridge.ts} +19 -19
- package/src/testDoubles/LslWsBridge/SpyLslWsBridge.ts +9 -0
- package/src/testDoubles/consts.ts +3 -23
- package/src/testDoubles/generateRandomOutletOptions.ts +2 -2
- package/build/consts.d.ts +0 -11
- package/build/consts.js +0 -21
- package/build/consts.js.map +0 -1
- package/build/impl/WindowedClockRegressor.js.map +0 -1
- package/build/impl/workers/inlet/LslStreamInlet.worker.d.ts +0 -22
- package/build/impl/workers/inlet/LslStreamInlet.worker.js +0 -42
- package/build/impl/workers/inlet/LslStreamInlet.worker.js.map +0 -1
- package/build/impl/workers/inlet/StreamInletWorker.d.ts +0 -73
- package/build/impl/workers/inlet/StreamInletWorker.js +0 -253
- package/build/impl/workers/inlet/StreamInletWorker.js.map +0 -1
- package/build/impl/workers/outlet/LslStreamOutlet.worker.d.ts +0 -32
- package/build/impl/workers/outlet/LslStreamOutlet.worker.js +0 -82
- package/build/impl/workers/outlet/LslStreamOutlet.worker.js.map +0 -1
- package/build/scripts/discoverMuse.js +0 -40
- package/build/scripts/discoverMuse.js.map +0 -1
- package/build/scripts/runLslEventMarkerEmitter.js.map +0 -1
- package/build/scripts/runLslStreamOutlet.d.ts +0 -1
- package/build/scripts/runLslStreamOutlet.js.map +0 -1
- package/build/scripts/testDestroyOutlet.d.ts +0 -1
- package/build/scripts/testDestroyOutlet.js +0 -4
- package/build/scripts/testDestroyOutlet.js.map +0 -1
- package/build/testDoubles/EventMarkerEmitter/FakeEventMarkerEmitter.js.map +0 -1
- package/build/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.js.map +0 -1
- package/build/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.d.ts +0 -9
- package/build/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.js.map +0 -1
- package/build/testDoubles/StreamInfo/FakeStreamInfo.js.map +0 -1
- package/build/testDoubles/StreamInfo/SpyStreamInfo.d.ts +0 -10
- package/build/testDoubles/StreamInfo/SpyStreamInfo.js.map +0 -1
- package/build/testDoubles/StreamInlet/FakeStreamInlet.js.map +0 -1
- package/build/testDoubles/StreamInlet/SpyStreamInlet.d.ts +0 -4
- package/build/testDoubles/StreamInlet/SpyStreamInlet.js.map +0 -1
- package/build/testDoubles/StreamOutlet/FakeStreamOutlet.js.map +0 -1
- package/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.d.ts +0 -14
- package/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.js.map +0 -1
- package/build/testDoubles/WebSocketBridge/SpyLslWebSocketBridge.d.ts +0 -4
- package/build/testDoubles/WebSocketBridge/SpyLslWebSocketBridge.js.map +0 -1
- package/build/testDoubles/WorkerThreads/FakeWorker.d.ts +0 -27
- package/build/testDoubles/WorkerThreads/FakeWorker.js +0 -67
- package/build/testDoubles/WorkerThreads/FakeWorker.js.map +0 -1
- package/src/consts.ts +0 -21
- package/src/impl/workers/inlet/LslStreamInlet.worker.ts +0 -74
- package/src/impl/workers/inlet/StreamInletWorker.ts +0 -348
- package/src/impl/workers/outlet/LslStreamOutlet.worker.ts +0 -144
- package/src/scripts/discoverMuse.ts +0 -50
- package/src/scripts/testDestroyOutlet.ts +0 -5
- package/src/testDoubles/StreamInlet/SpyStreamInlet.ts +0 -10
- package/src/testDoubles/WebSocketBridge/SpyLslWebSocketBridge.ts +0 -9
- package/src/testDoubles/WorkerThreads/FakeWorker.ts +0 -99
- /package/build/impl/{WindowedClockRegressor.d.ts → clocks/WindowedClockRegressor.d.ts} +0 -0
- /package/build/impl/{WindowedClockRegressor.js → clocks/WindowedClockRegressor.js} +0 -0
- /package/build/scripts/{discoverMuse.d.ts → runLslEmitter.d.ts} +0 -0
- /package/build/scripts/{runLslEventMarkerEmitter.d.ts → runLslOutlet.d.ts} +0 -0
- /package/src/impl/{WindowedClockRegressor.ts → clocks/WindowedClockRegressor.ts} +0 -0
- /package/src/scripts/{runLslStreamOutlet.ts → runLslOutlet.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpyLslInlet.js","sourceRoot":"","sources":["../../../src/testDoubles/LslInlet/SpyLslInlet.ts"],"names":[],"mappings":"AAAA,OAAO,cAGN,MAAM,8BAA8B,CAAA;AAErC,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,cAAc;IACnD,YAAmB,OAAwB,EAAE,MAAsB;QAC/D,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC1B,CAAC;CACJ"}
|
package/build/testDoubles/{StreamOutlet/FakeStreamOutlet.d.ts → LslOutlet/FakeLslOutlet.d.ts}
RENAMED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { LslSample } from '@neurodevs/ndx-native';
|
|
2
|
-
import {
|
|
3
|
-
export default class
|
|
4
|
-
static callsToConstructor: (
|
|
2
|
+
import { LslOutlet, LslOutletOptions } from '../../impl/LslStreamOutlet.js';
|
|
3
|
+
export default class FakeLslOutlet implements LslOutlet {
|
|
4
|
+
static callsToConstructor: (LslOutletOptions | undefined)[];
|
|
5
5
|
static callsToPushSample: {
|
|
6
6
|
sample: LslSample;
|
|
7
7
|
timestampSec?: number;
|
|
8
8
|
}[];
|
|
9
9
|
static numCallsToDestroy: number;
|
|
10
|
-
options?:
|
|
11
|
-
constructor(options?:
|
|
10
|
+
options?: LslOutletOptions;
|
|
11
|
+
constructor(options?: LslOutletOptions);
|
|
12
12
|
destroy(): void;
|
|
13
13
|
pushSample(sample: LslSample, timestampSec?: number): void;
|
|
14
14
|
get name(): string;
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { randomInt } from 'node:crypto';
|
|
2
2
|
import generateId from '@neurodevs/generate-id';
|
|
3
|
-
export default class
|
|
3
|
+
export default class FakeLslOutlet {
|
|
4
4
|
static callsToConstructor = [];
|
|
5
5
|
static callsToPushSample = [];
|
|
6
6
|
static numCallsToDestroy = 0;
|
|
7
7
|
options;
|
|
8
8
|
constructor(options) {
|
|
9
|
-
|
|
9
|
+
FakeLslOutlet.callsToConstructor.push(options);
|
|
10
10
|
this.options = options;
|
|
11
11
|
}
|
|
12
12
|
destroy() {
|
|
13
|
-
|
|
13
|
+
FakeLslOutlet.numCallsToDestroy++;
|
|
14
14
|
}
|
|
15
15
|
pushSample(sample, timestampSec) {
|
|
16
|
-
|
|
16
|
+
FakeLslOutlet.callsToPushSample.push({
|
|
17
17
|
sample,
|
|
18
18
|
timestampSec,
|
|
19
19
|
});
|
|
@@ -52,9 +52,9 @@ export default class FakeStreamOutlet {
|
|
|
52
52
|
return this.options?.units ?? generateId();
|
|
53
53
|
}
|
|
54
54
|
static resetTestDouble() {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
FakeLslOutlet.callsToConstructor = [];
|
|
56
|
+
FakeLslOutlet.callsToPushSample = [];
|
|
57
|
+
FakeLslOutlet.numCallsToDestroy = 0;
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
-
//# sourceMappingURL=
|
|
60
|
+
//# sourceMappingURL=FakeLslOutlet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FakeLslOutlet.js","sourceRoot":"","sources":["../../../src/testDoubles/LslOutlet/FakeLslOutlet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAK/C,MAAM,CAAC,OAAO,OAAO,aAAa;IACvB,MAAM,CAAC,kBAAkB,GAAqC,EAAE,CAAA;IAEhE,MAAM,CAAC,iBAAiB,GAGzB,EAAE,CAAA;IAED,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAE5B,OAAO,CAAmB;IAEjC,YAAmB,OAA0B;QACzC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IAC1B,CAAC;IAEM,OAAO;QACV,aAAa,CAAC,iBAAiB,EAAE,CAAA;IACrC,CAAC;IAEM,UAAU,CAAC,MAAiB,EAAE,YAAqB;QACtD,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC;YACjC,MAAM;YACN,YAAY;SACf,CAAC,CAAA;IACN,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,CAAA;IAC7C,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,CAAA;IAC7C,CAAC;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,CAAA;IACjD,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;IACvD,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAA;IACnC,CAAC;IAED,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,OAAO,EAAE,aAAa,IAAI,SAAS,CAAA;IACnD,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IAC3D,CAAC;IAED,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IACxD,CAAC;IAED,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,OAAO,EAAE,aAAa,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IAC5D,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,UAAU,EAAE,CAAA;IACrD,CAAC;IAED,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,CAAA;IAC9C,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,aAAa,CAAC,kBAAkB,GAAG,EAAE,CAAA;QACrC,aAAa,CAAC,iBAAiB,GAAG,EAAE,CAAA;QACpC,aAAa,CAAC,iBAAiB,GAAG,CAAC,CAAA;IACvC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { LslWsBridge, LslWsBridgeConstructorOptions } from '../../impl/LslWebSocketBridge.js';
|
|
2
|
+
export default class FakeLslWsBridge implements LslWsBridge {
|
|
3
|
+
static callsToConstructor: (LslWsBridgeConstructorOptions | undefined)[];
|
|
4
|
+
static numCallsToActivate: number;
|
|
5
|
+
static numCallsToDeactivate: number;
|
|
6
|
+
static numCallsToDestroy: number;
|
|
7
|
+
constructor(options?: LslWsBridgeConstructorOptions);
|
|
8
|
+
activate(): Promise<void>;
|
|
9
|
+
deactivate(): void;
|
|
10
|
+
destroy(): void;
|
|
11
|
+
private static setFakeWebSocket;
|
|
12
|
+
private static setFakeWebSocketServer;
|
|
13
|
+
static resetTestDouble(): void;
|
|
14
|
+
}
|
package/build/testDoubles/{WebSocketBridge/FakeWebSocketBridge.js → LslWsBridge/FakeLslWsBridge.js}
RENAMED
|
@@ -1,30 +1,22 @@
|
|
|
1
1
|
import LslWebSocketBridge from '../../impl/LslWebSocketBridge.js';
|
|
2
2
|
import FakeWebSocket from '../WebSockets/FakeWebSocket.js';
|
|
3
3
|
import FakeWebSocketServer from '../WebSockets/FakeWebSocketServer.js';
|
|
4
|
-
export default class
|
|
4
|
+
export default class FakeLslWsBridge {
|
|
5
5
|
static callsToConstructor = [];
|
|
6
6
|
static numCallsToActivate = 0;
|
|
7
7
|
static numCallsToDeactivate = 0;
|
|
8
8
|
static numCallsToDestroy = 0;
|
|
9
9
|
constructor(options) {
|
|
10
|
-
|
|
10
|
+
FakeLslWsBridge.callsToConstructor.push(options);
|
|
11
11
|
}
|
|
12
12
|
async activate() {
|
|
13
|
-
|
|
13
|
+
FakeLslWsBridge.numCallsToActivate++;
|
|
14
14
|
}
|
|
15
15
|
deactivate() {
|
|
16
|
-
|
|
16
|
+
FakeLslWsBridge.numCallsToDeactivate++;
|
|
17
17
|
}
|
|
18
18
|
destroy() {
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
static resetTestDouble() {
|
|
22
|
-
this.callsToConstructor = [];
|
|
23
|
-
this.numCallsToActivate = 0;
|
|
24
|
-
this.numCallsToDeactivate = 0;
|
|
25
|
-
this.numCallsToDestroy = 0;
|
|
26
|
-
this.setFakeWebSocket();
|
|
27
|
-
this.setFakeWebSocketServer();
|
|
19
|
+
FakeLslWsBridge.numCallsToDestroy++;
|
|
28
20
|
}
|
|
29
21
|
static setFakeWebSocket() {
|
|
30
22
|
LslWebSocketBridge.WS = FakeWebSocket;
|
|
@@ -35,5 +27,13 @@ export default class FakeWebSocketBridge {
|
|
|
35
27
|
FakeWebSocketServer;
|
|
36
28
|
FakeWebSocketServer.resetTestDouble();
|
|
37
29
|
}
|
|
30
|
+
static resetTestDouble() {
|
|
31
|
+
this.callsToConstructor = [];
|
|
32
|
+
this.numCallsToActivate = 0;
|
|
33
|
+
this.numCallsToDeactivate = 0;
|
|
34
|
+
this.numCallsToDestroy = 0;
|
|
35
|
+
this.setFakeWebSocket();
|
|
36
|
+
this.setFakeWebSocketServer();
|
|
37
|
+
}
|
|
38
38
|
}
|
|
39
|
-
//# sourceMappingURL=
|
|
39
|
+
//# sourceMappingURL=FakeLslWsBridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FakeLslWsBridge.js","sourceRoot":"","sources":["../../../src/testDoubles/LslWsBridge/FakeLslWsBridge.ts"],"names":[],"mappings":"AACA,OAAO,kBAGN,MAAM,kCAAkC,CAAA;AACzC,OAAO,aAAa,MAAM,gCAAgC,CAAA;AAC1D,OAAO,mBAAmB,MAAM,sCAAsC,CAAA;AAEtE,MAAM,CAAC,OAAO,OAAO,eAAe;IACzB,MAAM,CAAC,kBAAkB,GAE1B,EAAE,CAAA;IAED,MAAM,CAAC,kBAAkB,GAAG,CAAC,CAAA;IAC7B,MAAM,CAAC,oBAAoB,GAAG,CAAC,CAAA;IAC/B,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAEnC,YAAmB,OAAuC;QACtD,eAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACpD,CAAC;IAEM,KAAK,CAAC,QAAQ;QACjB,eAAe,CAAC,kBAAkB,EAAE,CAAA;IACxC,CAAC;IAEM,UAAU;QACb,eAAe,CAAC,oBAAoB,EAAE,CAAA;IAC1C,CAAC;IAEM,OAAO;QACV,eAAe,CAAC,iBAAiB,EAAE,CAAA;IACvC,CAAC;IAEO,MAAM,CAAC,gBAAgB;QAC3B,kBAAkB,CAAC,EAAE,GAAG,aAA4C,CAAA;QACpE,aAAa,CAAC,eAAe,EAAE,CAAA;IACnC,CAAC;IAEO,MAAM,CAAC,sBAAsB;QACjC,kBAAkB,CAAC,GAAG;YAClB,mBAAwD,CAAA;QAC5D,mBAAmB,CAAC,eAAe,EAAE,CAAA;IACzC,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAA;QAC5B,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAA;QAC3B,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAA;QAC7B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAA;QAE1B,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,IAAI,CAAC,sBAAsB,EAAE,CAAA;IACjC,CAAC"}
|
package/build/testDoubles/{WebSocketBridge/SpyLslWebSocketBridge.js → LslWsBridge/SpyLslWsBridge.js}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import LslWebSocketBridge from '../../impl/LslWebSocketBridge.js';
|
|
2
|
-
export default class
|
|
2
|
+
export default class SpyLslWsBridge extends LslWebSocketBridge {
|
|
3
3
|
constructor(options) {
|
|
4
4
|
super(options);
|
|
5
5
|
}
|
|
6
6
|
}
|
|
7
|
-
//# sourceMappingURL=
|
|
7
|
+
//# sourceMappingURL=SpyLslWsBridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpyLslWsBridge.js","sourceRoot":"","sources":["../../../src/testDoubles/LslWsBridge/SpyLslWsBridge.ts"],"names":[],"mappings":"AAAA,OAAO,kBAEN,MAAM,kCAAkC,CAAA;AAEzC,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,kBAAkB;IAC1D,YAAmB,OAAsC;QACrD,KAAK,CAAC,OAAO,CAAC,CAAA;IAClB,CAAC;CACJ"}
|
|
@@ -1,14 +1,4 @@
|
|
|
1
|
+
import { ChannelFormat } from '@neurodevs/ndx-native';
|
|
1
2
|
export declare const TEST_SUPPORTED_CHANNEL_FORMATS: readonly ["float32", "string"];
|
|
2
3
|
export declare const TEST_UNSUPPORTED_CHANNEL_FORMATS: readonly ["undefined", "double64", "int32", "int16", "int8", "int64"];
|
|
3
|
-
export
|
|
4
|
-
export declare const TEST_CHANNEL_FORMATS_MAP: {
|
|
5
|
-
undefined: number;
|
|
6
|
-
float32: number;
|
|
7
|
-
double64: number;
|
|
8
|
-
string: number;
|
|
9
|
-
int32: number;
|
|
10
|
-
int16: number;
|
|
11
|
-
int8: number;
|
|
12
|
-
int64: number;
|
|
13
|
-
};
|
|
14
|
-
export type TestChannelFormat = (typeof TEST_CHANNEL_FORMATS)[number];
|
|
4
|
+
export type TestChannelFormat = ChannelFormat;
|
|
@@ -7,24 +7,4 @@ export const TEST_UNSUPPORTED_CHANNEL_FORMATS = [
|
|
|
7
7
|
'int8',
|
|
8
8
|
'int64',
|
|
9
9
|
];
|
|
10
|
-
export const TEST_CHANNEL_FORMATS = [
|
|
11
|
-
'undefined',
|
|
12
|
-
'float32',
|
|
13
|
-
'double64',
|
|
14
|
-
'string',
|
|
15
|
-
'int32',
|
|
16
|
-
'int16',
|
|
17
|
-
'int8',
|
|
18
|
-
'int64',
|
|
19
|
-
];
|
|
20
|
-
export const TEST_CHANNEL_FORMATS_MAP = {
|
|
21
|
-
undefined: 0,
|
|
22
|
-
float32: 1,
|
|
23
|
-
double64: 2,
|
|
24
|
-
string: 3,
|
|
25
|
-
int32: 4,
|
|
26
|
-
int16: 5,
|
|
27
|
-
int8: 6,
|
|
28
|
-
int64: 7,
|
|
29
|
-
};
|
|
30
10
|
//# sourceMappingURL=consts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../../src/testDoubles/consts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../../src/testDoubles/consts.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAU,CAAA;AAE5E,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC5C,WAAW;IACX,UAAU;IACV,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;CACD,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export default function generateRandomOutletOptions():
|
|
1
|
+
import { LslOutletOptions } from '../impl/LslStreamOutlet.js';
|
|
2
|
+
export default function generateRandomOutletOptions(): LslOutletOptions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateRandomOutletOptions.js","sourceRoot":"","sources":["../../src/testDoubles/generateRandomOutletOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAG/C,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAA;AAE5D,MAAM,CAAC,OAAO,UAAU,2BAA2B;IAC/C,MAAM,gBAAgB,GAAG,SAAS,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAA;IAEzE,OAAO;QACH,IAAI,EAAE,UAAU,EAAE;QAClB,IAAI,EAAE,UAAU,EAAE;QAClB,YAAY,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5D,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;QAChC,aAAa,EAAE,8BAA8B,CAAC,gBAAgB,CAAC;QAC/D,QAAQ,EAAE,UAAU,EAAE;QACtB,YAAY,EAAE,UAAU,EAAE;QAC1B,KAAK,EAAE,UAAU,EAAE;QACnB,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3B,aAAa,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"generateRandomOutletOptions.js","sourceRoot":"","sources":["../../src/testDoubles/generateRandomOutletOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAG/C,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAA;AAE5D,MAAM,CAAC,OAAO,UAAU,2BAA2B;IAC/C,MAAM,gBAAgB,GAAG,SAAS,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAA;IAEzE,OAAO;QACH,IAAI,EAAE,UAAU,EAAE;QAClB,IAAI,EAAE,UAAU,EAAE;QAClB,YAAY,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5D,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;QAChC,aAAa,EAAE,8BAA8B,CAAC,gBAAgB,CAAC;QAC/D,QAAQ,EAAE,UAAU,EAAE;QACtB,YAAY,EAAE,UAAU,EAAE;QAC1B,KAAK,EAAE,UAAU,EAAE;QACnB,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3B,aAAa,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;KACd,CAAA;AACzB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neurodevs/node-lsl",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "20.0.0",
|
|
4
4
|
"description": "Lab Streaming Layer (LSL) bindings for Node",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|
|
@@ -48,10 +48,11 @@
|
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@neurodevs/eslint-config-ndx": "^1.0.2",
|
|
51
|
-
"@neurodevs/node-tdd": "^3.0.
|
|
51
|
+
"@neurodevs/node-tdd": "^3.0.2",
|
|
52
52
|
"@neurodevs/prettier-config-ndx": "^1.0.2",
|
|
53
53
|
"@types/ws": "^8.18.1",
|
|
54
|
-
"
|
|
54
|
+
"koffi": "^3.1.2",
|
|
55
|
+
"prettier": "^3.9.6",
|
|
55
56
|
"typescript": "^5.9.3"
|
|
56
57
|
},
|
|
57
58
|
"resolutions": {
|
|
@@ -10,13 +10,13 @@ import {
|
|
|
10
10
|
} from '@neurodevs/ndx-native'
|
|
11
11
|
import AbstractModuleTest from '@neurodevs/node-tdd'
|
|
12
12
|
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
import
|
|
13
|
+
import SpyLslEmitter from '../testDoubles/LslEmitter/SpyLslEmitter.js'
|
|
14
|
+
import FakeLslInfo from '../testDoubles/LslInfo/FakeLslInfo.js'
|
|
15
|
+
import SpyLslInfo from '../testDoubles/LslInfo/SpyLslInfo.js'
|
|
16
|
+
import FakeLslInlet from '../testDoubles/LslInlet/FakeLslInlet.js'
|
|
17
|
+
import SpyLslInlet from '../testDoubles/LslInlet/SpyLslInlet.js'
|
|
18
|
+
import FakeLslOutlet from '../testDoubles/LslOutlet/FakeLslOutlet.js'
|
|
19
|
+
import SpyLslWsBridge from '../testDoubles/LslWsBridge/SpyLslWsBridge.js'
|
|
20
20
|
import FakeWebSocket from '../testDoubles/WebSockets/FakeWebSocket.js'
|
|
21
21
|
import FakeWebSocketServer from '../testDoubles/WebSockets/FakeWebSocketServer.js'
|
|
22
22
|
import LslWebSocketBridge from '../impl/LslWebSocketBridge.js'
|
|
@@ -25,7 +25,7 @@ import LslEventMarkerEmitter from '../impl/LslEventMarkerEmitter.js'
|
|
|
25
25
|
import LslStreamInfo from '../impl/LslStreamInfo.js'
|
|
26
26
|
import LslStreamInlet, {
|
|
27
27
|
OnDataCallback,
|
|
28
|
-
|
|
28
|
+
LslInletOptions,
|
|
29
29
|
} from '../impl/LslStreamInlet.js'
|
|
30
30
|
import LslStreamOutlet from '../impl/LslStreamOutlet.js'
|
|
31
31
|
|
|
@@ -33,7 +33,7 @@ export default class AbstractPackageTest extends AbstractModuleTest {
|
|
|
33
33
|
protected static fakeLiblsl: FakeLiblsl
|
|
34
34
|
protected static fakeLibndx: FakeLibndx
|
|
35
35
|
|
|
36
|
-
protected static readonly
|
|
36
|
+
protected static readonly fakeLslInfo = new FakeLslInfo()
|
|
37
37
|
|
|
38
38
|
protected static readonly name_ = this.generateId()
|
|
39
39
|
protected static readonly type = this.generateId()
|
|
@@ -90,15 +90,6 @@ export default class AbstractPackageTest extends AbstractModuleTest {
|
|
|
90
90
|
this.callsToSetTimeout.push(delayMs ?? 0)
|
|
91
91
|
return setTimeout(callback, 0, ...args)
|
|
92
92
|
}) as unknown as typeof setTimeout
|
|
93
|
-
|
|
94
|
-
LslStreamInlet.setTimeout = ((
|
|
95
|
-
callback: (...args: unknown[]) => void,
|
|
96
|
-
delayMs?: number,
|
|
97
|
-
...args: unknown[]
|
|
98
|
-
) => {
|
|
99
|
-
this.callsToSetTimeout.push(delayMs ?? 0)
|
|
100
|
-
return setTimeout(callback, 0, ...args)
|
|
101
|
-
}) as unknown as typeof setTimeout
|
|
102
93
|
}
|
|
103
94
|
|
|
104
95
|
protected static setFakeLibndx() {
|
|
@@ -111,36 +102,36 @@ export default class AbstractPackageTest extends AbstractModuleTest {
|
|
|
111
102
|
BleDeviceController.ndx = this.fakeLibndx
|
|
112
103
|
}
|
|
113
104
|
|
|
114
|
-
protected static
|
|
115
|
-
LslStreamInfo.Class =
|
|
116
|
-
|
|
105
|
+
protected static setSpyLslInfo() {
|
|
106
|
+
LslStreamInfo.Class = SpyLslInfo
|
|
107
|
+
SpyLslInfo.resetTestDouble()
|
|
117
108
|
}
|
|
118
109
|
|
|
119
|
-
protected static
|
|
120
|
-
LslStreamInfo.Class =
|
|
121
|
-
|
|
110
|
+
protected static setFakeLslInfo() {
|
|
111
|
+
LslStreamInfo.Class = FakeLslInfo
|
|
112
|
+
FakeLslInfo.resetTestDouble()
|
|
122
113
|
}
|
|
123
114
|
|
|
124
|
-
protected static
|
|
125
|
-
LslStreamInlet.Class =
|
|
115
|
+
protected static setSpyLslInlet() {
|
|
116
|
+
LslStreamInlet.Class = SpyLslInlet
|
|
126
117
|
}
|
|
127
118
|
|
|
128
|
-
protected static
|
|
129
|
-
LslStreamInlet.Class =
|
|
130
|
-
|
|
119
|
+
protected static setFakeLslInlet() {
|
|
120
|
+
LslStreamInlet.Class = FakeLslInlet
|
|
121
|
+
FakeLslInlet.resetTestDouble()
|
|
131
122
|
}
|
|
132
123
|
|
|
133
|
-
protected static
|
|
134
|
-
LslStreamOutlet.Class =
|
|
135
|
-
|
|
124
|
+
protected static setFakeLslOutlet() {
|
|
125
|
+
LslStreamOutlet.Class = FakeLslOutlet
|
|
126
|
+
FakeLslOutlet.resetTestDouble()
|
|
136
127
|
}
|
|
137
128
|
|
|
138
|
-
protected static
|
|
139
|
-
LslEventMarkerEmitter.Class =
|
|
129
|
+
protected static setSpyLslEmitter() {
|
|
130
|
+
LslEventMarkerEmitter.Class = SpyLslEmitter
|
|
140
131
|
}
|
|
141
132
|
|
|
142
|
-
protected static
|
|
143
|
-
LslWebSocketBridge.Class =
|
|
133
|
+
protected static setSpyLslWsBridge() {
|
|
134
|
+
LslWebSocketBridge.Class = SpyLslWsBridge
|
|
144
135
|
}
|
|
145
136
|
|
|
146
137
|
protected static setFakeWebSocket() {
|
|
@@ -154,10 +145,10 @@ export default class AbstractPackageTest extends AbstractModuleTest {
|
|
|
154
145
|
}
|
|
155
146
|
|
|
156
147
|
protected static async LslStreamInlet(
|
|
157
|
-
options: Partial<
|
|
148
|
+
options: Partial<LslInletOptions>,
|
|
158
149
|
onData: OnDataCallback
|
|
159
150
|
) {
|
|
160
|
-
const defaultOptions:
|
|
151
|
+
const defaultOptions: LslInletOptions = {
|
|
161
152
|
sourceId: this.sourceId,
|
|
162
153
|
chunkSize: this.chunkSize,
|
|
163
154
|
maxBufferedMs: this.maxBufferedMs,
|
|
@@ -70,7 +70,7 @@ export default class BleDeviceControllerTest extends AbstractPackageTest {
|
|
|
70
70
|
|
|
71
71
|
this.wasConnected = false
|
|
72
72
|
|
|
73
|
-
this.instance =
|
|
73
|
+
this.instance = this.BleDeviceController()
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
@test()
|
|
@@ -512,24 +512,22 @@ export default class BleDeviceControllerTest extends AbstractPackageTest {
|
|
|
512
512
|
}
|
|
513
513
|
}
|
|
514
514
|
|
|
515
|
-
private static
|
|
515
|
+
private static BleDeviceController(
|
|
516
516
|
options?: Partial<BleControllerOptions>
|
|
517
517
|
) {
|
|
518
|
-
return
|
|
518
|
+
return BleDeviceController.Create({
|
|
519
519
|
deviceUuid: this.uuid,
|
|
520
520
|
charCallbacks: this.charCallbacks,
|
|
521
521
|
onConnected: this.onConnected,
|
|
522
522
|
rssiIntervalMs: this.rssiIntervalMs,
|
|
523
523
|
...options,
|
|
524
|
-
})
|
|
524
|
+
}) as SpyBleController
|
|
525
525
|
}
|
|
526
526
|
|
|
527
|
-
private static
|
|
528
|
-
return
|
|
527
|
+
private static BleControllerWithPrefix() {
|
|
528
|
+
return this.BleDeviceController({
|
|
529
529
|
deviceNamePrefix: this.namePrefix,
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
rssiIntervalMs: this.rssiIntervalMs,
|
|
533
|
-
} as unknown as BleControllerOptions)) as SpyBleController
|
|
530
|
+
deviceUuid: undefined,
|
|
531
|
+
})
|
|
534
532
|
}
|
|
535
533
|
}
|
|
@@ -3,23 +3,23 @@ import { randomInt } from 'node:crypto'
|
|
|
3
3
|
import { assert, test } from '@neurodevs/node-tdd'
|
|
4
4
|
|
|
5
5
|
import LslEventMarkerEmitter, {
|
|
6
|
-
|
|
6
|
+
EmitOptions,
|
|
7
7
|
} from '../../impl/LslEventMarkerEmitter.js'
|
|
8
|
-
import {
|
|
9
|
-
import
|
|
8
|
+
import { LslOutletOptions } from '../../impl/LslStreamOutlet.js'
|
|
9
|
+
import SpyLslEmitter from '../../testDoubles/LslEmitter/SpyLslEmitter.js'
|
|
10
10
|
import generateRandomOutletOptions from '../../testDoubles/generateRandomOutletOptions.js'
|
|
11
|
-
import
|
|
11
|
+
import FakeLslOutlet from '../../testDoubles/LslOutlet/FakeLslOutlet.js'
|
|
12
12
|
import AbstractPackageTest from '../AbstractPackageTest.js'
|
|
13
13
|
|
|
14
14
|
export default class EventMarkerEmitterTest extends AbstractPackageTest {
|
|
15
|
-
private static instance:
|
|
15
|
+
private static instance: SpyLslEmitter
|
|
16
16
|
|
|
17
17
|
protected static async beforeEach() {
|
|
18
18
|
await super.beforeEach()
|
|
19
19
|
|
|
20
20
|
this.setFakeLiblsl()
|
|
21
|
-
this.
|
|
22
|
-
this.
|
|
21
|
+
this.setFakeLslOutlet()
|
|
22
|
+
this.setSpyLslEmitter()
|
|
23
23
|
|
|
24
24
|
this.instance = await this.LslEventMarkerEmitter()
|
|
25
25
|
}
|
|
@@ -35,7 +35,7 @@ export default class EventMarkerEmitterTest extends AbstractPackageTest {
|
|
|
35
35
|
protected static async loadsWithEventMarkerSpecificOptions() {
|
|
36
36
|
assert.isEqualDeep(
|
|
37
37
|
{
|
|
38
|
-
...
|
|
38
|
+
...FakeLslOutlet.callsToConstructor[0],
|
|
39
39
|
name: undefined,
|
|
40
40
|
sourceId: undefined,
|
|
41
41
|
},
|
|
@@ -51,14 +51,14 @@ export default class EventMarkerEmitterTest extends AbstractPackageTest {
|
|
|
51
51
|
)
|
|
52
52
|
|
|
53
53
|
assert.isTrue(
|
|
54
|
-
|
|
54
|
+
FakeLslOutlet.callsToConstructor[0]?.sourceId.startsWith(
|
|
55
55
|
'event-markers-'
|
|
56
56
|
),
|
|
57
57
|
'Source ID was not generated uniquely!'
|
|
58
58
|
)
|
|
59
59
|
|
|
60
60
|
assert.isTrue(
|
|
61
|
-
|
|
61
|
+
FakeLslOutlet.callsToConstructor[0]?.name.startsWith(
|
|
62
62
|
'Event markers ('
|
|
63
63
|
),
|
|
64
64
|
'Name was not generated uniquely!'
|
|
@@ -70,7 +70,7 @@ export default class EventMarkerEmitterTest extends AbstractPackageTest {
|
|
|
70
70
|
const options = generateRandomOutletOptions()
|
|
71
71
|
await this.LslEventMarkerEmitter(options)
|
|
72
72
|
|
|
73
|
-
assert.isEqualDeep(
|
|
73
|
+
assert.isEqualDeep(FakeLslOutlet.callsToConstructor[1], options)
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
@test()
|
|
@@ -81,7 +81,7 @@ export default class EventMarkerEmitterTest extends AbstractPackageTest {
|
|
|
81
81
|
const marker = markers[0]
|
|
82
82
|
|
|
83
83
|
assert.isEqual(
|
|
84
|
-
|
|
84
|
+
FakeLslOutlet.callsToPushSample[0]?.sample[0],
|
|
85
85
|
marker.name,
|
|
86
86
|
'Pushed the wrong marker!'
|
|
87
87
|
)
|
|
@@ -93,7 +93,7 @@ export default class EventMarkerEmitterTest extends AbstractPackageTest {
|
|
|
93
93
|
protected static async emittingTwoMarkersIncrementsHitCountAndWaitTimeTwice() {
|
|
94
94
|
const markers = await this.emitManyFor(2)
|
|
95
95
|
|
|
96
|
-
assert.isEqual(
|
|
96
|
+
assert.isEqual(FakeLslOutlet.callsToPushSample.length, 2)
|
|
97
97
|
|
|
98
98
|
assert.isEqual(
|
|
99
99
|
this.instance.totalwaitAfterMs,
|
|
@@ -162,7 +162,7 @@ export default class EventMarkerEmitterTest extends AbstractPackageTest {
|
|
|
162
162
|
await this.emit(markerName)
|
|
163
163
|
|
|
164
164
|
assert.isEqualDeep(
|
|
165
|
-
|
|
165
|
+
FakeLslOutlet.callsToPushSample[0]?.sample,
|
|
166
166
|
[markerName],
|
|
167
167
|
'Pushed the wrong sample!'
|
|
168
168
|
)
|
|
@@ -170,7 +170,7 @@ export default class EventMarkerEmitterTest extends AbstractPackageTest {
|
|
|
170
170
|
|
|
171
171
|
@test()
|
|
172
172
|
protected static async emitWaitsForMsIfPassed() {
|
|
173
|
-
|
|
173
|
+
SpyLslEmitter.shouldCallWaitOnSuper = true
|
|
174
174
|
|
|
175
175
|
const waitAfterMs = 10
|
|
176
176
|
|
|
@@ -190,7 +190,7 @@ export default class EventMarkerEmitterTest extends AbstractPackageTest {
|
|
|
190
190
|
this.destroy()
|
|
191
191
|
|
|
192
192
|
assert.isEqual(
|
|
193
|
-
|
|
193
|
+
FakeLslOutlet.numCallsToDestroy,
|
|
194
194
|
1,
|
|
195
195
|
'Did not call destroy on outlet!'
|
|
196
196
|
)
|
|
@@ -268,10 +268,7 @@ export default class EventMarkerEmitterTest extends AbstractPackageTest {
|
|
|
268
268
|
await this.emit(this.markerName)
|
|
269
269
|
}
|
|
270
270
|
|
|
271
|
-
private static async emit(
|
|
272
|
-
markerName: string,
|
|
273
|
-
options?: EventMarkerOptions
|
|
274
|
-
) {
|
|
271
|
+
private static async emit(markerName: string, options?: EmitOptions) {
|
|
275
272
|
return this.instance.emit(markerName, options)
|
|
276
273
|
}
|
|
277
274
|
|
|
@@ -314,10 +311,8 @@ export default class EventMarkerEmitterTest extends AbstractPackageTest {
|
|
|
314
311
|
}
|
|
315
312
|
|
|
316
313
|
private static async LslEventMarkerEmitter(
|
|
317
|
-
options?: Partial<
|
|
314
|
+
options?: Partial<LslOutletOptions>
|
|
318
315
|
) {
|
|
319
|
-
return (await LslEventMarkerEmitter.Create(
|
|
320
|
-
options
|
|
321
|
-
)) as SpyEventMarkerEmitter
|
|
316
|
+
return (await LslEventMarkerEmitter.Create(options)) as SpyLslEmitter
|
|
322
317
|
}
|
|
323
318
|
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { test, assert } from '@neurodevs/node-tdd'
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import SpyStreamInfo from '../../testDoubles/StreamInfo/SpyStreamInfo.js'
|
|
3
|
+
import LslStreamInfo, { LslInfoOptions } from '../../impl/LslStreamInfo.js'
|
|
4
|
+
import SpyLslInfo from '../../testDoubles/LslInfo/SpyLslInfo.js'
|
|
6
5
|
import AbstractPackageTest from '../AbstractPackageTest.js'
|
|
6
|
+
import { CHANNEL_FORMATS } from '@neurodevs/ndx-native'
|
|
7
7
|
|
|
8
8
|
export default class LslStreamInfoTest extends AbstractPackageTest {
|
|
9
|
-
private static instance:
|
|
9
|
+
private static instance: SpyLslInfo
|
|
10
10
|
|
|
11
11
|
protected static async beforeEach() {
|
|
12
12
|
await super.beforeEach()
|
|
13
13
|
|
|
14
14
|
this.setFakeLiblsl()
|
|
15
|
-
this.
|
|
15
|
+
this.setSpyLslInfo()
|
|
16
16
|
|
|
17
17
|
this.instance = this.LslStreamInfo()
|
|
18
18
|
}
|
|
@@ -225,12 +225,12 @@ export default class LslStreamInfoTest extends AbstractPackageTest {
|
|
|
225
225
|
channelNames: this.channelNames,
|
|
226
226
|
channelFormat: 'float32',
|
|
227
227
|
sampleRateHz: 100 * Math.random(),
|
|
228
|
-
} as
|
|
228
|
+
} as LslInfoOptions
|
|
229
229
|
|
|
230
|
-
private static LslStreamInfo(options?: Partial<
|
|
230
|
+
private static LslStreamInfo(options?: Partial<LslInfoOptions>) {
|
|
231
231
|
return LslStreamInfo.Create({
|
|
232
232
|
...this.defaultOptions,
|
|
233
233
|
...options,
|
|
234
|
-
}) as
|
|
234
|
+
}) as SpyLslInfo
|
|
235
235
|
}
|
|
236
236
|
}
|