@neurodevs/node-lsl 2.0.2 → 3.2.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/README.md +1 -1
- package/build/Liblsl.d.ts +33 -25
- package/build/Liblsl.js +29 -30
- package/build/Liblsl.js.map +1 -1
- package/build/LslOutlet.d.ts +8 -7
- package/build/LslOutlet.js +28 -21
- package/build/LslOutlet.js.map +1 -1
- package/build/TimeMarkerOutlet.d.ts +4 -0
- package/build/TimeMarkerOutlet.js +26 -0
- package/build/TimeMarkerOutlet.js.map +1 -0
- package/build/__tests__/behavioral/LslOutlet.test.d.ts +10 -12
- package/build/__tests__/behavioral/LslOutlet.test.js +47 -98
- package/build/__tests__/behavioral/LslOutlet.test.js.map +1 -1
- package/build/__tests__/behavioral/TimeMarkerOutlet.test.d.ts +8 -0
- package/build/__tests__/behavioral/TimeMarkerOutlet.test.js +85 -0
- package/build/__tests__/behavioral/TimeMarkerOutlet.test.js.map +1 -0
- package/build/__tests__/implementation/Liblsl.test.d.ts +9 -9
- package/build/__tests__/implementation/Liblsl.test.js +76 -66
- package/build/__tests__/implementation/Liblsl.test.js.map +1 -1
- package/build/__tests__/support/SpyLiblsl.d.ts +14 -0
- package/build/__tests__/support/SpyLiblsl.js +27 -0
- package/build/__tests__/support/SpyLiblsl.js.map +1 -0
- package/build/__tests__/support/consts.d.ts +2 -0
- package/build/__tests__/support/consts.js +14 -0
- package/build/__tests__/support/consts.js.map +1 -0
- package/build/__tests__/support/generateRandomOutletOptions.d.ts +2 -0
- package/build/__tests__/support/generateRandomOutletOptions.js +21 -0
- package/build/__tests__/support/generateRandomOutletOptions.js.map +1 -0
- package/build/errors/SpruceError.js.map +1 -1
- package/build/index.d.ts +1 -0
- package/build/index.js +3 -1
- package/build/index.js.map +1 -1
- package/package.json +1 -1
- package/src/Liblsl.ts +76 -73
- package/src/LslOutlet.ts +39 -37
- package/src/TimeMarkerOutlet.ts +19 -0
- package/src/__tests__/behavioral/LslOutlet.test.ts +50 -119
- package/src/__tests__/behavioral/TimeMarkerOutlet.test.ts +54 -0
- package/src/__tests__/implementation/Liblsl.test.ts +96 -84
- package/src/__tests__/support/SpyLiblsl.ts +41 -0
- package/src/__tests__/support/consts.ts +12 -0
- package/src/__tests__/support/generateRandomOutletOptions.ts +19 -0
- package/src/index.ts +2 -0
|
@@ -43,49 +43,30 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
43
43
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
44
44
|
};
|
|
45
45
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
-
exports.CHANNEL_FORMATS = void 0;
|
|
47
46
|
const crypto_1 = require("crypto");
|
|
48
47
|
const test_utils_1 = __importStar(require("@sprucelabs/test-utils"));
|
|
49
48
|
const Liblsl_1 = __importDefault(require("../../Liblsl"));
|
|
50
49
|
const LslOutlet_1 = __importDefault(require("../../LslOutlet"));
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
'double64',
|
|
55
|
-
'string',
|
|
56
|
-
'int32',
|
|
57
|
-
'int16',
|
|
58
|
-
'int8',
|
|
59
|
-
'int64',
|
|
60
|
-
];
|
|
50
|
+
const consts_1 = require("../support/consts");
|
|
51
|
+
const generateRandomOutletOptions_1 = __importDefault(require("../support/generateRandomOutletOptions"));
|
|
52
|
+
const SpyLiblsl_1 = require("../support/SpyLiblsl");
|
|
61
53
|
class LslOutletTest extends test_utils_1.default {
|
|
62
54
|
static async beforeEach() {
|
|
63
55
|
await super.beforeEach();
|
|
64
56
|
delete LslOutlet_1.default.Class;
|
|
65
|
-
this.
|
|
66
|
-
this.randomOutletOptions =
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
channelLabels: new Array((0, crypto_1.randomInt)(1, 10)).fill((0, test_utils_1.generateId)()),
|
|
70
|
-
sampleRate: Math.random() * 10,
|
|
71
|
-
channelFormat: exports.CHANNEL_FORMATS[this.channelIdx],
|
|
72
|
-
sourceId: (0, test_utils_1.generateId)(),
|
|
73
|
-
manufacturer: (0, test_utils_1.generateId)(),
|
|
74
|
-
unit: (0, test_utils_1.generateId)(),
|
|
75
|
-
chunkSize: (0, crypto_1.randomInt)(0, 10),
|
|
76
|
-
maxBuffered: (0, crypto_1.randomInt)(0, 10),
|
|
77
|
-
};
|
|
78
|
-
this.spyLsl = new SpyLiblsl();
|
|
79
|
-
Liblsl_1.default.setInstance(this.spyLsl);
|
|
57
|
+
this.channelFormatIdx = (0, crypto_1.randomInt)(8);
|
|
58
|
+
this.randomOutletOptions = (0, generateRandomOutletOptions_1.default)(this.channelFormatIdx);
|
|
59
|
+
this.spyLiblsl = new SpyLiblsl_1.SpyLiblsl();
|
|
60
|
+
Liblsl_1.default.setInstance(this.spyLiblsl);
|
|
80
61
|
}
|
|
81
|
-
static async
|
|
62
|
+
static async throwsWhenMissingRequiredParams() {
|
|
82
63
|
//@ts-ignore
|
|
83
64
|
const err = test_utils_1.assert.doesThrow(() => new LslOutlet_1.default());
|
|
84
65
|
test_utils_1.errorAssert.assertError(err, 'MISSING_PARAMETERS', {
|
|
85
66
|
parameters: [
|
|
86
67
|
'name',
|
|
87
68
|
'type',
|
|
88
|
-
'
|
|
69
|
+
'channelNames',
|
|
89
70
|
'sampleRate',
|
|
90
71
|
'channelFormat',
|
|
91
72
|
'sourceId',
|
|
@@ -96,14 +77,11 @@ class LslOutletTest extends test_utils_1.default {
|
|
|
96
77
|
],
|
|
97
78
|
});
|
|
98
79
|
}
|
|
99
|
-
static async
|
|
100
|
-
this.
|
|
101
|
-
}
|
|
102
|
-
static async throwsWithInvalidChannelCount() {
|
|
103
|
-
this.assertThrowsInvalidChannelLabels(0);
|
|
80
|
+
static async throwsWithInvalidChannelNames() {
|
|
81
|
+
this.assertThrowsInvalidChannelNames(0);
|
|
104
82
|
}
|
|
105
83
|
static async throwsWithInvalidSampleRate() {
|
|
106
|
-
this.
|
|
84
|
+
this.Outlet({ sampleRate: 0 });
|
|
107
85
|
this.assertThrowsInvalidSampleRate(-1);
|
|
108
86
|
this.assertThrowsInvalidSampleRate(-1.5);
|
|
109
87
|
}
|
|
@@ -113,13 +91,7 @@ class LslOutletTest extends test_utils_1.default {
|
|
|
113
91
|
'channelFormat',
|
|
114
92
|
]);
|
|
115
93
|
}
|
|
116
|
-
static async
|
|
117
|
-
const valid = exports.CHANNEL_FORMATS;
|
|
118
|
-
for (const format of valid) {
|
|
119
|
-
this.Outlet({ channelFormat: format });
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
static async throwWithInvalidChunkSize() {
|
|
94
|
+
static async throwsWithInvalidChunkSize() {
|
|
123
95
|
this.Outlet({ chunkSize: 0 });
|
|
124
96
|
this.assertThrowsInvalidChunkSize(-1);
|
|
125
97
|
this.assertThrowsInvalidChunkSize(-1.5);
|
|
@@ -131,28 +103,34 @@ class LslOutletTest extends test_utils_1.default {
|
|
|
131
103
|
this.assertThrowsInvalidMaxBuffered(-1.5);
|
|
132
104
|
this.assertThrowsInvalidMaxBuffered(1.5);
|
|
133
105
|
}
|
|
134
|
-
static async
|
|
106
|
+
static async supportsAllKnownChannelFormats() {
|
|
107
|
+
for (const format of consts_1.TEST_CHANNEL_FORMATS) {
|
|
108
|
+
this.Outlet({ channelFormat: format });
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
static async canPushSampleToLsl(sample) {
|
|
112
|
+
var _a, _b;
|
|
135
113
|
this.pushSample(sample);
|
|
136
|
-
test_utils_1.assert.isEqual(this.
|
|
137
|
-
test_utils_1.assert.isEqualDeep(this.
|
|
138
|
-
test_utils_1.assert.isEqualDeep(this.
|
|
139
|
-
info: this.
|
|
114
|
+
test_utils_1.assert.isEqual((_a = this.spyLiblsl.lastPushSampleOptions) === null || _a === void 0 ? void 0 : _a.outlet, this.spyLiblsl.outlet);
|
|
115
|
+
test_utils_1.assert.isEqualDeep((_b = this.spyLiblsl.lastPushSampleOptions) === null || _b === void 0 ? void 0 : _b.sample, sample);
|
|
116
|
+
test_utils_1.assert.isEqualDeep(this.spyLiblsl.lastCreateOutletOptions, {
|
|
117
|
+
info: this.spyLiblsl.streamInfo,
|
|
140
118
|
chunkSize: this.randomOutletOptions.chunkSize,
|
|
141
119
|
maxBuffered: this.randomOutletOptions.maxBuffered,
|
|
142
120
|
});
|
|
143
121
|
}
|
|
144
|
-
static async
|
|
122
|
+
static async constructionCreatesStreamInfo() {
|
|
145
123
|
this.Outlet();
|
|
146
124
|
const options = __rest(this.randomOutletOptions, []);
|
|
147
|
-
options.channelCount = options.
|
|
125
|
+
options.channelCount = options.channelNames.length;
|
|
148
126
|
delete options.manufacturer;
|
|
149
127
|
delete options.unit;
|
|
150
128
|
delete options.chunkSize;
|
|
151
129
|
delete options.maxBuffered;
|
|
152
|
-
delete options.
|
|
153
|
-
test_utils_1.assert.isEqualDeep(this.
|
|
130
|
+
delete options.channelNames;
|
|
131
|
+
test_utils_1.assert.isEqualDeep(this.spyLiblsl.lastCreateStreamInfoOptions, Object.assign(Object.assign({}, options), { channelFormat: this.channelFormatIdx }));
|
|
154
132
|
}
|
|
155
|
-
static async
|
|
133
|
+
static async canOverrideClassInstantiatedInFactory() {
|
|
156
134
|
LslOutlet_1.default.Class = CheckingOutlet;
|
|
157
135
|
const instance = this.Outlet();
|
|
158
136
|
test_utils_1.assert.isInstanceOf(instance, CheckingOutlet);
|
|
@@ -160,9 +138,9 @@ class LslOutletTest extends test_utils_1.default {
|
|
|
160
138
|
static async appendsChannelsBasedOnCount(labels) {
|
|
161
139
|
const type = (0, test_utils_1.generateId)();
|
|
162
140
|
const unit = (0, test_utils_1.generateId)();
|
|
163
|
-
this.Outlet({
|
|
164
|
-
test_utils_1.assert.isEqualDeep(this.
|
|
165
|
-
info: this.
|
|
141
|
+
this.Outlet({ channelNames: labels, type, unit });
|
|
142
|
+
test_utils_1.assert.isEqualDeep(this.spyLiblsl.lastAppendChannelsToStreamInfoOptions, {
|
|
143
|
+
info: this.spyLiblsl.streamInfo,
|
|
166
144
|
channels: labels.map((label) => ({
|
|
167
145
|
label,
|
|
168
146
|
type,
|
|
@@ -175,7 +153,7 @@ class LslOutletTest extends test_utils_1.default {
|
|
|
175
153
|
outlet.pushSample([1]);
|
|
176
154
|
outlet.pushSample([2]);
|
|
177
155
|
outlet.pushSample([3]);
|
|
178
|
-
test_utils_1.assert.isEqual(this.
|
|
156
|
+
test_utils_1.assert.isEqual(this.spyLiblsl.createStreamInfoHitCount, 1);
|
|
179
157
|
}
|
|
180
158
|
static pushSample(sample) {
|
|
181
159
|
const outlet = this.Outlet();
|
|
@@ -190,8 +168,8 @@ class LslOutletTest extends test_utils_1.default {
|
|
|
190
168
|
static assertThrowsInvalidSampleRate(sampleRate) {
|
|
191
169
|
this.assertDoesThrowInvalidParameters({ sampleRate }, ['sampleRate']);
|
|
192
170
|
}
|
|
193
|
-
static
|
|
194
|
-
this.assertDoesThrowInvalidParameters({
|
|
171
|
+
static assertThrowsInvalidChannelNames(count) {
|
|
172
|
+
this.assertDoesThrowInvalidParameters({ channelNames: new Array(count).fill((0, test_utils_1.generateId)()) }, ['channelNames']);
|
|
195
173
|
}
|
|
196
174
|
static assertDoesThrowInvalidParameters(options, parameters) {
|
|
197
175
|
const err = test_utils_1.assert.doesThrow(() => this.Outlet(options));
|
|
@@ -206,13 +184,10 @@ class LslOutletTest extends test_utils_1.default {
|
|
|
206
184
|
exports.default = LslOutletTest;
|
|
207
185
|
__decorate([
|
|
208
186
|
(0, test_utils_1.test)()
|
|
209
|
-
], LslOutletTest, "
|
|
210
|
-
__decorate([
|
|
211
|
-
(0, test_utils_1.test)()
|
|
212
|
-
], LslOutletTest, "canCreateWithRequiredParams", null);
|
|
187
|
+
], LslOutletTest, "throwsWhenMissingRequiredParams", null);
|
|
213
188
|
__decorate([
|
|
214
189
|
(0, test_utils_1.test)()
|
|
215
|
-
], LslOutletTest, "
|
|
190
|
+
], LslOutletTest, "throwsWithInvalidChannelNames", null);
|
|
216
191
|
__decorate([
|
|
217
192
|
(0, test_utils_1.test)()
|
|
218
193
|
], LslOutletTest, "throwsWithInvalidSampleRate", null);
|
|
@@ -221,56 +196,30 @@ __decorate([
|
|
|
221
196
|
], LslOutletTest, "throwsWithInvalidChannelFormat", null);
|
|
222
197
|
__decorate([
|
|
223
198
|
(0, test_utils_1.test)()
|
|
224
|
-
], LslOutletTest, "
|
|
199
|
+
], LslOutletTest, "throwsWithInvalidChunkSize", null);
|
|
225
200
|
__decorate([
|
|
226
201
|
(0, test_utils_1.test)()
|
|
227
|
-
], LslOutletTest, "
|
|
202
|
+
], LslOutletTest, "throwsWithInvalidMaxBuffered", null);
|
|
228
203
|
__decorate([
|
|
229
204
|
(0, test_utils_1.test)()
|
|
230
|
-
], LslOutletTest, "
|
|
205
|
+
], LslOutletTest, "supportsAllKnownChannelFormats", null);
|
|
231
206
|
__decorate([
|
|
232
|
-
(0, test_utils_1.test)('pushing sample sends to
|
|
233
|
-
(0, test_utils_1.test)('pushing sample sends to
|
|
234
|
-
], LslOutletTest, "
|
|
207
|
+
(0, test_utils_1.test)('pushing [1, 2] sample sends to LSL', [1, 2]),
|
|
208
|
+
(0, test_utils_1.test)('pushing [1] sample sends to LSL', [1])
|
|
209
|
+
], LslOutletTest, "canPushSampleToLsl", null);
|
|
235
210
|
__decorate([
|
|
236
211
|
(0, test_utils_1.test)()
|
|
237
|
-
], LslOutletTest, "
|
|
212
|
+
], LslOutletTest, "constructionCreatesStreamInfo", null);
|
|
238
213
|
__decorate([
|
|
239
214
|
(0, test_utils_1.test)()
|
|
240
|
-
], LslOutletTest, "
|
|
215
|
+
], LslOutletTest, "canOverrideClassInstantiatedInFactory", null);
|
|
241
216
|
__decorate([
|
|
242
|
-
(0, test_utils_1.test)('can add one label', [(0, test_utils_1.generateId)()]),
|
|
243
|
-
(0, test_utils_1.test)('can add two labels', [(0, test_utils_1.generateId)(), (0, test_utils_1.generateId)()])
|
|
217
|
+
(0, test_utils_1.test)('can add one label to channels', [(0, test_utils_1.generateId)()]),
|
|
218
|
+
(0, test_utils_1.test)('can add two labels to channels', [(0, test_utils_1.generateId)(), (0, test_utils_1.generateId)()])
|
|
244
219
|
], LslOutletTest, "appendsChannelsBasedOnCount", null);
|
|
245
220
|
__decorate([
|
|
246
221
|
(0, test_utils_1.test)()
|
|
247
222
|
], LslOutletTest, "pushSampleShouldNotCreateMultipleOutlets", null);
|
|
248
|
-
class SpyLiblsl {
|
|
249
|
-
constructor() {
|
|
250
|
-
this.outlet = {};
|
|
251
|
-
this.streamInfo = {};
|
|
252
|
-
this.createStreamInfoHitCount = 0;
|
|
253
|
-
}
|
|
254
|
-
createStreamInfo(options) {
|
|
255
|
-
this.createStreamInfoHitCount++;
|
|
256
|
-
this.lastStreamInfoOptions = options;
|
|
257
|
-
return this.streamInfo;
|
|
258
|
-
}
|
|
259
|
-
appendChannelsToStreamInfo(info, channels) {
|
|
260
|
-
this.lastAppendChannelsToStreamInfo = {
|
|
261
|
-
info,
|
|
262
|
-
channels,
|
|
263
|
-
};
|
|
264
|
-
}
|
|
265
|
-
createOutlet(options) {
|
|
266
|
-
this.lastOutletOptions = options;
|
|
267
|
-
return this.outlet;
|
|
268
|
-
}
|
|
269
|
-
pushSample(outlet, sample) {
|
|
270
|
-
this.lastPushedOutlet = outlet;
|
|
271
|
-
this.lastPushedSample = sample;
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
223
|
class CheckingOutlet extends LslOutlet_1.default {
|
|
275
224
|
constructor(options) {
|
|
276
225
|
super(options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LslOutlet.test.js","sourceRoot":"","sources":["../../../src/__tests__/behavioral/LslOutlet.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LslOutlet.test.js","sourceRoot":"","sources":["../../../src/__tests__/behavioral/LslOutlet.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import AbstractSpruceTest from '@sprucelabs/test-utils';
|
|
2
|
+
export default class TimeMarkerOutletTest extends AbstractSpruceTest {
|
|
3
|
+
private static spyLiblsl;
|
|
4
|
+
protected static beforeEach(): Promise<void>;
|
|
5
|
+
protected static loadsWithTimeMarkerSpecificOptions(): Promise<void>;
|
|
6
|
+
protected static canOverrideDefaultOptions(): Promise<void>;
|
|
7
|
+
private static Outlet;
|
|
8
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
25
|
+
if (mod && mod.__esModule) return mod;
|
|
26
|
+
var result = {};
|
|
27
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
28
|
+
__setModuleDefault(result, mod);
|
|
29
|
+
return result;
|
|
30
|
+
};
|
|
31
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
32
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
33
|
+
};
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
const crypto_1 = require("crypto");
|
|
36
|
+
const test_utils_1 = __importStar(require("@sprucelabs/test-utils"));
|
|
37
|
+
const Liblsl_1 = __importDefault(require("../../Liblsl"));
|
|
38
|
+
const TimeMarkerOutlet_1 = __importDefault(require("../../TimeMarkerOutlet"));
|
|
39
|
+
const generateRandomOutletOptions_1 = __importDefault(require("../support/generateRandomOutletOptions"));
|
|
40
|
+
const SpyLiblsl_1 = require("../support/SpyLiblsl");
|
|
41
|
+
class TimeMarkerOutletTest extends test_utils_1.default {
|
|
42
|
+
static async beforeEach() {
|
|
43
|
+
await super.beforeEach();
|
|
44
|
+
TimeMarkerOutlet_1.default.Class = SpyTimeMarkerOutlet;
|
|
45
|
+
this.spyLiblsl = new SpyLiblsl_1.SpyLiblsl();
|
|
46
|
+
Liblsl_1.default.setInstance(this.spyLiblsl);
|
|
47
|
+
}
|
|
48
|
+
static async loadsWithTimeMarkerSpecificOptions() {
|
|
49
|
+
const outlet = this.Outlet();
|
|
50
|
+
test_utils_1.assert.isEqualDeep(outlet.options, {
|
|
51
|
+
name: 'Time markers',
|
|
52
|
+
type: 'Markers',
|
|
53
|
+
channelNames: ['Markers'],
|
|
54
|
+
sampleRate: 0,
|
|
55
|
+
channelFormat: 'string',
|
|
56
|
+
sourceId: 'time-markers',
|
|
57
|
+
manufacturer: 'N/A',
|
|
58
|
+
unit: 'N/A',
|
|
59
|
+
chunkSize: 0,
|
|
60
|
+
maxBuffered: 0,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
static async canOverrideDefaultOptions() {
|
|
64
|
+
const options = (0, generateRandomOutletOptions_1.default)((0, crypto_1.randomInt)(8));
|
|
65
|
+
const outlet = this.Outlet(options);
|
|
66
|
+
test_utils_1.assert.isEqualDeep(outlet.options, options);
|
|
67
|
+
}
|
|
68
|
+
static Outlet(options) {
|
|
69
|
+
return TimeMarkerOutlet_1.default.Outlet(options);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.default = TimeMarkerOutletTest;
|
|
73
|
+
__decorate([
|
|
74
|
+
(0, test_utils_1.test)()
|
|
75
|
+
], TimeMarkerOutletTest, "loadsWithTimeMarkerSpecificOptions", null);
|
|
76
|
+
__decorate([
|
|
77
|
+
(0, test_utils_1.test)()
|
|
78
|
+
], TimeMarkerOutletTest, "canOverrideDefaultOptions", null);
|
|
79
|
+
class SpyTimeMarkerOutlet extends TimeMarkerOutlet_1.default {
|
|
80
|
+
constructor(options) {
|
|
81
|
+
super(options);
|
|
82
|
+
this.options = options;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=TimeMarkerOutlet.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimeMarkerOutlet.test.js","sourceRoot":"","sources":["../../../src/__tests__/behavioral/TimeMarkerOutlet.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAkC;AAClC,qEAAyE;AACzE,0DAAqC;AAErC,8EAAqD;AACrD,yGAAgF;AAChF,oDAAgD;AAEhD,MAAqB,oBAAqB,SAAQ,oBAAkB;IAGzD,MAAM,CAAC,KAAK,CAAC,UAAU;QAChC,MAAM,KAAK,CAAC,UAAU,EAAE,CAAA;QACxB,0BAAgB,CAAC,KAAK,GAAG,mBAAmB,CAAA;QAC5C,IAAI,CAAC,SAAS,GAAG,IAAI,qBAAS,EAAE,CAAA;QAChC,gBAAU,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACvC,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,kCAAkC;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;QAC5B,mBAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE;YAClC,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,SAAS;YACf,YAAY,EAAE,CAAC,SAAS,CAAC;YACzB,UAAU,EAAE,CAAC;YACb,aAAa,EAAE,QAAQ;YACvB,QAAQ,EAAE,cAAc;YACxB,YAAY,EAAE,KAAK;YACnB,IAAI,EAAE,KAAK;YACX,SAAS,EAAE,CAAC;YACZ,WAAW,EAAE,CAAC;SACd,CAAC,CAAA;IACH,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,yBAAyB;QAC/C,MAAM,OAAO,GAAG,IAAA,qCAA2B,EAAC,IAAA,kBAAS,EAAC,CAAC,CAAC,CAAC,CAAA;QACzD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACnC,mBAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC5C,CAAC;IAEO,MAAM,CAAC,MAAM,CAAC,OAAmC;QACxD,OAAO,0BAAgB,CAAC,MAAM,CAAC,OAAO,CAAwB,CAAA;IAC/D,CAAC;CACD;AArCD,uCAqCC;AA1BuB;IADtB,IAAA,iBAAI,GAAE;oEAeN;AAGsB;IADtB,IAAA,iBAAI,GAAE;2DAKN;AAOF,MAAM,mBAAoB,SAAQ,0BAAgB;IAEjD,YAAmB,OAAyB;QAC3C,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,CAAC;CACD"}
|
|
@@ -19,22 +19,22 @@ export default class LiblslTest extends AbstractSpruceTest {
|
|
|
19
19
|
private static fakeChildNamedChannel;
|
|
20
20
|
private static appendChildHitCount;
|
|
21
21
|
protected static beforeEach(): Promise<void>;
|
|
22
|
-
protected static
|
|
23
|
-
protected static
|
|
22
|
+
protected static throwsWithMissingEnv(): Promise<void>;
|
|
23
|
+
protected static throwsWhenBindingsFailToLoad(): Promise<void>;
|
|
24
|
+
protected static throwsWhenCreateStreamInfoIsMissingRequiredParams(): void;
|
|
25
|
+
protected static throwsWhenAppendChannelsIsMissingRequiredParams(): Promise<void>;
|
|
26
|
+
protected static throwsWhenCreateOutletIsMissingRequiredParams(): Promise<void>;
|
|
27
|
+
protected static throwsWhenPushSampleIsMissingRequiredParams(): Promise<void>;
|
|
24
28
|
protected static worksAsASingleton(): Promise<void>;
|
|
25
29
|
protected static singletonIsTheSame(): Promise<void>;
|
|
26
30
|
protected static canSetInstance(): void;
|
|
27
31
|
protected static createsExpectedBindingsToLiblsl(): Promise<void>;
|
|
28
|
-
protected static
|
|
29
|
-
protected static canGetStreamInfoWithRequiredParams(): Promise<void>;
|
|
30
|
-
protected static createOutletThrowsWhenMissingRequiredParams(): Promise<void>;
|
|
32
|
+
protected static canCreateStreamInfoWithRequiredParams(): Promise<void>;
|
|
31
33
|
protected static canCreateOutletWithRequiredParams(): Promise<void>;
|
|
32
|
-
protected static
|
|
33
|
-
protected static pushSampleCallsBindings(): Promise<void>;
|
|
34
|
-
protected static appendChannelsThrowsWithMissingParams(): Promise<void>;
|
|
34
|
+
protected static canPushSampleWithRequiredParams(): Promise<void>;
|
|
35
35
|
protected static addingSingleChannelGetsDescription(): Promise<void>;
|
|
36
36
|
protected static addingMultpleChannelsAddsChildrenToChannelsChild(): Promise<void>;
|
|
37
|
-
private static generateRandomChannelValues;
|
|
38
37
|
private static createRandomStreamInfo;
|
|
38
|
+
private static generateRandomChannelValues;
|
|
39
39
|
private static generateRandomCreateStreamInfoOptions;
|
|
40
40
|
}
|