@neurodevs/node-lsl 10.2.1 → 11.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/README.md +17 -38
- package/build/__tests__/{AbstractNodeLslTest.d.ts → AbstractLslTest.d.ts} +7 -6
- package/build/__tests__/{AbstractNodeLslTest.js → AbstractLslTest.js} +30 -24
- package/build/__tests__/AbstractLslTest.js.map +1 -0
- package/build/__tests__/{TimeMarkerOutlet.test.d.ts → EventMarkerOutlet.test.d.ts} +9 -8
- package/build/__tests__/{TimeMarkerOutlet.test.js → EventMarkerOutlet.test.js} +53 -48
- package/build/__tests__/EventMarkerOutlet.test.js.map +1 -0
- package/build/__tests__/{Liblsl.test.d.ts → LiblslAdapter.test.d.ts} +2 -2
- package/build/__tests__/{Liblsl.test.js → LiblslAdapter.test.js} +43 -75
- package/build/__tests__/LiblslAdapter.test.js.map +1 -0
- package/build/__tests__/LslStreamInfo.test.d.ts +3 -3
- package/build/__tests__/LslStreamInfo.test.js +3 -3
- package/build/__tests__/LslStreamInfo.test.js.map +1 -1
- package/build/__tests__/{LslInlet.test.d.ts → LslStreamInlet.test.d.ts} +4 -4
- package/build/__tests__/{LslInlet.test.js → LslStreamInlet.test.js} +19 -19
- package/build/__tests__/LslStreamInlet.test.js.map +1 -0
- package/build/__tests__/{LslOutlet.test.d.ts → LslStreamOutlet.test.d.ts} +3 -3
- package/build/__tests__/{LslOutlet.test.js → LslStreamOutlet.test.js} +45 -41
- package/build/__tests__/LslStreamOutlet.test.js.map +1 -0
- package/build/components/EventMarkerOutlet.d.ts +20 -0
- package/build/components/{TimeMarkerOutlet.js → EventMarkerOutlet.js} +11 -10
- package/build/components/EventMarkerOutlet.js.map +1 -0
- package/build/components/{Liblsl.d.ts → LiblslAdapter.d.ts} +1 -1
- package/build/components/{Liblsl.js → LiblslAdapter.js} +7 -7
- package/build/components/LiblslAdapter.js.map +1 -0
- package/build/components/LslStreamInfo.js +2 -2
- package/build/components/LslStreamInfo.js.map +1 -1
- package/build/components/{LslInlet.d.ts → LslStreamInlet.d.ts} +4 -4
- package/build/components/{LslInlet.js → LslStreamInlet.js} +5 -5
- package/build/components/LslStreamInlet.js.map +1 -0
- package/build/components/{LslOutlet.d.ts → LslStreamOutlet.d.ts} +1 -1
- package/build/components/{LslOutlet.js → LslStreamOutlet.js} +5 -5
- package/build/components/LslStreamOutlet.js.map +1 -0
- package/build/index.d.ts +20 -19
- package/build/index.js +33 -28
- package/build/index.js.map +1 -1
- package/build/nodeLsl.types.d.ts +3 -3
- package/build/testDoubles/{FakeLiblsl.d.ts → Liblsl/FakeLiblsl.d.ts} +1 -1
- package/build/testDoubles/Liblsl/FakeLiblsl.js.map +1 -0
- package/build/testDoubles/LslInlet/SpyLslInlet.d.ts +7 -0
- package/build/testDoubles/{SpyLslInlet.js → LslInlet/SpyLslInlet.js} +2 -2
- package/build/testDoubles/LslInlet/SpyLslInlet.js.map +1 -0
- package/build/testDoubles/{FakeLslOutlet.d.ts → LslOutlet/FakeLslOutlet.d.ts} +3 -5
- package/build/testDoubles/{FakeLslOutlet.js → LslOutlet/FakeLslOutlet.js} +0 -4
- package/build/testDoubles/LslOutlet/FakeLslOutlet.js.map +1 -0
- package/build/testDoubles/{FakeTimeMarkerOutlet.d.ts → MarkerOutlet/FakeMarkerOutlet.d.ts} +4 -4
- package/build/testDoubles/{FakeTimeMarkerOutlet.js → MarkerOutlet/FakeMarkerOutlet.js} +4 -4
- package/build/testDoubles/MarkerOutlet/FakeMarkerOutlet.js.map +1 -0
- package/build/testDoubles/{MockTimeMarkerOutlet.d.ts → MarkerOutlet/MockMarkerOutlet.d.ts} +3 -2
- package/build/testDoubles/{MockTimeMarkerOutlet.js → MarkerOutlet/MockMarkerOutlet.js} +3 -3
- package/build/testDoubles/MarkerOutlet/MockMarkerOutlet.js.map +1 -0
- package/build/testDoubles/MarkerOutlet/SpyMarkerOutlet.d.ts +9 -0
- package/build/testDoubles/MarkerOutlet/SpyMarkerOutlet.js +24 -0
- package/build/testDoubles/MarkerOutlet/SpyMarkerOutlet.js.map +1 -0
- package/build/testDoubles/{FakeStreamInfo.d.ts → StreamInfo/FakeStreamInfo.d.ts} +2 -2
- package/build/testDoubles/StreamInfo/FakeStreamInfo.js.map +1 -0
- package/build/testDoubles/StreamInfo/SpyStreamInfo.d.ts +9 -0
- package/build/testDoubles/{SpyLslStreamInfo.js → StreamInfo/SpyStreamInfo.js} +4 -4
- package/build/testDoubles/StreamInfo/SpyStreamInfo.js.map +1 -0
- package/build/testDoubles/generateRandomOutletOptions.d.ts +1 -1
- package/package.json +1 -1
- package/src/__tests__/AbstractLslTest.ts +58 -0
- package/src/__tests__/EventMarkerOutlet.test.ts +165 -0
- package/src/__tests__/{Liblsl.test.ts → LiblslAdapter.test.ts} +18 -22
- package/src/__tests__/LslStreamInfo.test.ts +12 -12
- package/src/__tests__/{LslInlet.test.ts → LslStreamInlet.test.ts} +13 -13
- package/src/__tests__/{LslOutlet.test.ts → LslStreamOutlet.test.ts} +28 -22
- package/src/components/{TimeMarkerOutlet.ts → EventMarkerOutlet.ts} +17 -17
- package/src/components/{Liblsl.ts → LiblslAdapter.ts} +3 -3
- package/src/components/LslStreamInfo.ts +2 -2
- package/src/components/{LslInlet.ts → LslStreamInlet.ts} +5 -5
- package/src/components/{LslOutlet.ts → LslStreamOutlet.ts} +3 -3
- package/src/index.ts +28 -19
- package/src/nodeLsl.types.ts +3 -3
- package/src/testDoubles/{FakeLiblsl.ts → Liblsl/FakeLiblsl.ts} +1 -1
- package/src/testDoubles/{SpyLslInlet.ts → LslInlet/SpyLslInlet.ts} +5 -3
- package/src/testDoubles/{FakeLslOutlet.ts → LslOutlet/FakeLslOutlet.ts} +3 -9
- package/src/testDoubles/{FakeTimeMarkerOutlet.ts → MarkerOutlet/FakeMarkerOutlet.ts} +4 -4
- package/src/testDoubles/{MockTimeMarkerOutlet.ts → MarkerOutlet/MockMarkerOutlet.ts} +3 -2
- package/src/testDoubles/MarkerOutlet/SpyMarkerOutlet.ts +24 -0
- package/src/testDoubles/{FakeStreamInfo.ts → StreamInfo/FakeStreamInfo.ts} +2 -2
- package/src/testDoubles/{SpyLslStreamInfo.ts → StreamInfo/SpyStreamInfo.ts} +4 -2
- package/src/testDoubles/generateRandomOutletOptions.ts +1 -1
- package/build/__tests__/AbstractNodeLslTest.js.map +0 -1
- package/build/__tests__/Liblsl.test.js.map +0 -1
- package/build/__tests__/LslInlet.test.js.map +0 -1
- package/build/__tests__/LslOutlet.test.js.map +0 -1
- package/build/__tests__/SpyLslStreamInfo.d.ts +0 -5
- package/build/__tests__/SpyLslStreamInfo.js +0 -17
- package/build/__tests__/SpyLslStreamInfo.js.map +0 -1
- package/build/__tests__/TimeMarkerOutlet.test.js.map +0 -1
- package/build/components/Liblsl.js.map +0 -1
- package/build/components/LslInlet.js.map +0 -1
- package/build/components/LslOutlet.js.map +0 -1
- package/build/components/TimeMarkerOutlet.d.ts +0 -19
- package/build/components/TimeMarkerOutlet.js.map +0 -1
- package/build/demo.d.ts +0 -1
- package/build/demo.js +0 -42
- package/build/demo.js.map +0 -1
- package/build/testDoubles/FakeLiblsl.js.map +0 -1
- package/build/testDoubles/FakeLslOutlet.js.map +0 -1
- package/build/testDoubles/FakeLslStreamInfo.d.ts +0 -5
- package/build/testDoubles/FakeLslStreamInfo.js +0 -10
- package/build/testDoubles/FakeLslStreamInfo.js.map +0 -1
- package/build/testDoubles/FakeStreamInfo.js.map +0 -1
- package/build/testDoubles/FakeTimeMarkerOutlet.js.map +0 -1
- package/build/testDoubles/MockTimeMarkerOutlet.js.map +0 -1
- package/build/testDoubles/SpyLslInlet.d.ts +0 -7
- package/build/testDoubles/SpyLslInlet.js.map +0 -1
- package/build/testDoubles/SpyLslStreamInfo.d.ts +0 -9
- package/build/testDoubles/SpyLslStreamInfo.js.map +0 -1
- package/build/testDoubles/SpyTimeMarkerOutlet.d.ts +0 -9
- package/build/testDoubles/SpyTimeMarkerOutlet.js +0 -19
- package/build/testDoubles/SpyTimeMarkerOutlet.js.map +0 -1
- package/src/__tests__/AbstractNodeLslTest.ts +0 -50
- package/src/__tests__/TimeMarkerOutlet.test.ts +0 -151
- package/src/demo.ts +0 -43
- package/src/testDoubles/SpyTimeMarkerOutlet.ts +0 -19
- /package/build/testDoubles/{FakeLiblsl.js → Liblsl/FakeLiblsl.js} +0 -0
- /package/build/testDoubles/{FakeStreamInfo.js → StreamInfo/FakeStreamInfo.js} +0 -0
package/build/index.js
CHANGED
|
@@ -17,40 +17,45 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.generateRandomOutletOptions = exports.
|
|
20
|
+
exports.generateRandomOutletOptions = exports.SpyMarkerOutlet = exports.MockMarkerOutlet = exports.FakeMarkerOutlet = exports.EventMarkerOutlet = exports.FakeLslOutlet = exports.LslStreamOutlet = exports.FakeStreamInfo = exports.SpyStreamInfo = exports.LslStreamInfo = exports.FakeLiblsl = exports.LiblslAdapter = void 0;
|
|
21
21
|
__exportStar(require("./nodeLsl.types"), exports);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
// Liblsl
|
|
23
|
+
var LiblslAdapter_1 = require("./components/LiblslAdapter");
|
|
24
|
+
Object.defineProperty(exports, "LiblslAdapter", { enumerable: true, get: function () { return __importDefault(LiblslAdapter_1).default; } });
|
|
25
|
+
__exportStar(require("./components/LiblslAdapter"), exports);
|
|
26
|
+
var FakeLiblsl_1 = require("./testDoubles/Liblsl/FakeLiblsl");
|
|
27
|
+
Object.defineProperty(exports, "FakeLiblsl", { enumerable: true, get: function () { return __importDefault(FakeLiblsl_1).default; } });
|
|
28
|
+
__exportStar(require("./testDoubles/Liblsl/FakeLiblsl"), exports);
|
|
29
|
+
// LslStreamInfo
|
|
25
30
|
var LslStreamInfo_1 = require("./components/LslStreamInfo");
|
|
26
31
|
Object.defineProperty(exports, "LslStreamInfo", { enumerable: true, get: function () { return __importDefault(LslStreamInfo_1).default; } });
|
|
27
32
|
__exportStar(require("./components/LslStreamInfo"), exports);
|
|
28
|
-
var
|
|
29
|
-
Object.defineProperty(exports, "
|
|
30
|
-
__exportStar(require("./testDoubles/
|
|
31
|
-
var FakeStreamInfo_1 = require("./testDoubles/FakeStreamInfo");
|
|
33
|
+
var SpyStreamInfo_1 = require("./testDoubles/StreamInfo/SpyStreamInfo");
|
|
34
|
+
Object.defineProperty(exports, "SpyStreamInfo", { enumerable: true, get: function () { return __importDefault(SpyStreamInfo_1).default; } });
|
|
35
|
+
__exportStar(require("./testDoubles/StreamInfo/SpyStreamInfo"), exports);
|
|
36
|
+
var FakeStreamInfo_1 = require("./testDoubles/StreamInfo/FakeStreamInfo");
|
|
32
37
|
Object.defineProperty(exports, "FakeStreamInfo", { enumerable: true, get: function () { return __importDefault(FakeStreamInfo_1).default; } });
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
var FakeLiblsl_1 = require("./testDoubles/FakeLiblsl");
|
|
40
|
-
Object.defineProperty(exports, "FakeLiblsl", { enumerable: true, get: function () { return __importDefault(FakeLiblsl_1).default; } });
|
|
41
|
-
__exportStar(require("./testDoubles/FakeLiblsl"), exports);
|
|
42
|
-
var FakeLslOutlet_1 = require("./testDoubles/FakeLslOutlet");
|
|
38
|
+
__exportStar(require("./testDoubles/StreamInfo/FakeStreamInfo"), exports);
|
|
39
|
+
// LslStreamOutlet
|
|
40
|
+
var LslStreamOutlet_1 = require("./components/LslStreamOutlet");
|
|
41
|
+
Object.defineProperty(exports, "LslStreamOutlet", { enumerable: true, get: function () { return __importDefault(LslStreamOutlet_1).default; } });
|
|
42
|
+
__exportStar(require("./components/LslStreamOutlet"), exports);
|
|
43
|
+
var FakeLslOutlet_1 = require("./testDoubles/LslOutlet/FakeLslOutlet");
|
|
43
44
|
Object.defineProperty(exports, "FakeLslOutlet", { enumerable: true, get: function () { return __importDefault(FakeLslOutlet_1).default; } });
|
|
44
|
-
__exportStar(require("./testDoubles/FakeLslOutlet"), exports);
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
45
|
+
__exportStar(require("./testDoubles/LslOutlet/FakeLslOutlet"), exports);
|
|
46
|
+
// EventMarkerOutlet
|
|
47
|
+
var EventMarkerOutlet_1 = require("./components/EventMarkerOutlet");
|
|
48
|
+
Object.defineProperty(exports, "EventMarkerOutlet", { enumerable: true, get: function () { return __importDefault(EventMarkerOutlet_1).default; } });
|
|
49
|
+
__exportStar(require("./components/EventMarkerOutlet"), exports);
|
|
50
|
+
var FakeMarkerOutlet_1 = require("./testDoubles/MarkerOutlet/FakeMarkerOutlet");
|
|
51
|
+
Object.defineProperty(exports, "FakeMarkerOutlet", { enumerable: true, get: function () { return __importDefault(FakeMarkerOutlet_1).default; } });
|
|
52
|
+
__exportStar(require("./testDoubles/MarkerOutlet/FakeMarkerOutlet"), exports);
|
|
53
|
+
var MockMarkerOutlet_1 = require("./testDoubles/MarkerOutlet/MockMarkerOutlet");
|
|
54
|
+
Object.defineProperty(exports, "MockMarkerOutlet", { enumerable: true, get: function () { return __importDefault(MockMarkerOutlet_1).default; } });
|
|
55
|
+
__exportStar(require("./testDoubles/MarkerOutlet/MockMarkerOutlet"), exports);
|
|
56
|
+
var SpyMarkerOutlet_1 = require("./testDoubles/MarkerOutlet/SpyMarkerOutlet");
|
|
57
|
+
Object.defineProperty(exports, "SpyMarkerOutlet", { enumerable: true, get: function () { return __importDefault(SpyMarkerOutlet_1).default; } });
|
|
58
|
+
__exportStar(require("./testDoubles/MarkerOutlet/SpyMarkerOutlet"), exports);
|
|
54
59
|
var generateRandomOutletOptions_1 = require("./testDoubles/generateRandomOutletOptions");
|
|
55
60
|
Object.defineProperty(exports, "generateRandomOutletOptions", { enumerable: true, get: function () { return __importDefault(generateRandomOutletOptions_1).default; } });
|
|
56
61
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,kDAA+B;AAE/B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,kDAA+B;AAE/B,SAAS;AAET,4DAAqE;AAA5D,+HAAA,OAAO,OAAiB;AACjC,6DAA0C;AAE1C,8DAAuE;AAA9D,yHAAA,OAAO,OAAc;AAC9B,kEAA+C;AAE/C,gBAAgB;AAEhB,4DAAqE;AAA5D,+HAAA,OAAO,OAAiB;AACjC,6DAA0C;AAE1C,wEAAiF;AAAxE,+HAAA,OAAO,OAAiB;AACjC,yEAAsD;AAEtD,0EAAmF;AAA1E,iIAAA,OAAO,OAAkB;AAClC,0EAAuD;AAEvD,kBAAkB;AAElB,gEAAyE;AAAhE,mIAAA,OAAO,OAAmB;AACnC,+DAA4C;AAE5C,uEAAgF;AAAvE,+HAAA,OAAO,OAAiB;AACjC,wEAAqD;AAErD,oBAAoB;AAEpB,oEAA6E;AAApE,uIAAA,OAAO,OAAqB;AACrC,iEAA8C;AAE9C,gFAAyF;AAAhF,qIAAA,OAAO,OAAoB;AACpC,8EAA2D;AAE3D,gFAAyF;AAAhF,qIAAA,OAAO,OAAoB;AACpC,8EAA2D;AAE3D,8EAAuF;AAA9E,mIAAA,OAAO,OAAmB;AACnC,6EAA0D;AAE1D,yFAAkG;AAAzF,2JAAA,OAAO,OAA+B"}
|
package/build/nodeLsl.types.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { FuncObj, FieldType } from 'ffi-rs';
|
|
2
|
-
import {
|
|
3
|
-
import { LslOutlet } from './components/
|
|
2
|
+
import { LslInlet } from './components/LslStreamInlet';
|
|
3
|
+
import { LslOutlet } from './components/LslStreamOutlet';
|
|
4
4
|
import { CHANNEL_FORMATS } from './consts';
|
|
5
|
-
export type StreamFixuture = LslOutlet |
|
|
5
|
+
export type StreamFixuture = LslOutlet | LslInlet;
|
|
6
6
|
export type ChannelFormat = (typeof CHANNEL_FORMATS)[number];
|
|
7
7
|
export interface DurationMarker {
|
|
8
8
|
name: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BoundOutlet, BoundStreamInfo, CreateStreamInfoOptions, AppendChannelsToStreamInfoOptions, CreateOutletOptions, PushSampleFloatTimestampOptions, PushSampleStringTimestampOptions, Liblsl, CreateInletOptions, DestroyInletOptions, BoundInlet } from '
|
|
1
|
+
import { BoundOutlet, BoundStreamInfo, CreateStreamInfoOptions, AppendChannelsToStreamInfoOptions, CreateOutletOptions, PushSampleFloatTimestampOptions, PushSampleStringTimestampOptions, Liblsl, CreateInletOptions, DestroyInletOptions, BoundInlet } from '../../nodeLsl.types';
|
|
2
2
|
export default class FakeLiblsl implements Liblsl {
|
|
3
3
|
outlet: BoundOutlet;
|
|
4
4
|
streamInfo: BoundStreamInfo;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FakeLiblsl.js","sourceRoot":"","sources":["../../../src/testDoubles/Liblsl/FakeLiblsl.ts"],"names":[],"mappings":";;AAcA,MAAqB,UAAU;IAA/B;QACW,WAAM,GAAgB,EAAiB,CAAA;QACvC,eAAU,GAAoB,EAAqB,CAAA;QAUnD,6BAAwB,GAAG,CAAC,CAAA;QAC5B,yBAAoB,GAAG,CAAC,CAAA;QACxB,0BAAqB,GAAG,CAAC,CAAA;QACzB,wBAAmB,GAAG,CAAC,CAAA;QACvB,yBAAoB,GAAG,CAAC,CAAA;QACxB,uBAAkB,GAAG,CAAC,CAAA;QACtB,sCAAiC,GAAG,CAAC,CAAA;IA+DhD,CAAC;IA7DU,gBAAgB,CAAC,OAAgC;QACpD,IAAI,CAAC,wBAAwB,EAAE,CAAA;QAC/B,IAAI,CAAC,2BAA2B,GAAG,OAAO,CAAA;QAC1C,OAAO,IAAI,CAAC,UAAU,CAAA;IAC1B,CAAC;IAEM,0BAA0B,CAC7B,OAA0C;QAE1C,IAAI,CAAC,qCAAqC,GAAG,OAAO,CAAA;IACxD,CAAC;IAEM,wBAAwB,CAAC,OAAwC;QACpE,IAAI,CAAC,mCAAmC,GAAG,OAAO,CAAA;IACtD,CAAC;IAEM,yBAAyB,CAC5B,OAAyC;QAEzC,IAAI,CAAC,oCAAoC,GAAG,OAAO,CAAA;QACnD,IAAI,CAAC,iCAAiC,EAAE,CAAA;IAC5C,CAAC;IAEM,YAAY,CAAC,OAA4B;QAC5C,IAAI,CAAC,oBAAoB,EAAE,CAAA;QAC3B,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAA;QACtC,OAAO,IAAI,CAAC,MAAM,CAAA;IACtB,CAAC;IAEM,aAAa;QAChB,IAAI,CAAC,qBAAqB,EAAE,CAAA;IAChC,CAAC;IAEM,WAAW,CAAC,OAA2B;QAC1C,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAC1B,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAA;QACrC,OAAO,EAAgB,CAAA;IAC3B,CAAC;IAEM,YAAY,CAAC,OAA4B;QAC5C,IAAI,CAAC,oBAAoB,EAAE,CAAA;QAC3B,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAA;IAC1C,CAAC;IAEM,UAAU;QACb,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACzB,OAAO,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;IAC/B,CAAC;IAEM,eAAe;QAClB,IAAI,CAAC,2BAA2B,GAAG,SAAS,CAAA;QAC5C,IAAI,CAAC,qCAAqC,GAAG,SAAS,CAAA;QACtD,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAA;QACxC,IAAI,CAAC,mCAAmC,GAAG,SAAS,CAAA;QACpD,IAAI,CAAC,oCAAoC,GAAG,SAAS,CAAA;QAErD,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAA;QACjC,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAA;QAC3B,IAAI,CAAC,iCAAiC,GAAG,CAAC,CAAA;IAC9C,CAAC;CACJ;AAjFD,6BAiFC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { StreamInfo } from '../../components/LslStreamInfo';
|
|
2
|
+
import LslStreamInlet, { LslInletOptions } from '../../components/LslStreamInlet';
|
|
3
|
+
export declare class SpyLslInlet extends LslStreamInlet {
|
|
4
|
+
constructor(info: StreamInfo, options: LslInletOptions);
|
|
5
|
+
getName(): string;
|
|
6
|
+
getStreamInfo(): StreamInfo;
|
|
7
|
+
}
|
|
@@ -4,8 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.SpyLslInlet = void 0;
|
|
7
|
-
const
|
|
8
|
-
class SpyLslInlet extends
|
|
7
|
+
const LslStreamInlet_1 = __importDefault(require("../../components/LslStreamInlet"));
|
|
8
|
+
class SpyLslInlet extends LslStreamInlet_1.default {
|
|
9
9
|
constructor(info, options) {
|
|
10
10
|
super(info, options);
|
|
11
11
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpyLslInlet.js","sourceRoot":"","sources":["../../../src/testDoubles/LslInlet/SpyLslInlet.ts"],"names":[],"mappings":";;;;;;AACA,qFAEwC;AAExC,MAAa,WAAY,SAAQ,wBAAc;IAC3C,YAAmB,IAAgB,EAAE,OAAwB;QACzD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACxB,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,IAAI,CAAA;IACpB,CAAC;IAEM,aAAa;QAChB,OAAO,IAAI,CAAC,IAAI,CAAA;IACpB,CAAC;CACJ;AAZD,kCAYC"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { LslSample } from '
|
|
1
|
+
import { StreamInfo } from '../../components/LslStreamInfo';
|
|
2
|
+
import { LslOutlet, LslOutletOptions } from '../../components/LslStreamOutlet';
|
|
3
|
+
import { LslSample } from '../../nodeLsl.types';
|
|
4
4
|
export default class FakeLslOutlet implements LslOutlet {
|
|
5
|
-
static constructorInfo?: StreamInfo;
|
|
6
|
-
static constructorOptions?: LslOutletOptions;
|
|
7
5
|
static callsToConstructor: CallToConstructor[];
|
|
8
6
|
static callsToPushSample: LslSample[];
|
|
9
7
|
static numCallsToDestroy: number;
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
class FakeLslOutlet {
|
|
4
4
|
constructor(info, options) {
|
|
5
|
-
FakeLslOutlet.constructorInfo = info;
|
|
6
|
-
FakeLslOutlet.constructorOptions = options;
|
|
7
5
|
FakeLslOutlet.callsToConstructor.push({ info, options });
|
|
8
6
|
}
|
|
9
7
|
destroy() {
|
|
@@ -13,8 +11,6 @@ class FakeLslOutlet {
|
|
|
13
11
|
FakeLslOutlet.callsToPushSample.push(sample);
|
|
14
12
|
}
|
|
15
13
|
static resetTestDouble() {
|
|
16
|
-
FakeLslOutlet.constructorInfo = undefined;
|
|
17
|
-
FakeLslOutlet.constructorOptions = undefined;
|
|
18
14
|
FakeLslOutlet.callsToConstructor = [];
|
|
19
15
|
FakeLslOutlet.callsToPushSample = [];
|
|
20
16
|
FakeLslOutlet.numCallsToDestroy = 0;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FakeLslOutlet.js","sourceRoot":"","sources":["../../../src/testDoubles/LslOutlet/FakeLslOutlet.ts"],"names":[],"mappings":";;AAIA,MAAqB,aAAa;IAK9B,YAAmB,IAAgB,EAAE,OAAyB;QAC1D,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;IAC5D,CAAC;IAEM,OAAO;QACV,aAAa,CAAC,iBAAiB,EAAE,CAAA;IACrC,CAAC;IAEM,UAAU,CAAC,MAAiB;QAC/B,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAChD,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;;AApBa,gCAAkB,GAAwB,EAAE,CAAA;AAC5C,+BAAiB,GAAgB,EAAE,CAAA;AACnC,+BAAiB,GAAG,CAAC,CAAA;kBAHlB,aAAa"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { DurationMarker } from '
|
|
3
|
-
export default class
|
|
1
|
+
import { MarkerOutlet } from '../../components/EventMarkerOutlet';
|
|
2
|
+
import { DurationMarker } from '../../nodeLsl.types';
|
|
3
|
+
export default class FakeMarkerOutlet implements MarkerOutlet {
|
|
4
4
|
pushMarkersCalls: DurationMarker[][];
|
|
5
5
|
pushSampleCalls: string[][];
|
|
6
6
|
numStopCalls: number;
|
|
@@ -10,5 +10,5 @@ export default class FakeTimeMarkerOutlet implements TimeMarkerOutlet {
|
|
|
10
10
|
pushSample(sample: string[]): void;
|
|
11
11
|
stop(): void;
|
|
12
12
|
destroy(): void;
|
|
13
|
-
|
|
13
|
+
resetSpy(): void;
|
|
14
14
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
class
|
|
3
|
+
class FakeMarkerOutlet {
|
|
4
4
|
constructor() {
|
|
5
5
|
this.pushMarkersCalls = [];
|
|
6
6
|
this.pushSampleCalls = [];
|
|
@@ -19,12 +19,12 @@ class FakeTimeMarkerOutlet {
|
|
|
19
19
|
destroy() {
|
|
20
20
|
this.numDestroyCalls++;
|
|
21
21
|
}
|
|
22
|
-
|
|
22
|
+
resetSpy() {
|
|
23
23
|
this.pushMarkersCalls = [];
|
|
24
24
|
this.pushSampleCalls = [];
|
|
25
25
|
this.numStopCalls = 0;
|
|
26
26
|
this.numDestroyCalls = 0;
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
exports.default =
|
|
30
|
-
//# sourceMappingURL=
|
|
29
|
+
exports.default = FakeMarkerOutlet;
|
|
30
|
+
//# sourceMappingURL=FakeMarkerOutlet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FakeMarkerOutlet.js","sourceRoot":"","sources":["../../../src/testDoubles/MarkerOutlet/FakeMarkerOutlet.ts"],"names":[],"mappings":";;AAGA,MAAqB,gBAAgB;IAMjC;QACI,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAA;QAC1B,IAAI,CAAC,eAAe,GAAG,EAAE,CAAA;QACzB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAA;QACrB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAA;IAC5B,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAAyB;QAC9C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACvC,CAAC;IAEM,UAAU,CAAC,MAAgB;QAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACrC,CAAC;IAEM,IAAI;QACP,IAAI,CAAC,YAAY,EAAE,CAAA;IACvB,CAAC;IAEM,OAAO;QACV,IAAI,CAAC,eAAe,EAAE,CAAA;IAC1B,CAAC;IAEM,QAAQ;QACX,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAA;QAC1B,IAAI,CAAC,eAAe,GAAG,EAAE,CAAA;QACzB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAA;QACrB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAA;IAC5B,CAAC;CACJ;AAnCD,mCAmCC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { MarkerOutlet } from '../../components/EventMarkerOutlet';
|
|
2
|
+
import { DurationMarker, LslSample } from '../../nodeLsl.types';
|
|
3
|
+
export default class MockMarkerOutlet implements MarkerOutlet {
|
|
3
4
|
private didPushMarkers;
|
|
4
5
|
private pushedMarkers?;
|
|
5
6
|
private didPushSamples;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const test_utils_1 = require("@sprucelabs/test-utils");
|
|
4
|
-
class
|
|
4
|
+
class MockMarkerOutlet {
|
|
5
5
|
constructor() {
|
|
6
6
|
this.didPushMarkers = false;
|
|
7
7
|
this.didPushSamples = false;
|
|
@@ -38,5 +38,5 @@ class MockTimeMarkerOutlet {
|
|
|
38
38
|
test_utils_1.assert.isFalse(this.didPushMarkers, `Expected to NOT have pushed markers but did. Try 'outlet.pushMarkers(...)'`);
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
|
-
exports.default =
|
|
42
|
-
//# sourceMappingURL=
|
|
41
|
+
exports.default = MockMarkerOutlet;
|
|
42
|
+
//# sourceMappingURL=MockMarkerOutlet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MockMarkerOutlet.js","sourceRoot":"","sources":["../../../src/testDoubles/MarkerOutlet/MockMarkerOutlet.ts"],"names":[],"mappings":";;AAAA,uDAA+C;AAI/C,MAAqB,gBAAgB;IAArC;QACY,mBAAc,GAAG,KAAK,CAAA;QAEtB,mBAAc,GAAG,KAAK,CAAA;IAsDlC,CAAC;IAnDU,IAAI,KAAI,CAAC;IACT,OAAO,KAAI,CAAC;IAEZ,UAAU,CAAC,MAAiB;QAC/B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;YAC1B,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;QAC3B,CAAC;QACD,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACpC,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAAyB;QAC9C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;QAC1B,IAAI,CAAC,aAAa,GAAG,OAAO,CAAA;IAChC,CAAC;IAEM,oBAAoB,CAAC,OAAqB;QAC7C,mBAAM,CAAC,MAAM,CACT,IAAI,CAAC,cAAc,EACnB,0EAA0E,CAC7E,CAAA;QAED,IAAI,OAAO,EAAE,CAAC;YACV,mBAAM,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;QACnD,CAAC;IACL,CAAC;IAEM,uBAAuB;QAC1B,mBAAM,CAAC,OAAO,CACV,IAAI,CAAC,cAAc,EACnB,2EAA2E,CAC9E,CAAA;IACL,CAAC;IAEM,oBAAoB,CAAC,OAA0B;QAClD,mBAAM,CAAC,MAAM,CACT,IAAI,CAAC,cAAc,EACnB,2EAA2E,CAC9E,CAAA;QAED,IAAI,OAAO,EAAE,CAAC;YACV,mBAAM,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;QACnD,CAAC;IACL,CAAC;IAEM,uBAAuB;QAC1B,mBAAM,CAAC,OAAO,CACV,IAAI,CAAC,cAAc,EACnB,4EAA4E,CAC/E,CAAA;IACL,CAAC;CACJ;AAzDD,mCAyDC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import EventMarkerOutlet from '../../components/EventMarkerOutlet';
|
|
2
|
+
import { LslOutlet } from '../../components/LslStreamOutlet';
|
|
3
|
+
export default class SpyMarkerOutlet extends EventMarkerOutlet {
|
|
4
|
+
totalWaitTimeMs: number;
|
|
5
|
+
constructor(lslOutlet: LslOutlet);
|
|
6
|
+
wait(durationMs: number): Promise<void>;
|
|
7
|
+
getLslOutlet(): LslOutlet;
|
|
8
|
+
resetTestDouble(): void;
|
|
9
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const EventMarkerOutlet_1 = __importDefault(require("../../components/EventMarkerOutlet"));
|
|
7
|
+
class SpyMarkerOutlet extends EventMarkerOutlet_1.default {
|
|
8
|
+
constructor(lslOutlet) {
|
|
9
|
+
super(lslOutlet);
|
|
10
|
+
this.totalWaitTimeMs = 0;
|
|
11
|
+
}
|
|
12
|
+
async wait(durationMs) {
|
|
13
|
+
this.totalWaitTimeMs += durationMs;
|
|
14
|
+
return Promise.resolve();
|
|
15
|
+
}
|
|
16
|
+
getLslOutlet() {
|
|
17
|
+
return this.lslOutlet;
|
|
18
|
+
}
|
|
19
|
+
resetTestDouble() {
|
|
20
|
+
this.totalWaitTimeMs = 0;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.default = SpyMarkerOutlet;
|
|
24
|
+
//# sourceMappingURL=SpyMarkerOutlet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpyMarkerOutlet.js","sourceRoot":"","sources":["../../../src/testDoubles/MarkerOutlet/SpyMarkerOutlet.ts"],"names":[],"mappings":";;;;;AAAA,2FAAkE;AAGlE,MAAqB,eAAgB,SAAQ,2BAAiB;IAG1D,YAAmB,SAAoB;QACnC,KAAK,CAAC,SAAS,CAAC,CAAA;QAChB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAA;IAC5B,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,UAAkB;QAChC,IAAI,CAAC,eAAe,IAAI,UAAU,CAAA;QAClC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC5B,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,SAAS,CAAA;IACzB,CAAC;IAEM,eAAe;QAClB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAA;IAC5B,CAAC;CACJ;AApBD,kCAoBC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { StreamInfo, StreamInfoOptions } from '
|
|
2
|
-
import { BoundStreamInfo } from '
|
|
1
|
+
import { StreamInfo, StreamInfoOptions } from '../../components/LslStreamInfo';
|
|
2
|
+
import { BoundStreamInfo } from '../../nodeLsl.types';
|
|
3
3
|
export default class FakeStreamInfo implements StreamInfo {
|
|
4
4
|
static callsToConstructor: StreamInfoOptions[];
|
|
5
5
|
static boundStreamInfo: BoundStreamInfo;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FakeStreamInfo.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamInfo/FakeStreamInfo.ts"],"names":[],"mappings":";;AAGA,MAAqB,cAAc;IAI/B,YAAmB,OAA0B;QACzC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACnD,CAAC;IAED,IAAW,eAAe;QACtB,OAAO,cAAc,CAAC,eAAe,CAAA;IACzC,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,cAAc,CAAC,kBAAkB,GAAG,EAAE,CAAA;IAC1C,CAAC;;AAba,iCAAkB,GAAwB,EAAE,CAAA;AAC5C,8BAAe,GAAG,EAAqB,CAAA;kBAFpC,cAAc"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import LslStreamInfo, { StreamInfoOptions } from '../../components/LslStreamInfo';
|
|
2
|
+
export default class SpyStreamInfo extends LslStreamInfo {
|
|
3
|
+
constructor(options: StreamInfoOptions);
|
|
4
|
+
getStreamInfo(): import("../..").BoundStreamInfo;
|
|
5
|
+
getName(): string;
|
|
6
|
+
getType(): string;
|
|
7
|
+
getSourceId(): string;
|
|
8
|
+
getUnits(): string;
|
|
9
|
+
}
|
|
@@ -3,8 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const LslStreamInfo_1 = __importDefault(require("
|
|
7
|
-
class
|
|
6
|
+
const LslStreamInfo_1 = __importDefault(require("../../components/LslStreamInfo"));
|
|
7
|
+
class SpyStreamInfo extends LslStreamInfo_1.default {
|
|
8
8
|
constructor(options) {
|
|
9
9
|
super(options);
|
|
10
10
|
}
|
|
@@ -24,5 +24,5 @@ class SpyLslStreamInfo extends LslStreamInfo_1.default {
|
|
|
24
24
|
return this.units;
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
exports.default =
|
|
28
|
-
//# sourceMappingURL=
|
|
27
|
+
exports.default = SpyStreamInfo;
|
|
28
|
+
//# sourceMappingURL=SpyStreamInfo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpyStreamInfo.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamInfo/SpyStreamInfo.ts"],"names":[],"mappings":";;;;;AAAA,mFAEuC;AAEvC,MAAqB,aAAc,SAAQ,uBAAa;IACpD,YAAmB,OAA0B;QACzC,KAAK,CAAC,OAAO,CAAC,CAAA;IAClB,CAAC;IAEM,aAAa;QAChB,OAAO,IAAI,CAAC,UAAU,CAAA;IAC1B,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,IAAI,CAAA;IACpB,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,IAAI,CAAA;IACpB,CAAC;IAEM,WAAW;QACd,OAAO,IAAI,CAAC,QAAQ,CAAA;IACxB,CAAC;IAEM,QAAQ;QACX,OAAO,IAAI,CAAC,KAAK,CAAA;IACrB,CAAC;CACJ;AAxBD,gCAwBC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { LslOutletOptions } from '../components/
|
|
1
|
+
import { LslOutletOptions } from '../components/LslStreamOutlet';
|
|
2
2
|
export default function generateRandomOutletOptions(): LslOutletOptions;
|
package/package.json
CHANGED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import AbstractSpruceTest, { generateId } from '@sprucelabs/test-utils'
|
|
2
|
+
import EventMarkerOutlet from '../components/EventMarkerOutlet'
|
|
3
|
+
import LiblslAdapter from '../components/LiblslAdapter'
|
|
4
|
+
import LslStreamInfo from '../components/LslStreamInfo'
|
|
5
|
+
import LslStreamInlet from '../components/LslStreamInlet'
|
|
6
|
+
|
|
7
|
+
import LslStreamOutlet from '../components/LslStreamOutlet'
|
|
8
|
+
import FakeLiblsl from '../testDoubles/Liblsl/FakeLiblsl'
|
|
9
|
+
import { SpyLslInlet } from '../testDoubles/LslInlet/SpyLslInlet'
|
|
10
|
+
import FakeLslOutlet from '../testDoubles/LslOutlet/FakeLslOutlet'
|
|
11
|
+
import SpyMarkerOutlet from '../testDoubles/MarkerOutlet/SpyMarkerOutlet'
|
|
12
|
+
import FakeStreamInfo from '../testDoubles/StreamInfo/FakeStreamInfo'
|
|
13
|
+
import SpyStreamInfo from '../testDoubles/StreamInfo/SpyStreamInfo'
|
|
14
|
+
|
|
15
|
+
export default class AbstractLslTest extends AbstractSpruceTest {
|
|
16
|
+
protected static fakeLiblsl: FakeLiblsl
|
|
17
|
+
|
|
18
|
+
protected static async beforeEach() {
|
|
19
|
+
await super.beforeEach()
|
|
20
|
+
|
|
21
|
+
this.setFakeLiblsl()
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
protected static setFakeLiblsl() {
|
|
25
|
+
this.fakeLiblsl = new FakeLiblsl()
|
|
26
|
+
LiblslAdapter.setInstance(this.fakeLiblsl)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
protected static setSpyStreamInfo() {
|
|
30
|
+
LslStreamInfo.Class = SpyStreamInfo
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
protected static setFakeStreamInfo() {
|
|
34
|
+
LslStreamInfo.Class = FakeStreamInfo
|
|
35
|
+
FakeStreamInfo.resetTestDouble()
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
protected static setSpyLslInlet() {
|
|
39
|
+
LslStreamInlet.Class = SpyLslInlet
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
protected static setFakeLslOutlet() {
|
|
43
|
+
LslStreamOutlet.Class = FakeLslOutlet
|
|
44
|
+
FakeLslOutlet.resetTestDouble()
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
protected static setSpyMarkerOutlet() {
|
|
48
|
+
EventMarkerOutlet.Class = SpyMarkerOutlet
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
protected static readonly name_ = generateId()
|
|
52
|
+
protected static readonly type = generateId()
|
|
53
|
+
protected static readonly sourceId = generateId()
|
|
54
|
+
protected static readonly units = generateId()
|
|
55
|
+
protected static readonly channelNames = [generateId(), generateId()]
|
|
56
|
+
protected static readonly chunkSize = Math.floor(Math.random() * 100)
|
|
57
|
+
protected static readonly maxBuffered = Math.floor(Math.random() * 100)
|
|
58
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { randomInt } from 'crypto'
|
|
2
|
+
import { assert, generateId, test } from '@sprucelabs/test-utils'
|
|
3
|
+
import EventMarkerOutlet from '../components/EventMarkerOutlet'
|
|
4
|
+
import { LslOutletOptions } from '../components/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'
|
|
9
|
+
|
|
10
|
+
export default class EventMarkerOutletTest extends AbstractLslTest {
|
|
11
|
+
private static instance: SpyMarkerOutlet
|
|
12
|
+
|
|
13
|
+
protected static async beforeEach() {
|
|
14
|
+
await super.beforeEach()
|
|
15
|
+
|
|
16
|
+
this.setFakeLiblsl()
|
|
17
|
+
this.setFakeLslOutlet()
|
|
18
|
+
this.setSpyMarkerOutlet()
|
|
19
|
+
|
|
20
|
+
this.instance = await this.EventMarkerOutlet()
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
@test()
|
|
24
|
+
protected static async loadsWithEventMarkerSpecificOptions() {
|
|
25
|
+
assert.isEqualDeep(FakeLslOutlet.callsToConstructor[0].options, {
|
|
26
|
+
name: 'Event markers',
|
|
27
|
+
type: 'Markers',
|
|
28
|
+
channelNames: ['Markers'],
|
|
29
|
+
sampleRate: 0,
|
|
30
|
+
channelFormat: 'string',
|
|
31
|
+
sourceId: 'event-markers',
|
|
32
|
+
manufacturer: 'N/A',
|
|
33
|
+
unit: 'N/A',
|
|
34
|
+
chunkSize: 0,
|
|
35
|
+
maxBuffered: 0,
|
|
36
|
+
})
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@test()
|
|
40
|
+
protected static async canOverrideDefaultOptions() {
|
|
41
|
+
const options = generateRandomOutletOptions()
|
|
42
|
+
await this.EventMarkerOutlet(options)
|
|
43
|
+
|
|
44
|
+
assert.isEqualDeep(FakeLslOutlet.callsToConstructor[1].options, options)
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@test()
|
|
48
|
+
protected static async pushingSingleMarkerIncrementsHitCountAndWaitTime() {
|
|
49
|
+
const markers = [this.generateDurationMarker()]
|
|
50
|
+
await this.instance.pushMarkers(markers)
|
|
51
|
+
|
|
52
|
+
const marker = markers[0]
|
|
53
|
+
|
|
54
|
+
assert.isEqual(
|
|
55
|
+
FakeLslOutlet.callsToPushSample[0][0],
|
|
56
|
+
marker.name,
|
|
57
|
+
'Pushed the wrong marker!'
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
assert.isEqual(this.instance.totalWaitTimeMs, marker.durationMs)
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
@test()
|
|
64
|
+
protected static async pushingTwoMarkersIncrementsHitCountAndWaitTimeTwice() {
|
|
65
|
+
const markers = await this.pushTotalMarkers(2)
|
|
66
|
+
|
|
67
|
+
assert.isEqual(FakeLslOutlet.callsToPushSample.length, 2)
|
|
68
|
+
|
|
69
|
+
assert.isEqual(
|
|
70
|
+
this.instance.totalWaitTimeMs,
|
|
71
|
+
markers[0].durationMs + markers[1].durationMs
|
|
72
|
+
)
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
@test('can stop on the first marker', 1)
|
|
76
|
+
@test('can stop on the second marker', 2)
|
|
77
|
+
@test('can stop on the third marker', 3)
|
|
78
|
+
protected static async canStopEventMarkersMidPush(bailIdx: number) {
|
|
79
|
+
let hitCount = 0
|
|
80
|
+
|
|
81
|
+
const outlet = this.instance.getLslOutlet()
|
|
82
|
+
|
|
83
|
+
outlet.pushSample = () => {
|
|
84
|
+
hitCount += 1
|
|
85
|
+
if (hitCount === bailIdx) {
|
|
86
|
+
this.instance.stop()
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
await this.pushTotalMarkers(10)
|
|
91
|
+
|
|
92
|
+
assert.isEqual(hitCount, bailIdx)
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
@test()
|
|
96
|
+
protected static async canStartAgainAfterStopping() {
|
|
97
|
+
this.instance.stop()
|
|
98
|
+
|
|
99
|
+
let hitCount = 0
|
|
100
|
+
|
|
101
|
+
const outlet = this.instance.getLslOutlet()
|
|
102
|
+
|
|
103
|
+
outlet.pushSample = () => {
|
|
104
|
+
hitCount++
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
await this.pushTotalMarkers(10)
|
|
108
|
+
|
|
109
|
+
assert.isEqual(hitCount, 10)
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
@test()
|
|
113
|
+
protected static async doesNotWaitIfStopped() {
|
|
114
|
+
await this.setupOutlet()
|
|
115
|
+
|
|
116
|
+
const startMs = Date.now()
|
|
117
|
+
const promise = this.pushTotalMarkers(2, 1000)
|
|
118
|
+
this.instance.stop()
|
|
119
|
+
await promise
|
|
120
|
+
const endMs = Date.now()
|
|
121
|
+
|
|
122
|
+
assert.isBelow(endMs - startMs, 10)
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
@test()
|
|
126
|
+
protected static async clearsTheTimeoutOnStop() {
|
|
127
|
+
void this.pushTotalMarkers(2, 100)
|
|
128
|
+
this.instance.stop()
|
|
129
|
+
|
|
130
|
+
this.lslOutlet.pushSample = () =>
|
|
131
|
+
assert.fail('Should not have been called')
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
private static get lslOutlet() {
|
|
135
|
+
return this.instance.getLslOutlet()
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
private static async setupOutlet() {
|
|
139
|
+
EventMarkerOutlet.Class = EventMarkerOutlet as any
|
|
140
|
+
this.instance = await this.EventMarkerOutlet()
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
private static async pushTotalMarkers(total: number, durationMs?: number) {
|
|
144
|
+
const markers = new Array(total)
|
|
145
|
+
.fill(null)
|
|
146
|
+
.map(() => this.generateDurationMarker(durationMs))
|
|
147
|
+
|
|
148
|
+
await this.instance.pushMarkers(markers)
|
|
149
|
+
|
|
150
|
+
return markers
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
private static generateDurationMarker(durationMs?: number) {
|
|
154
|
+
return {
|
|
155
|
+
name: generateId(),
|
|
156
|
+
durationMs: durationMs ?? randomInt(100, 1000),
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
private static async EventMarkerOutlet(
|
|
161
|
+
options?: Partial<LslOutletOptions>
|
|
162
|
+
) {
|
|
163
|
+
return (await EventMarkerOutlet.Create(options)) as SpyMarkerOutlet
|
|
164
|
+
}
|
|
165
|
+
}
|