@neurodevs/node-lsl 11.4.2 → 12.0.1
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/.vscode/tasks.json +19 -1
- package/README.md +8 -9
- package/build/__tests__/{AbstractLslTest.d.ts → AbstractPackageTest.d.ts} +7 -6
- package/build/__tests__/AbstractPackageTest.js +53 -0
- package/build/__tests__/AbstractPackageTest.js.map +1 -0
- package/build/__tests__/{modules → impl}/LiblslAdapter.test.d.ts +6 -3
- package/build/__tests__/{modules → impl}/LiblslAdapter.test.js +193 -151
- package/build/__tests__/impl/LiblslAdapter.test.js.map +1 -0
- package/build/__tests__/{modules/EventMarkerOutlet.test.d.ts → impl/LslEventMarkerOutlet.test.d.ts} +5 -4
- package/build/__tests__/{modules/EventMarkerOutlet.test.js → impl/LslEventMarkerOutlet.test.js} +54 -52
- package/build/__tests__/impl/LslEventMarkerOutlet.test.js.map +1 -0
- package/build/__tests__/{modules → impl}/LslStreamInfo.test.d.ts +3 -3
- package/build/__tests__/{modules → impl}/LslStreamInfo.test.js +53 -59
- package/build/__tests__/impl/LslStreamInfo.test.js.map +1 -0
- package/build/__tests__/impl/LslStreamInlet.test.d.ts +11 -0
- package/build/__tests__/{modules → impl}/LslStreamInlet.test.js +28 -26
- package/build/__tests__/impl/LslStreamInlet.test.js.map +1 -0
- package/build/__tests__/{modules → impl}/LslStreamOutlet.test.d.ts +3 -3
- package/build/__tests__/{modules → impl}/LslStreamOutlet.test.js +56 -60
- package/build/__tests__/impl/LslStreamOutlet.test.js.map +1 -0
- package/build/__tests__/impl/LslWebSocketBridge.test.d.ts +7 -0
- package/build/__tests__/impl/LslWebSocketBridge.test.js +26 -0
- package/build/__tests__/impl/LslWebSocketBridge.test.js.map +1 -0
- package/build/assertions.d.ts +1 -1
- package/build/assertions.js +13 -20
- package/build/assertions.js.map +1 -1
- package/build/consts.js +2 -5
- package/build/consts.js.map +1 -1
- package/build/{modules → impl}/LiblslAdapter.d.ts +5 -4
- package/build/{modules → impl}/LiblslAdapter.js +60 -51
- package/build/impl/LiblslAdapter.js.map +1 -0
- package/build/impl/LslEventMarkerOutlet.d.ts +23 -0
- package/build/{modules/EventMarkerOutlet.js → impl/LslEventMarkerOutlet.js} +12 -14
- package/build/impl/LslEventMarkerOutlet.js.map +1 -0
- package/build/{modules → impl}/LslStreamInfo.d.ts +1 -1
- package/build/{modules → impl}/LslStreamInfo.js +19 -16
- package/build/impl/LslStreamInfo.js.map +1 -0
- package/build/impl/LslStreamInlet.d.ts +34 -0
- package/build/{modules → impl}/LslStreamInlet.js +19 -16
- package/build/impl/LslStreamInlet.js.map +1 -0
- package/build/{modules → impl}/LslStreamOutlet.d.ts +10 -10
- package/build/{modules → impl}/LslStreamOutlet.js +22 -23
- package/build/impl/LslStreamOutlet.js.map +1 -0
- package/build/impl/LslWebSocketBridge.d.ts +8 -0
- package/build/impl/LslWebSocketBridge.js +8 -0
- package/build/impl/LslWebSocketBridge.js.map +1 -0
- package/build/index.d.ts +34 -30
- package/build/index.js +39 -69
- package/build/index.js.map +1 -1
- package/build/scripts/{demoMarkerOutlet.js → runLslEventMarkerOutlet.js} +3 -8
- package/build/scripts/runLslEventMarkerOutlet.js.map +1 -0
- package/build/scripts/{demoStreamOutlet.js → runLslStreamOutlet.js} +3 -8
- package/build/scripts/runLslStreamOutlet.js.map +1 -0
- package/build/testDoubles/{MarkerOutlet/FakeMarkerOutlet.d.ts → EventMarkerOutlet/FakeEventMarkerOutlet.d.ts} +3 -3
- package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.js +26 -0
- package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.js.map +1 -0
- package/build/testDoubles/{MarkerOutlet/MockMarkerOutlet.d.ts → EventMarkerOutlet/MockEventMarkerOutlet.d.ts} +3 -3
- package/build/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.js +46 -0
- package/build/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.js.map +1 -0
- package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.d.ts +9 -0
- package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js +19 -0
- package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js.map +1 -0
- package/build/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.d.ts +10 -0
- package/build/testDoubles/{MarkerOutlet/ThrowingMarkerOutlet.js → EventMarkerOutlet/ThrowingEventMarkerOutlet.js} +3 -6
- package/build/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.js.map +1 -0
- package/build/testDoubles/Liblsl/FakeLiblsl.d.ts +4 -1
- package/build/testDoubles/Liblsl/FakeLiblsl.js +23 -15
- package/build/testDoubles/Liblsl/FakeLiblsl.js.map +1 -1
- package/build/testDoubles/StreamInfo/FakeStreamInfo.d.ts +2 -2
- package/build/testDoubles/StreamInfo/FakeStreamInfo.js +3 -6
- package/build/testDoubles/StreamInfo/FakeStreamInfo.js.map +1 -1
- package/build/testDoubles/StreamInfo/SpyStreamInfo.d.ts +2 -2
- package/build/testDoubles/StreamInfo/SpyStreamInfo.js +2 -8
- package/build/testDoubles/StreamInfo/SpyStreamInfo.js.map +1 -1
- package/build/testDoubles/StreamInlet/FakeStreamInlet.d.ts +12 -0
- package/build/testDoubles/StreamInlet/FakeStreamInlet.js +18 -0
- package/build/testDoubles/StreamInlet/FakeStreamInlet.js.map +1 -0
- package/build/testDoubles/StreamInlet/SpyStreamInlet.d.ts +8 -0
- package/build/testDoubles/StreamInlet/SpyStreamInlet.js +16 -0
- package/build/testDoubles/StreamInlet/SpyStreamInlet.js.map +1 -0
- package/build/testDoubles/{LslOutlet/FakeLslOutlet.d.ts → StreamOutlet/FakeStreamOutlet.d.ts} +10 -11
- package/build/testDoubles/StreamOutlet/FakeStreamOutlet.js +57 -0
- package/build/testDoubles/StreamOutlet/FakeStreamOutlet.js.map +1 -0
- package/build/testDoubles/StreamTransportBridge/FakeStreamTransportBridge.d.ts +6 -0
- package/build/testDoubles/StreamTransportBridge/FakeStreamTransportBridge.js +10 -0
- package/build/testDoubles/StreamTransportBridge/FakeStreamTransportBridge.js.map +1 -0
- package/build/testDoubles/consts.js +4 -7
- package/build/testDoubles/consts.js.map +1 -1
- package/build/testDoubles/generateRandomOutletOptions.d.ts +2 -2
- package/build/testDoubles/generateRandomOutletOptions.js +14 -17
- package/build/testDoubles/generateRandomOutletOptions.js.map +1 -1
- package/build/types.d.ts +9 -4
- package/build/types.js +1 -2
- package/build/validations.js +4 -10
- package/build/validations.js.map +1 -1
- package/package.json +22 -12
- package/src/__tests__/AbstractPackageTest.ts +65 -0
- package/src/__tests__/{modules → impl}/LiblslAdapter.test.ts +71 -44
- package/src/__tests__/{modules/EventMarkerOutlet.test.ts → impl/LslEventMarkerOutlet.test.ts} +40 -28
- package/src/__tests__/{modules → impl}/LslStreamInfo.test.ts +10 -8
- package/src/__tests__/{modules → impl}/LslStreamInlet.test.ts +27 -14
- package/src/__tests__/{modules → impl}/LslStreamOutlet.test.ts +24 -17
- package/src/__tests__/impl/LslWebSocketBridge.test.ts +25 -0
- package/src/assertions.ts +3 -3
- package/src/{modules → impl}/LiblslAdapter.ts +33 -21
- package/src/{modules/EventMarkerOutlet.ts → impl/LslEventMarkerOutlet.ts} +17 -12
- package/src/{modules → impl}/LslStreamInfo.ts +5 -4
- package/src/{modules → impl}/LslStreamInlet.ts +27 -16
- package/src/{modules → impl}/LslStreamOutlet.ts +19 -16
- package/src/impl/LslWebSocketBridge.ts +13 -0
- package/src/index.ts +43 -35
- package/src/scripts/{demoMarkerOutlet.ts → runLslEventMarkerOutlet.ts} +2 -2
- package/src/scripts/{demoStreamOutlet.ts → runLslStreamOutlet.ts} +1 -1
- package/src/testDoubles/{MarkerOutlet/FakeMarkerOutlet.ts → EventMarkerOutlet/FakeEventMarkerOutlet.ts} +7 -7
- package/src/testDoubles/{MarkerOutlet/MockMarkerOutlet.ts → EventMarkerOutlet/MockEventMarkerOutlet.ts} +5 -4
- package/src/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.ts +24 -0
- package/src/testDoubles/{MarkerOutlet/ThrowingMarkerOutlet.ts → EventMarkerOutlet/ThrowingEventMarkerOutlet.ts} +3 -3
- package/src/testDoubles/Liblsl/FakeLiblsl.ts +9 -1
- package/src/testDoubles/StreamInfo/FakeStreamInfo.ts +2 -2
- package/src/testDoubles/StreamInfo/SpyStreamInfo.ts +1 -1
- package/src/testDoubles/StreamInlet/FakeStreamInlet.ts +27 -0
- package/src/testDoubles/StreamInlet/SpyStreamInlet.ts +22 -0
- package/src/testDoubles/{LslOutlet/FakeLslOutlet.ts → StreamOutlet/FakeStreamOutlet.ts} +22 -19
- package/src/testDoubles/StreamTransportBridge/FakeStreamTransportBridge.ts +15 -0
- package/src/testDoubles/generateRandomOutletOptions.ts +5 -4
- package/src/types.ts +11 -4
- package/tsconfig.json +17 -28
- package/build/__tests__/AbstractLslTest.js +0 -87
- package/build/__tests__/AbstractLslTest.js.map +0 -1
- package/build/__tests__/modules/EventMarkerOutlet.test.js.map +0 -1
- package/build/__tests__/modules/LiblslAdapter.test.js.map +0 -1
- package/build/__tests__/modules/LslStreamInfo.test.js.map +0 -1
- package/build/__tests__/modules/LslStreamInlet.test.d.ts +0 -10
- package/build/__tests__/modules/LslStreamInlet.test.js.map +0 -1
- package/build/__tests__/modules/LslStreamOutlet.test.js.map +0 -1
- package/build/modules/EventMarkerOutlet.d.ts +0 -23
- package/build/modules/EventMarkerOutlet.js.map +0 -1
- package/build/modules/LiblslAdapter.js.map +0 -1
- package/build/modules/LslStreamInfo.js.map +0 -1
- package/build/modules/LslStreamInlet.d.ts +0 -31
- package/build/modules/LslStreamInlet.js.map +0 -1
- package/build/modules/LslStreamOutlet.js.map +0 -1
- package/build/scripts/demoMarkerOutlet.js.map +0 -1
- package/build/scripts/demoStreamOutlet.js.map +0 -1
- package/build/testDoubles/LslInlet/FakeLslInlet.d.ts +0 -11
- package/build/testDoubles/LslInlet/FakeLslInlet.js +0 -16
- package/build/testDoubles/LslInlet/FakeLslInlet.js.map +0 -1
- package/build/testDoubles/LslInlet/SpyLslInlet.d.ts +0 -7
- package/build/testDoubles/LslInlet/SpyLslInlet.js +0 -20
- package/build/testDoubles/LslInlet/SpyLslInlet.js.map +0 -1
- package/build/testDoubles/LslOutlet/FakeLslOutlet.js +0 -59
- package/build/testDoubles/LslOutlet/FakeLslOutlet.js.map +0 -1
- package/build/testDoubles/MarkerOutlet/FakeMarkerOutlet.js +0 -29
- package/build/testDoubles/MarkerOutlet/FakeMarkerOutlet.js.map +0 -1
- package/build/testDoubles/MarkerOutlet/MockMarkerOutlet.js +0 -49
- package/build/testDoubles/MarkerOutlet/MockMarkerOutlet.js.map +0 -1
- package/build/testDoubles/MarkerOutlet/SpyMarkerOutlet.d.ts +0 -9
- package/build/testDoubles/MarkerOutlet/SpyMarkerOutlet.js +0 -24
- package/build/testDoubles/MarkerOutlet/SpyMarkerOutlet.js.map +0 -1
- package/build/testDoubles/MarkerOutlet/ThrowingMarkerOutlet.d.ts +0 -10
- package/build/testDoubles/MarkerOutlet/ThrowingMarkerOutlet.js.map +0 -1
- package/src/__tests__/AbstractLslTest.ts +0 -59
- package/src/testDoubles/LslInlet/FakeLslInlet.ts +0 -22
- package/src/testDoubles/LslInlet/SpyLslInlet.ts +0 -16
- package/src/testDoubles/MarkerOutlet/SpyMarkerOutlet.ts +0 -24
- /package/build/scripts/{demoMarkerOutlet.d.ts → runLslEventMarkerOutlet.d.ts} +0 -0
- /package/build/scripts/{demoStreamOutlet.d.ts → runLslStreamOutlet.d.ts} +0 -0
package/build/types.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { FuncObj, FieldType } from 'ffi-rs';
|
|
2
|
-
import { CHANNEL_FORMATS } from './consts';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
export type StreamFixuture =
|
|
2
|
+
import { CHANNEL_FORMATS } from './consts.js';
|
|
3
|
+
import { StreamInlet } from './impl/LslStreamInlet.js';
|
|
4
|
+
import { StreamOutlet } from './impl/LslStreamOutlet.js';
|
|
5
|
+
export type StreamFixuture = StreamOutlet | StreamInlet;
|
|
6
6
|
export type ChannelFormat = (typeof CHANNEL_FORMATS)[number];
|
|
7
7
|
export interface DurationMarker {
|
|
8
8
|
name: string;
|
|
@@ -16,6 +16,7 @@ export interface Liblsl {
|
|
|
16
16
|
pushSampleStringTimestamp(options: PushSampleStringTimestampOptions): void;
|
|
17
17
|
destroyOutlet(options: DestroyOutletOptions): void;
|
|
18
18
|
createInlet(options: CreateInletOptions): BoundInlet;
|
|
19
|
+
flushInlet(options: FlushInletOptions): void;
|
|
19
20
|
destroyInlet(options: DestroyInletOptions): void;
|
|
20
21
|
localClock(): number;
|
|
21
22
|
}
|
|
@@ -62,6 +63,9 @@ export interface CreateInletOptions {
|
|
|
62
63
|
chunkSize: number;
|
|
63
64
|
maxBuffered: number;
|
|
64
65
|
}
|
|
66
|
+
export interface FlushInletOptions {
|
|
67
|
+
inlet: BoundInlet;
|
|
68
|
+
}
|
|
65
69
|
export interface DestroyInletOptions {
|
|
66
70
|
}
|
|
67
71
|
export interface LiblslBindings {
|
|
@@ -71,6 +75,7 @@ export interface LiblslBindings {
|
|
|
71
75
|
lsl_push_sample_strt(args: [BoundOutlet, LslSample, number]): void;
|
|
72
76
|
lsl_destroy_outlet(args: [BoundOutlet]): void;
|
|
73
77
|
lsl_create_inlet(args: any): BoundInlet;
|
|
78
|
+
lsl_flush_inlet(args: [BoundInlet]): void;
|
|
74
79
|
lsl_destroy_inlet(args: any): void;
|
|
75
80
|
lsl_local_clock(args: []): number;
|
|
76
81
|
lsl_get_desc(args: [BoundStreamInfo]): BoundDescription;
|
package/build/types.js
CHANGED
package/build/validations.js
CHANGED
|
@@ -1,20 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isStringInArray = isStringInArray;
|
|
4
|
-
exports.isGreaterThanOrEqualToZero = isGreaterThanOrEqualToZero;
|
|
5
|
-
exports.isPositiveInteger = isPositiveInteger;
|
|
6
|
-
exports.isPositiveIntegerOrZero = isPositiveIntegerOrZero;
|
|
7
|
-
function isStringInArray(value, array) {
|
|
1
|
+
export function isStringInArray(value, array) {
|
|
8
2
|
return array.indexOf(value) !== -1;
|
|
9
3
|
}
|
|
10
|
-
function isGreaterThanOrEqualToZero(value) {
|
|
4
|
+
export function isGreaterThanOrEqualToZero(value) {
|
|
11
5
|
return value >= 0;
|
|
12
6
|
}
|
|
13
|
-
function isPositiveInteger(value) {
|
|
7
|
+
export function isPositiveInteger(value) {
|
|
14
8
|
//@ts-ignore
|
|
15
9
|
return Number.isInteger(value) && value > 0;
|
|
16
10
|
}
|
|
17
|
-
function isPositiveIntegerOrZero(value) {
|
|
11
|
+
export function isPositiveIntegerOrZero(value) {
|
|
18
12
|
//@ts-ignore
|
|
19
13
|
return Number.isInteger(value) && value >= 0;
|
|
20
14
|
}
|
package/build/validations.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validations.js","sourceRoot":"","sources":["../src/validations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validations.js","sourceRoot":"","sources":["../src/validations.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,KAAwB;IACnE,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;AACtC,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAa;IACpD,OAAO,KAAK,IAAI,CAAC,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC3C,YAAY;IACZ,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAA;AAC/C,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACjD,YAAY;IACZ,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;AAChD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neurodevs/node-lsl",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "12.0.1",
|
|
4
4
|
"description": "Lab Streaming Layer (LSL) bindings for Node",
|
|
5
|
-
"
|
|
5
|
+
"type": "module",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"nodejs",
|
|
8
|
+
"typescript",
|
|
9
|
+
"tdd"
|
|
10
|
+
],
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"author": "Eric Yates <hello@ericthecurious.com>",
|
|
13
|
+
"homepage": "https://github.com/neurodevs/node-lsl",
|
|
6
14
|
"repository": {
|
|
7
15
|
"type": "git",
|
|
8
16
|
"url": "git+https://github.com/neurodevs/node-lsl.git"
|
|
9
17
|
},
|
|
18
|
+
"bugs": {
|
|
19
|
+
"url": "https://github.com/neurodevs/node-lsl/issues"
|
|
20
|
+
},
|
|
21
|
+
"main": "build/index.js",
|
|
10
22
|
"scripts": {
|
|
11
23
|
"build.ci": "yarn run build.tsc && yarn run build.resolve-paths && yarn run lint",
|
|
12
24
|
"build.dev": "yarn run build.tsc --sourceMap ; yarn run resolve-paths.lint",
|
|
@@ -38,10 +50,8 @@
|
|
|
38
50
|
"ref-napi": "^3.0.3"
|
|
39
51
|
},
|
|
40
52
|
"devDependencies": {
|
|
41
|
-
"@
|
|
42
|
-
"@
|
|
43
|
-
"@sprucelabs/test": "^9.0.59",
|
|
44
|
-
"@sprucelabs/test-utils": "^5.1.502",
|
|
53
|
+
"@neurodevs/generate-id": "^1.0.8",
|
|
54
|
+
"@neurodevs/node-tdd": "^0.1.2",
|
|
45
55
|
"@types/ffi-napi": "^4.0.10",
|
|
46
56
|
"@types/node": "^22.9.0",
|
|
47
57
|
"chokidar-cli": "^3.0.0",
|
|
@@ -55,12 +65,6 @@
|
|
|
55
65
|
"tsc-watch": "^6.2.1",
|
|
56
66
|
"typescript": "^5.6.3"
|
|
57
67
|
},
|
|
58
|
-
"skill": {
|
|
59
|
-
"namespace": "node-lsl",
|
|
60
|
-
"upgradeIgnoreList": [
|
|
61
|
-
"@sprucelabs/spruce-test-fixtures"
|
|
62
|
-
]
|
|
63
|
-
},
|
|
64
68
|
"jest": {
|
|
65
69
|
"testRunner": "jest-circus/runner",
|
|
66
70
|
"maxWorkers": 4,
|
|
@@ -78,5 +82,11 @@
|
|
|
78
82
|
"moduleNameMapper": {
|
|
79
83
|
"^#spruce/(.*)$": "<rootDir>/build/.spruce/$1"
|
|
80
84
|
}
|
|
85
|
+
},
|
|
86
|
+
"skill": {
|
|
87
|
+
"namespace": "node-lsl",
|
|
88
|
+
"upgradeIgnoreList": [
|
|
89
|
+
"@sprucelabs/spruce-test-fixtures"
|
|
90
|
+
]
|
|
81
91
|
}
|
|
82
92
|
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import generateId from '@neurodevs/generate-id'
|
|
2
|
+
import AbstractModuleTest from '@neurodevs/node-tdd'
|
|
3
|
+
|
|
4
|
+
import LiblslAdapter from '../impl/LiblslAdapter.js'
|
|
5
|
+
import LslEventMarkerOutlet from '../impl/LslEventMarkerOutlet.js'
|
|
6
|
+
import LslStreamInfo from '../impl/LslStreamInfo.js'
|
|
7
|
+
import LslStreamInlet from '../impl/LslStreamInlet.js'
|
|
8
|
+
|
|
9
|
+
import LslStreamOutlet from '../impl/LslStreamOutlet.js'
|
|
10
|
+
import SpyEventMarkerOutlet from '../testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js'
|
|
11
|
+
import FakeLiblsl from '../testDoubles/Liblsl/FakeLiblsl.js'
|
|
12
|
+
import FakeStreamInfo from '../testDoubles/StreamInfo/FakeStreamInfo.js'
|
|
13
|
+
import SpyStreamInfo from '../testDoubles/StreamInfo/SpyStreamInfo.js'
|
|
14
|
+
import { SpyStreamInlet } from '../testDoubles/StreamInlet/SpyStreamInlet.js'
|
|
15
|
+
import FakeStreamOutlet from '../testDoubles/StreamOutlet/FakeStreamOutlet.js'
|
|
16
|
+
|
|
17
|
+
export default class AbstractPackageTest extends AbstractModuleTest {
|
|
18
|
+
protected static fakeLiblsl: FakeLiblsl
|
|
19
|
+
|
|
20
|
+
protected static async beforeEach() {
|
|
21
|
+
await super.beforeEach()
|
|
22
|
+
|
|
23
|
+
this.setFakeLiblsl()
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
protected static setFakeLiblsl() {
|
|
27
|
+
this.fakeLiblsl = new FakeLiblsl()
|
|
28
|
+
LiblslAdapter.setInstance(this.fakeLiblsl)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
protected static setSpyStreamInfo() {
|
|
32
|
+
LslStreamInfo.Class = SpyStreamInfo
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
protected static setFakeStreamInfo() {
|
|
36
|
+
LslStreamInfo.Class = FakeStreamInfo
|
|
37
|
+
FakeStreamInfo.resetTestDouble()
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
protected static setSpyStreamInlet() {
|
|
41
|
+
LslStreamInlet.Class = SpyStreamInlet
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
protected static setFakeStreamOutlet() {
|
|
45
|
+
LslStreamOutlet.Class = FakeStreamOutlet
|
|
46
|
+
FakeStreamOutlet.resetTestDouble()
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
protected static setSpyEventMarkerOutlet() {
|
|
50
|
+
LslEventMarkerOutlet.Class = SpyEventMarkerOutlet
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
protected static generateId() {
|
|
54
|
+
return generateId()
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
protected static readonly name_ = generateId()
|
|
58
|
+
protected static readonly type = generateId()
|
|
59
|
+
protected static readonly sourceId = generateId()
|
|
60
|
+
protected static readonly units = generateId()
|
|
61
|
+
protected static readonly channelNames = [generateId(), generateId()]
|
|
62
|
+
protected static readonly chunkSize = Math.floor(Math.random() * 100)
|
|
63
|
+
protected static readonly maxBuffered = Math.floor(Math.random() * 100)
|
|
64
|
+
protected static readonly sampleRate = Math.floor(Math.random() * 100)
|
|
65
|
+
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { randomInt } from 'crypto'
|
|
2
|
-
import
|
|
2
|
+
import generateId from '@neurodevs/generate-id'
|
|
3
|
+
import { test, assert } from '@neurodevs/node-tdd'
|
|
3
4
|
import { DataType, OpenParams } from 'ffi-rs'
|
|
4
|
-
|
|
5
|
-
import
|
|
5
|
+
|
|
6
|
+
import LiblslAdapter from '../../impl/LiblslAdapter.js'
|
|
7
|
+
import FakeLiblsl from '../../testDoubles/Liblsl/FakeLiblsl.js'
|
|
6
8
|
import {
|
|
7
9
|
BoundChild,
|
|
8
10
|
BoundDescription,
|
|
@@ -13,17 +15,17 @@ import {
|
|
|
13
15
|
Liblsl,
|
|
14
16
|
LiblslBindings,
|
|
15
17
|
LslChannel,
|
|
16
|
-
} from '../../types'
|
|
17
|
-
import
|
|
18
|
+
} from '../../types.js'
|
|
19
|
+
import AbstractPackageTest from '../AbstractPackageTest.js'
|
|
18
20
|
|
|
19
|
-
export default class LiblslAdapterTest extends
|
|
20
|
-
private static
|
|
21
|
+
export default class LiblslAdapterTest extends AbstractPackageTest {
|
|
22
|
+
private static instance: Liblsl
|
|
21
23
|
private static libraryPath?: string
|
|
22
24
|
private static libraryOptions?: Record<string, any>
|
|
23
25
|
private static fakeBindings: LiblslBindings
|
|
24
26
|
private static fakeStreamInfo: BoundStreamInfo
|
|
25
27
|
private static fakeOutlet: BoundOutlet
|
|
26
|
-
private static fakeInlet: BoundInlet
|
|
28
|
+
private static fakeInlet: BoundInlet = {}
|
|
27
29
|
private static fakeDesc: BoundDescription
|
|
28
30
|
private static fakeChildNamedChannels: BoundChild
|
|
29
31
|
private static createStreamInfoParams?: any[]
|
|
@@ -31,6 +33,7 @@ export default class LiblslAdapterTest extends AbstractLslTest {
|
|
|
31
33
|
private static createOutletParams?: any[]
|
|
32
34
|
private static destroyOutletParams?: any[]
|
|
33
35
|
private static createInletParams?: any[]
|
|
36
|
+
private static flushInletParams?: any[]
|
|
34
37
|
private static destroyInletParams?: any[]
|
|
35
38
|
private static localClockParams?: any[]
|
|
36
39
|
private static pushSampleFloatTimestampParams?: any[]
|
|
@@ -85,7 +88,12 @@ export default class LiblslAdapterTest extends AbstractLslTest {
|
|
|
85
88
|
}
|
|
86
89
|
|
|
87
90
|
LiblslAdapter.resetInstance()
|
|
88
|
-
this.
|
|
91
|
+
this.instance = LiblslAdapter.getInstance()
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
@test()
|
|
95
|
+
protected static async createsInstance() {
|
|
96
|
+
assert.isTruthy(this.instance, 'Failed to create instance!')
|
|
89
97
|
}
|
|
90
98
|
|
|
91
99
|
@test()
|
|
@@ -95,8 +103,6 @@ export default class LiblslAdapterTest extends AbstractLslTest {
|
|
|
95
103
|
|
|
96
104
|
const err = assert.doesThrow(() => LiblslAdapter.getInstance())
|
|
97
105
|
|
|
98
|
-
debugger
|
|
99
|
-
|
|
100
106
|
assert.isTrue(
|
|
101
107
|
err.message.includes(this.generateFailedMessage()),
|
|
102
108
|
'Did not receive the expected error!'
|
|
@@ -150,26 +156,6 @@ export default class LiblslAdapterTest extends AbstractLslTest {
|
|
|
150
156
|
retType: DataType.External,
|
|
151
157
|
paramsType: [DataType.External, DataType.I32, DataType.I32],
|
|
152
158
|
},
|
|
153
|
-
lsl_destroy_outlet: {
|
|
154
|
-
library: 'lsl',
|
|
155
|
-
retType: DataType.Void,
|
|
156
|
-
paramsType: [DataType.External],
|
|
157
|
-
},
|
|
158
|
-
lsl_create_inlet: {
|
|
159
|
-
library: 'lsl',
|
|
160
|
-
retType: DataType.External,
|
|
161
|
-
paramsType: [DataType.External, DataType.I32, DataType.I32],
|
|
162
|
-
},
|
|
163
|
-
lsl_destroy_inlet: {
|
|
164
|
-
library: 'lsl',
|
|
165
|
-
retType: DataType.Void,
|
|
166
|
-
paramsType: [DataType.External],
|
|
167
|
-
},
|
|
168
|
-
lsl_local_clock: {
|
|
169
|
-
library: 'lsl',
|
|
170
|
-
retType: DataType.Double,
|
|
171
|
-
paramsType: [],
|
|
172
|
-
},
|
|
173
159
|
lsl_push_sample_ft: {
|
|
174
160
|
library: 'lsl',
|
|
175
161
|
retType: DataType.Void,
|
|
@@ -188,6 +174,26 @@ export default class LiblslAdapterTest extends AbstractLslTest {
|
|
|
188
174
|
DataType.Double,
|
|
189
175
|
],
|
|
190
176
|
},
|
|
177
|
+
lsl_destroy_outlet: {
|
|
178
|
+
library: 'lsl',
|
|
179
|
+
retType: DataType.Void,
|
|
180
|
+
paramsType: [DataType.External],
|
|
181
|
+
},
|
|
182
|
+
lsl_create_inlet: {
|
|
183
|
+
library: 'lsl',
|
|
184
|
+
retType: DataType.External,
|
|
185
|
+
paramsType: [DataType.External, DataType.I32, DataType.I32],
|
|
186
|
+
},
|
|
187
|
+
lsl_flush_inlet: {
|
|
188
|
+
library: 'lsl',
|
|
189
|
+
retType: DataType.I32,
|
|
190
|
+
paramsType: [DataType.External],
|
|
191
|
+
},
|
|
192
|
+
lsl_destroy_inlet: {
|
|
193
|
+
library: 'lsl',
|
|
194
|
+
retType: DataType.Void,
|
|
195
|
+
paramsType: [DataType.External],
|
|
196
|
+
},
|
|
191
197
|
lsl_get_desc: {
|
|
192
198
|
library: 'lsl',
|
|
193
199
|
retType: DataType.External,
|
|
@@ -207,13 +213,18 @@ export default class LiblslAdapterTest extends AbstractLslTest {
|
|
|
207
213
|
DataType.String,
|
|
208
214
|
],
|
|
209
215
|
},
|
|
216
|
+
lsl_local_clock: {
|
|
217
|
+
library: 'lsl',
|
|
218
|
+
retType: DataType.Double,
|
|
219
|
+
paramsType: [],
|
|
220
|
+
},
|
|
210
221
|
})
|
|
211
222
|
}
|
|
212
223
|
|
|
213
224
|
@test()
|
|
214
225
|
protected static async canCreateStreamInfoWithRequiredParams() {
|
|
215
226
|
const options = this.generateRandomCreateStreamInfoOptions()
|
|
216
|
-
const actual = this.
|
|
227
|
+
const actual = this.instance.createStreamInfo(options)
|
|
217
228
|
|
|
218
229
|
assert.isEqual(actual, this.fakeStreamInfo)
|
|
219
230
|
assert.isEqualDeep(this.createStreamInfoParams, Object.values(options))
|
|
@@ -235,7 +246,7 @@ export default class LiblslAdapterTest extends AbstractLslTest {
|
|
|
235
246
|
sample: expected,
|
|
236
247
|
timestamp,
|
|
237
248
|
}
|
|
238
|
-
this.
|
|
249
|
+
this.instance.pushSampleFloatTimestamp(options)
|
|
239
250
|
|
|
240
251
|
assert.isEqualDeep(this.pushSampleFloatTimestampParams, [
|
|
241
252
|
this.fakeOutlet,
|
|
@@ -253,7 +264,7 @@ export default class LiblslAdapterTest extends AbstractLslTest {
|
|
|
253
264
|
sample: expected,
|
|
254
265
|
timestamp,
|
|
255
266
|
}
|
|
256
|
-
this.
|
|
267
|
+
this.instance.pushSampleStringTimestamp(options)
|
|
257
268
|
assert.isEqual(
|
|
258
269
|
this.pushSampleStringTimestampParams?.[0],
|
|
259
270
|
this.fakeOutlet
|
|
@@ -267,7 +278,7 @@ export default class LiblslAdapterTest extends AbstractLslTest {
|
|
|
267
278
|
const info = this.createRandomStreamInfo()
|
|
268
279
|
const channel: LslChannel = this.generateRandomChannelValues()
|
|
269
280
|
|
|
270
|
-
this.
|
|
281
|
+
this.instance.appendChannelsToStreamInfo({
|
|
271
282
|
info,
|
|
272
283
|
channels: [channel],
|
|
273
284
|
})
|
|
@@ -304,7 +315,7 @@ export default class LiblslAdapterTest extends AbstractLslTest {
|
|
|
304
315
|
const channel1 = this.generateRandomChannelValues()
|
|
305
316
|
const channel2 = this.generateRandomChannelValues()
|
|
306
317
|
|
|
307
|
-
this.
|
|
318
|
+
this.instance.appendChannelsToStreamInfo({
|
|
308
319
|
info,
|
|
309
320
|
channels: [channel1, channel2],
|
|
310
321
|
})
|
|
@@ -324,23 +335,23 @@ export default class LiblslAdapterTest extends AbstractLslTest {
|
|
|
324
335
|
protected static async canDestroyOutlet() {
|
|
325
336
|
const outlet = this.createRandomOutlet()
|
|
326
337
|
const options = { outlet }
|
|
327
|
-
this.
|
|
338
|
+
this.instance.destroyOutlet(options)
|
|
328
339
|
|
|
329
340
|
assert.isEqualDeep(this.destroyOutletParams, Object.values(options))
|
|
330
341
|
}
|
|
331
342
|
|
|
332
343
|
@test()
|
|
333
344
|
protected static async callingLocalClockTwiceReturnsDifferentTimestamps() {
|
|
334
|
-
const t1 = this.
|
|
345
|
+
const t1 = this.instance.localClock()
|
|
335
346
|
await this.wait(10)
|
|
336
|
-
const t2 = this.
|
|
347
|
+
const t2 = this.instance.localClock()
|
|
337
348
|
assert.isNotEqual(t1, t2)
|
|
338
349
|
}
|
|
339
350
|
|
|
340
351
|
@test()
|
|
341
352
|
protected static async localClockBindingReceivesEmptyArray() {
|
|
342
353
|
delete this.localClockParams
|
|
343
|
-
this.
|
|
354
|
+
this.instance.localClock()
|
|
344
355
|
assert.isEqualDeep(this.localClockParams, [])
|
|
345
356
|
}
|
|
346
357
|
|
|
@@ -349,7 +360,7 @@ export default class LiblslAdapterTest extends AbstractLslTest {
|
|
|
349
360
|
delete process.env.LIBLSL_PATH
|
|
350
361
|
|
|
351
362
|
LiblslAdapter.resetInstance()
|
|
352
|
-
this.
|
|
363
|
+
this.instance = LiblslAdapter.getInstance()
|
|
353
364
|
|
|
354
365
|
assert.isEqual(
|
|
355
366
|
this.ffiRsOpenOptions?.path,
|
|
@@ -364,21 +375,33 @@ export default class LiblslAdapterTest extends AbstractLslTest {
|
|
|
364
375
|
assert.isEqual(inlet, this.fakeInlet)
|
|
365
376
|
}
|
|
366
377
|
|
|
378
|
+
@test()
|
|
379
|
+
protected static async flushInletCallsBinding() {
|
|
380
|
+
const { inlet } = this.createRandomInlet()
|
|
381
|
+
this.instance.flushInlet({ inlet })
|
|
382
|
+
|
|
383
|
+
assert.isEqualDeep(
|
|
384
|
+
this.flushInletParams,
|
|
385
|
+
[inlet],
|
|
386
|
+
'Should have called flushInlet with expected params!'
|
|
387
|
+
)
|
|
388
|
+
}
|
|
389
|
+
|
|
367
390
|
private static createRandomStreamInfo() {
|
|
368
|
-
return this.
|
|
391
|
+
return this.instance.createStreamInfo(
|
|
369
392
|
this.generateRandomCreateStreamInfoOptions()
|
|
370
393
|
)
|
|
371
394
|
}
|
|
372
395
|
|
|
373
396
|
private static createRandomOutlet() {
|
|
374
397
|
const options = this.createRandomOptions()
|
|
375
|
-
const outlet = this.
|
|
398
|
+
const outlet = this.instance.createOutlet(options)
|
|
376
399
|
return { options, outlet }
|
|
377
400
|
}
|
|
378
401
|
|
|
379
402
|
private static createRandomInlet() {
|
|
380
403
|
const options = this.createRandomOptions()
|
|
381
|
-
const inlet = this.
|
|
404
|
+
const inlet = this.instance.createInlet(options)
|
|
382
405
|
return { options, inlet }
|
|
383
406
|
}
|
|
384
407
|
|
|
@@ -438,6 +461,10 @@ export default class LiblslAdapterTest extends AbstractLslTest {
|
|
|
438
461
|
this.createInletParams = params
|
|
439
462
|
return this.fakeInlet
|
|
440
463
|
},
|
|
464
|
+
lsl_flush_inlet: (params: any[]) => {
|
|
465
|
+
this.flushInletParams = params
|
|
466
|
+
return 0
|
|
467
|
+
},
|
|
441
468
|
lsl_destroy_inlet: (params: any[]) => {
|
|
442
469
|
this.destroyInletParams = params
|
|
443
470
|
},
|
package/src/__tests__/{modules/EventMarkerOutlet.test.ts → impl/LslEventMarkerOutlet.test.ts}
RENAMED
|
@@ -1,28 +1,35 @@
|
|
|
1
1
|
import { randomInt } from 'crypto'
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import { LslOutletOptions } from '../../modules/LslStreamOutlet'
|
|
5
|
-
import generateRandomOutletOptions from '../../testDoubles/generateRandomOutletOptions'
|
|
6
|
-
import FakeLslOutlet from '../../testDoubles/LslOutlet/FakeLslOutlet'
|
|
7
|
-
import SpyMarkerOutlet from '../../testDoubles/MarkerOutlet/SpyMarkerOutlet'
|
|
8
|
-
import AbstractLslTest from '../AbstractLslTest'
|
|
2
|
+
import generateId from '@neurodevs/generate-id'
|
|
3
|
+
import { assert, test } from '@neurodevs/node-tdd'
|
|
9
4
|
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
import LslEventMarkerOutlet from '../../impl/LslEventMarkerOutlet.js'
|
|
6
|
+
import { StreamOutletOptions } from '../../impl/LslStreamOutlet.js'
|
|
7
|
+
import SpyEventMarkerOutlet from '../../testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js'
|
|
8
|
+
import generateRandomOutletOptions from '../../testDoubles/generateRandomOutletOptions.js'
|
|
9
|
+
import FakeStreamOutlet from '../../testDoubles/StreamOutlet/FakeStreamOutlet.js'
|
|
10
|
+
import AbstractPackageTest from '../AbstractPackageTest.js'
|
|
11
|
+
|
|
12
|
+
export default class EventMarkerOutletTest extends AbstractPackageTest {
|
|
13
|
+
private static instance: SpyEventMarkerOutlet
|
|
12
14
|
|
|
13
15
|
protected static async beforeEach() {
|
|
14
16
|
await super.beforeEach()
|
|
15
17
|
|
|
16
18
|
this.setFakeLiblsl()
|
|
17
|
-
this.
|
|
18
|
-
this.
|
|
19
|
+
this.setFakeStreamOutlet()
|
|
20
|
+
this.setSpyEventMarkerOutlet()
|
|
19
21
|
|
|
20
|
-
this.instance = await this.
|
|
22
|
+
this.instance = await this.LslEventMarkerOutlet()
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@test()
|
|
26
|
+
protected static async createsInstance() {
|
|
27
|
+
assert.isTruthy(this.instance, 'Failed to create instance!')
|
|
21
28
|
}
|
|
22
29
|
|
|
23
30
|
@test()
|
|
24
31
|
protected static async loadsWithEventMarkerSpecificOptions() {
|
|
25
|
-
assert.isEqualDeep(
|
|
32
|
+
assert.isEqualDeep(FakeStreamOutlet.callsToConstructor[0].options, {
|
|
26
33
|
name: 'Event markers',
|
|
27
34
|
type: 'Markers',
|
|
28
35
|
channelNames: ['Markers'],
|
|
@@ -39,9 +46,12 @@ export default class EventMarkerOutletTest extends AbstractLslTest {
|
|
|
39
46
|
@test()
|
|
40
47
|
protected static async canOverrideDefaultOptions() {
|
|
41
48
|
const options = generateRandomOutletOptions()
|
|
42
|
-
await this.
|
|
49
|
+
await this.LslEventMarkerOutlet(options)
|
|
43
50
|
|
|
44
|
-
assert.isEqualDeep(
|
|
51
|
+
assert.isEqualDeep(
|
|
52
|
+
FakeStreamOutlet.callsToConstructor[1].options,
|
|
53
|
+
options
|
|
54
|
+
)
|
|
45
55
|
}
|
|
46
56
|
|
|
47
57
|
@test()
|
|
@@ -52,7 +62,7 @@ export default class EventMarkerOutletTest extends AbstractLslTest {
|
|
|
52
62
|
const marker = markers[0]
|
|
53
63
|
|
|
54
64
|
assert.isEqual(
|
|
55
|
-
|
|
65
|
+
FakeStreamOutlet.callsToPushSample[0][0],
|
|
56
66
|
marker.name,
|
|
57
67
|
'Pushed the wrong marker!'
|
|
58
68
|
)
|
|
@@ -64,7 +74,7 @@ export default class EventMarkerOutletTest extends AbstractLslTest {
|
|
|
64
74
|
protected static async pushingTwoMarkersIncrementsHitCountAndWaitTimeTwice() {
|
|
65
75
|
const markers = await this.pushTotalMarkers(2)
|
|
66
76
|
|
|
67
|
-
assert.isEqual(
|
|
77
|
+
assert.isEqual(FakeStreamOutlet.callsToPushSample.length, 2)
|
|
68
78
|
|
|
69
79
|
assert.isEqual(
|
|
70
80
|
this.instance.totalWaitTimeMs,
|
|
@@ -78,7 +88,7 @@ export default class EventMarkerOutletTest extends AbstractLslTest {
|
|
|
78
88
|
protected static async canStopEventMarkersMidPush(bailIdx: number) {
|
|
79
89
|
let hitCount = 0
|
|
80
90
|
|
|
81
|
-
const outlet = this.instance.
|
|
91
|
+
const outlet = this.instance.getStreamOutlet()
|
|
82
92
|
|
|
83
93
|
outlet.pushSample = () => {
|
|
84
94
|
hitCount += 1
|
|
@@ -98,7 +108,7 @@ export default class EventMarkerOutletTest extends AbstractLslTest {
|
|
|
98
108
|
|
|
99
109
|
let hitCount = 0
|
|
100
110
|
|
|
101
|
-
const outlet = this.instance.
|
|
111
|
+
const outlet = this.instance.getStreamOutlet()
|
|
102
112
|
|
|
103
113
|
outlet.pushSample = () => {
|
|
104
114
|
hitCount++
|
|
@@ -127,7 +137,7 @@ export default class EventMarkerOutletTest extends AbstractLslTest {
|
|
|
127
137
|
void this.pushTotalMarkers(2, 100)
|
|
128
138
|
this.instance.stop()
|
|
129
139
|
|
|
130
|
-
this.
|
|
140
|
+
this.streamOutlet.pushSample = () =>
|
|
131
141
|
assert.fail('Should not have been called')
|
|
132
142
|
}
|
|
133
143
|
|
|
@@ -136,16 +146,16 @@ export default class EventMarkerOutletTest extends AbstractLslTest {
|
|
|
136
146
|
const markerName = generateId()
|
|
137
147
|
this.instance.pushMarker(markerName)
|
|
138
148
|
|
|
139
|
-
assert.isEqual(
|
|
149
|
+
assert.isEqual(FakeStreamOutlet.callsToPushSample[0][0], markerName)
|
|
140
150
|
}
|
|
141
151
|
|
|
142
|
-
private static get
|
|
143
|
-
return this.instance.
|
|
152
|
+
private static get streamOutlet() {
|
|
153
|
+
return this.instance.getStreamOutlet()
|
|
144
154
|
}
|
|
145
155
|
|
|
146
156
|
private static async setupOutlet() {
|
|
147
|
-
|
|
148
|
-
this.instance = await this.
|
|
157
|
+
LslEventMarkerOutlet.Class = LslEventMarkerOutlet as any
|
|
158
|
+
this.instance = await this.LslEventMarkerOutlet()
|
|
149
159
|
}
|
|
150
160
|
|
|
151
161
|
private static async pushTotalMarkers(total: number, durationMs?: number) {
|
|
@@ -165,9 +175,11 @@ export default class EventMarkerOutletTest extends AbstractLslTest {
|
|
|
165
175
|
}
|
|
166
176
|
}
|
|
167
177
|
|
|
168
|
-
private static async
|
|
169
|
-
options?: Partial<
|
|
178
|
+
private static async LslEventMarkerOutlet(
|
|
179
|
+
options?: Partial<StreamOutletOptions>
|
|
170
180
|
) {
|
|
171
|
-
return (await
|
|
181
|
+
return (await LslEventMarkerOutlet.Create(
|
|
182
|
+
options
|
|
183
|
+
)) as SpyEventMarkerOutlet
|
|
172
184
|
}
|
|
173
185
|
}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import LslStreamInfo, { StreamInfoOptions } from '../../modules/LslStreamInfo'
|
|
4
|
-
import SpyStreamInfo from '../../testDoubles/StreamInfo/SpyStreamInfo'
|
|
5
|
-
import AbstractLslTest from '../AbstractLslTest'
|
|
1
|
+
import generateId from '@neurodevs/generate-id'
|
|
2
|
+
import { test, assert } from '@neurodevs/node-tdd'
|
|
6
3
|
|
|
7
|
-
|
|
4
|
+
import { CHANNEL_FORMATS } from '../../consts.js'
|
|
5
|
+
import LslStreamInfo, { StreamInfoOptions } from '../../impl/LslStreamInfo.js'
|
|
6
|
+
import SpyStreamInfo from '../../testDoubles/StreamInfo/SpyStreamInfo.js'
|
|
7
|
+
import AbstractPackageTest from '../AbstractPackageTest.js'
|
|
8
|
+
|
|
9
|
+
export default class LslStreamInfoTest extends AbstractPackageTest {
|
|
8
10
|
private static instance: SpyStreamInfo
|
|
9
11
|
|
|
10
12
|
protected static async beforeEach() {
|
|
@@ -16,8 +18,8 @@ export default class LslStreamInfoTest extends AbstractLslTest {
|
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
@test()
|
|
19
|
-
protected static async
|
|
20
|
-
assert.isTruthy(this.instance, '
|
|
21
|
+
protected static async createsInstance() {
|
|
22
|
+
assert.isTruthy(this.instance, 'Failed to create instance!')
|
|
21
23
|
}
|
|
22
24
|
|
|
23
25
|
@test()
|