@neurodevs/node-lsl 17.1.1 → 18.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.
Files changed (178) hide show
  1. package/.claude/settings.local.json +10 -0
  2. package/.regressionproof.json +7 -0
  3. package/.vscode/launch.json +3 -2
  4. package/README.md +9 -35
  5. package/build/.spruce/settings.json +5 -1
  6. package/build/__tests__/AbstractPackageTest.d.ts +4 -4
  7. package/build/__tests__/AbstractPackageTest.js +9 -11
  8. package/build/__tests__/AbstractPackageTest.js.map +1 -1
  9. package/build/__tests__/impl/LslBackpressureMonitor.test.d.ts +7 -0
  10. package/build/__tests__/impl/LslBackpressureMonitor.test.js +26 -0
  11. package/build/__tests__/impl/LslBackpressureMonitor.test.js.map +1 -0
  12. package/build/__tests__/impl/LslEventMarkerEmitter.test.d.ts +34 -0
  13. package/build/__tests__/impl/LslEventMarkerEmitter.test.js +243 -0
  14. package/build/__tests__/impl/LslEventMarkerEmitter.test.js.map +1 -0
  15. package/build/__tests__/impl/LslStreamInfo.test.d.ts +0 -3
  16. package/build/__tests__/impl/LslStreamInfo.test.js +2 -27
  17. package/build/__tests__/impl/LslStreamInfo.test.js.map +1 -1
  18. package/build/__tests__/impl/LslStreamInlet.test.d.ts +20 -8
  19. package/build/__tests__/impl/LslStreamInlet.test.js +224 -69
  20. package/build/__tests__/impl/LslStreamInlet.test.js.map +1 -1
  21. package/build/__tests__/impl/LslStreamOutlet.test.d.ts +3 -7
  22. package/build/__tests__/impl/LslStreamOutlet.test.js +36 -46
  23. package/build/__tests__/impl/LslStreamOutlet.test.js.map +1 -1
  24. package/build/__tests__/impl/LslWebSocketBridge.test.js +16 -17
  25. package/build/__tests__/impl/LslWebSocketBridge.test.js.map +1 -1
  26. package/build/assertions.d.ts +1 -1
  27. package/build/assertions.js.map +1 -1
  28. package/build/impl/LslBackpressureMonitor.d.ts +8 -0
  29. package/build/impl/LslBackpressureMonitor.js +8 -0
  30. package/build/impl/LslBackpressureMonitor.js.map +1 -0
  31. package/build/impl/LslEventMarkerEmitter.d.ts +35 -0
  32. package/build/impl/LslEventMarkerEmitter.js +86 -0
  33. package/build/impl/LslEventMarkerEmitter.js.map +1 -0
  34. package/build/impl/LslStreamInfo.d.ts +4 -8
  35. package/build/impl/LslStreamInfo.js +8 -21
  36. package/build/impl/LslStreamInfo.js.map +1 -1
  37. package/build/impl/LslStreamInlet.d.ts +31 -50
  38. package/build/impl/LslStreamInlet.js +79 -149
  39. package/build/impl/LslStreamInlet.js.map +1 -1
  40. package/build/impl/LslStreamOutlet.d.ts +15 -18
  41. package/build/impl/LslStreamOutlet.js +39 -47
  42. package/build/impl/LslStreamOutlet.js.map +1 -1
  43. package/build/impl/LslWebSocketBridge.d.ts +4 -5
  44. package/build/impl/LslWebSocketBridge.js +8 -8
  45. package/build/impl/LslWebSocketBridge.js.map +1 -1
  46. package/build/impl/workers/inlet/LslStreamInlet.worker.d.ts +22 -0
  47. package/build/impl/workers/inlet/LslStreamInlet.worker.js +42 -0
  48. package/build/impl/workers/inlet/LslStreamInlet.worker.js.map +1 -0
  49. package/build/impl/workers/inlet/StreamInletWorker.d.ts +73 -0
  50. package/build/impl/workers/inlet/StreamInletWorker.js +253 -0
  51. package/build/impl/workers/inlet/StreamInletWorker.js.map +1 -0
  52. package/build/impl/workers/outlet/LslStreamOutlet.worker.d.ts +32 -0
  53. package/build/impl/workers/outlet/LslStreamOutlet.worker.js +82 -0
  54. package/build/impl/workers/outlet/LslStreamOutlet.worker.js.map +1 -0
  55. package/build/index.d.ts +12 -14
  56. package/build/index.js +14 -16
  57. package/build/index.js.map +1 -1
  58. package/build/scripts/finalizeHandles.d.ts +2 -0
  59. package/build/scripts/finalizeHandles.js +48 -0
  60. package/build/scripts/finalizeHandles.js.map +1 -0
  61. package/build/scripts/runLslEventMarkerEmitter.js +11 -0
  62. package/build/scripts/runLslEventMarkerEmitter.js.map +1 -0
  63. package/build/scripts/runOutletToInlet.js +7 -6
  64. package/build/scripts/runOutletToInlet.js.map +1 -1
  65. package/build/scripts/testDestroyOutlet.d.ts +1 -0
  66. package/build/scripts/testDestroyOutlet.js +4 -0
  67. package/build/scripts/testDestroyOutlet.js.map +1 -0
  68. package/build/testDoubles/BackpressureMonitor/FakeBackpressureMonitor.d.ts +6 -0
  69. package/build/testDoubles/BackpressureMonitor/FakeBackpressureMonitor.js +10 -0
  70. package/build/testDoubles/BackpressureMonitor/FakeBackpressureMonitor.js.map +1 -0
  71. package/build/testDoubles/EventMarkerEmitter/FakeEventMarkerEmitter.d.ts +17 -0
  72. package/build/testDoubles/EventMarkerEmitter/FakeEventMarkerEmitter.js +30 -0
  73. package/build/testDoubles/EventMarkerEmitter/FakeEventMarkerEmitter.js.map +1 -0
  74. package/build/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.d.ts +10 -0
  75. package/build/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.js +23 -0
  76. package/build/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.js.map +1 -0
  77. package/build/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.d.ts +9 -0
  78. package/build/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.js +19 -0
  79. package/build/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.js.map +1 -0
  80. package/build/testDoubles/StreamInfo/FakeStreamInfo.d.ts +3 -3
  81. package/build/testDoubles/StreamInfo/FakeStreamInfo.js +3 -3
  82. package/build/testDoubles/StreamInfo/FakeStreamInfo.js.map +1 -1
  83. package/build/testDoubles/StreamInlet/FakeStreamInlet.d.ts +8 -10
  84. package/build/testDoubles/StreamInlet/FakeStreamInlet.js +6 -7
  85. package/build/testDoubles/StreamInlet/FakeStreamInlet.js.map +1 -1
  86. package/build/testDoubles/StreamInlet/SpyStreamInlet.d.ts +2 -5
  87. package/build/testDoubles/StreamInlet/SpyStreamInlet.js +2 -8
  88. package/build/testDoubles/StreamInlet/SpyStreamInlet.js.map +1 -1
  89. package/build/testDoubles/StreamOutlet/FakeStreamOutlet.d.ts +7 -9
  90. package/build/testDoubles/StreamOutlet/FakeStreamOutlet.js +5 -8
  91. package/build/testDoubles/StreamOutlet/FakeStreamOutlet.js.map +1 -1
  92. package/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.d.ts +1 -1
  93. package/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.js +1 -1
  94. package/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.js.map +1 -1
  95. package/build/testDoubles/WorkerThreads/FakeWorker.d.ts +27 -0
  96. package/build/testDoubles/WorkerThreads/FakeWorker.js +67 -0
  97. package/build/testDoubles/WorkerThreads/FakeWorker.js.map +1 -0
  98. package/build/validations.js +0 -2
  99. package/build/validations.js.map +1 -1
  100. package/package.json +23 -7
  101. package/src/.spruce/settings.json +5 -1
  102. package/src/__tests__/AbstractPackageTest.ts +12 -14
  103. package/src/__tests__/impl/LslBackpressureMonitor.test.ts +25 -0
  104. package/src/__tests__/impl/LslEventMarkerEmitter.test.ts +322 -0
  105. package/src/__tests__/impl/LslStreamInfo.test.ts +3 -40
  106. package/src/__tests__/impl/LslStreamInlet.test.ts +344 -97
  107. package/src/__tests__/impl/LslStreamOutlet.test.ts +61 -69
  108. package/src/__tests__/impl/LslWebSocketBridge.test.ts +18 -18
  109. package/src/assertions.ts +2 -1
  110. package/src/impl/LslBackpressureMonitor.ts +13 -0
  111. package/src/impl/LslEventMarkerEmitter.ts +133 -0
  112. package/src/impl/LslStreamInfo.ts +17 -29
  113. package/src/impl/LslStreamInlet.ts +102 -215
  114. package/src/impl/LslStreamOutlet.ts +54 -78
  115. package/src/impl/LslWebSocketBridge.ts +12 -12
  116. package/src/impl/workers/inlet/LslStreamInlet.worker.ts +74 -0
  117. package/src/impl/workers/inlet/StreamInletWorker.ts +348 -0
  118. package/src/impl/workers/outlet/LslStreamOutlet.worker.ts +144 -0
  119. package/src/index.ts +14 -17
  120. package/src/scripts/finalizeHandles.ts +63 -0
  121. package/src/scripts/runLslEventMarkerEmitter.ts +15 -0
  122. package/src/scripts/runOutletToInlet.ts +10 -8
  123. package/src/scripts/testDestroyOutlet.ts +5 -0
  124. package/src/testDoubles/BackpressureMonitor/FakeBackpressureMonitor.ts +13 -0
  125. package/src/testDoubles/EventMarkerEmitter/FakeEventMarkerEmitter.ts +46 -0
  126. package/src/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.ts +31 -0
  127. package/src/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.ts +29 -0
  128. package/src/testDoubles/StreamInfo/FakeStreamInfo.ts +4 -4
  129. package/src/testDoubles/StreamInlet/FakeStreamInlet.ts +11 -17
  130. package/src/testDoubles/StreamInlet/SpyStreamInlet.ts +3 -16
  131. package/src/testDoubles/StreamOutlet/FakeStreamOutlet.ts +12 -15
  132. package/src/testDoubles/WebSocketBridge/FakeWebSocketBridge.ts +1 -1
  133. package/src/testDoubles/WorkerThreads/FakeWorker.ts +99 -0
  134. package/src/validations.ts +0 -2
  135. package/build/__tests__/impl/LiblslAdapter.test.d.ts +0 -79
  136. package/build/__tests__/impl/LiblslAdapter.test.js +0 -688
  137. package/build/__tests__/impl/LiblslAdapter.test.js.map +0 -1
  138. package/build/__tests__/impl/LslEventMarkerOutlet.test.d.ts +0 -21
  139. package/build/__tests__/impl/LslEventMarkerOutlet.test.js +0 -160
  140. package/build/__tests__/impl/LslEventMarkerOutlet.test.js.map +0 -1
  141. package/build/handleError.d.ts +0 -8
  142. package/build/handleError.js +0 -25
  143. package/build/handleError.js.map +0 -1
  144. package/build/impl/LiblslAdapter.d.ts +0 -154
  145. package/build/impl/LiblslAdapter.js +0 -317
  146. package/build/impl/LiblslAdapter.js.map +0 -1
  147. package/build/impl/LslEventMarkerOutlet.d.ts +0 -28
  148. package/build/impl/LslEventMarkerOutlet.js +0 -63
  149. package/build/impl/LslEventMarkerOutlet.js.map +0 -1
  150. package/build/scripts/runLslEventMarkerOutlet.js +0 -18
  151. package/build/scripts/runLslEventMarkerOutlet.js.map +0 -1
  152. package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.d.ts +0 -13
  153. package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.js +0 -26
  154. package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.js.map +0 -1
  155. package/build/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.d.ts +0 -17
  156. package/build/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.js +0 -46
  157. package/build/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.js.map +0 -1
  158. package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.d.ts +0 -9
  159. package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js +0 -19
  160. package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js.map +0 -1
  161. package/build/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.d.ts +0 -9
  162. package/build/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.js +0 -19
  163. package/build/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.js.map +0 -1
  164. package/build/testDoubles/Liblsl/FakeLiblsl.d.ts +0 -50
  165. package/build/testDoubles/Liblsl/FakeLiblsl.js +0 -126
  166. package/build/testDoubles/Liblsl/FakeLiblsl.js.map +0 -1
  167. package/src/__tests__/impl/LiblslAdapter.test.ts +0 -817
  168. package/src/__tests__/impl/LslEventMarkerOutlet.test.ts +0 -195
  169. package/src/handleError.ts +0 -24
  170. package/src/impl/LiblslAdapter.ts +0 -543
  171. package/src/impl/LslEventMarkerOutlet.ts +0 -97
  172. package/src/scripts/runLslEventMarkerOutlet.ts +0 -23
  173. package/src/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.ts +0 -36
  174. package/src/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.ts +0 -75
  175. package/src/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.ts +0 -24
  176. package/src/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.ts +0 -28
  177. package/src/testDoubles/Liblsl/FakeLiblsl.ts +0 -182
  178. /package/build/scripts/{runLslEventMarkerOutlet.d.ts → runLslEventMarkerEmitter.d.ts} +0 -0
@@ -4,36 +4,48 @@ import AbstractPackageTest from '../AbstractPackageTest.js';
4
4
  export default class LslStreamInletTest extends AbstractPackageTest {
5
5
  private static instance;
6
6
  private static callsToOnData;
7
+ private static readonly sampleBufferPtr;
8
+ private static readonly timestampBufferPtr;
9
+ private static readonly errorCodePtr;
10
+ protected static beforeAll(): Promise<void>;
7
11
  protected static beforeEach(): Promise<void>;
8
12
  protected static createsInstance(): Promise<void>;
9
13
  protected static callsBindingsToCreateStreamInlet(): Promise<void>;
10
- protected static flushQueueCallsLslBinding(): Promise<void>;
14
+ protected static flushInletCallsLslBinding(): Promise<void>;
11
15
  protected static destroyCallsLslBinding(): Promise<void>;
16
+ protected static destroyFreesAllPointers(): Promise<void>;
12
17
  protected static destroyCallsStopIfIsRunning(): Promise<void>;
13
18
  protected static destroyDoesNotCallStopIfNotRunning(): Promise<void>;
14
19
  protected static exposesIsRunningFieldThatIsFalseAtFirst(): Promise<void>;
15
20
  protected static startPullingSetsIsRunningToTrue(): Promise<void>;
21
+ protected static doesNotStartPullingTwiceIfAlreadyRunning(): Promise<void>;
22
+ protected static startPullingOpensInletStream(): Promise<void>;
23
+ protected static opensInletStreamWithPassedTimeout(): Promise<void>;
24
+ protected static waitsAfterOpeningStreamWithPassedOption(): Promise<void>;
25
+ protected static stopPullingClosesInletStream(): Promise<void>;
26
+ protected static stopPullingFlushesInletByDefault(): Promise<void>;
27
+ protected static stopPullingDoesNotFlushInletIfPassedOption(): Promise<void>;
16
28
  protected static stopPullingSetsIsRunningToFalse(): Promise<void>;
17
29
  protected static callsOnDataForChunkSizeNotOne(): Promise<void>;
18
30
  protected static callsOnDataForChunkSizeOne(): Promise<void>;
19
31
  protected static callsPullSampleIfChunkSizeIsOne(): Promise<void>;
20
32
  protected static callsPullChunkIfChunkSizeIsNotOne(): Promise<void>;
33
+ protected static pushSampleHandlesErrorCode(): Promise<void>;
34
+ protected static waitsBetweenPullsIfPassedOption(): Promise<void>;
35
+ protected static waitsOneMillisecondBetweenPullsIfNotPassed(): Promise<void>;
21
36
  protected static passesTimeoutMsOptionToPullSample(): Promise<void>;
22
37
  protected static passesTimeoutMsOptionToPullChunk(): Promise<void>;
23
38
  protected static defaultsMaxBufferedMsToSixMinutesInSeconds(): Promise<void>;
24
- protected static throwsWithUnknownErrorCode(): Promise<void>;
25
- protected static throwsWithErrorCodeNegativeOne(): Promise<void>;
26
- protected static throwsWithErrorCodeNegativeTwo(): Promise<void>;
27
- protected static throwsWithErrorCodeNegativeThree(): Promise<void>;
28
- protected static throwsWithErrorCodeNegativeFour(): Promise<void>;
29
- private static assertThrowsWithErrorCode;
39
+ private static startPullingThenDestroy;
30
40
  private static runChunkSizeOne;
31
41
  private static runInletWithOptions;
32
42
  private static startThenStop;
33
43
  private static startPulling;
34
44
  private static stopPulling;
45
+ private static destroy;
35
46
  private static get isRunning();
36
- private static get boundInlet();
47
+ private static get inletHandle();
48
+ private static getFakeWorker;
37
49
  private static onData;
38
50
  protected static LslStreamInlet(options?: Partial<StreamInletOptions>): Promise<SpyStreamInlet>;
39
51
  }
@@ -4,41 +4,85 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  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;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
+ import { FakeLiblsl } from '@neurodevs/ndx-native';
7
8
  import { test, assert } from '@neurodevs/node-tdd';
9
+ import { createPointer, DataType, PointerType, unwrapPointer, } from 'ffi-rs';
10
+ import LslStreamInlet from '../../impl/LslStreamInlet.js';
11
+ import StreamInletWorker from '../../impl/workers/inlet/StreamInletWorker.js';
12
+ import FakeWorker from '../../testDoubles/WorkerThreads/FakeWorker.js';
8
13
  import AbstractPackageTest from '../AbstractPackageTest.js';
9
14
  export default class LslStreamInletTest extends AbstractPackageTest {
10
15
  static instance;
11
16
  static callsToOnData;
17
+ static sampleBufferPtr = unwrapPointer(createPointer({
18
+ paramsType: [DataType.U8Array],
19
+ paramsValue: [new Float32Array(this.channelCount * this.chunkSize)],
20
+ }))[0];
21
+ static timestampBufferPtr = unwrapPointer(createPointer({
22
+ paramsType: [DataType.U8Array],
23
+ paramsValue: [new Float64Array(this.chunkSize)],
24
+ }))[0];
25
+ static errorCodePtr = unwrapPointer(createPointer({
26
+ paramsType: [DataType.U8Array],
27
+ paramsValue: [new Int32Array(1)],
28
+ }))[0];
29
+ static async beforeAll() {
30
+ assert.isEqual(LslStreamInlet.waitAfterOpenStreamMs, 100, 'Default waitAfterOpenStreamMs should be 100!');
31
+ }
12
32
  static async beforeEach() {
13
33
  await super.beforeEach();
14
34
  this.setFakeLiblsl();
15
35
  this.setFakeStreamInfo();
16
36
  this.setSpyStreamInlet();
17
37
  this.callsToOnData = [];
38
+ LslStreamInlet.waitAfterOpenStreamMs = 0;
39
+ LslStreamInlet.Worker = FakeWorker;
40
+ FakeWorker.resetTestDoubles();
41
+ StreamInletWorker.lsl = this.fakeLiblsl;
42
+ StreamInletWorker.freePointer = () => { };
43
+ FakeWorker.fakeOnData = this.onData;
18
44
  this.instance = await this.LslStreamInlet();
19
45
  }
20
46
  static async createsInstance() {
21
47
  assert.isTruthy(this.instance, 'Failed to create instance!');
22
48
  }
23
49
  static async callsBindingsToCreateStreamInlet() {
24
- const fakeInfo = this.instance.getStreamInfo();
25
- assert.isTruthy(fakeInfo, 'Should have created stream info!');
50
+ await this.startPulling();
51
+ assert.isTruthy(this.inletHandle, 'Should have created stream info!');
26
52
  assert.isEqualDeep(this.fakeLiblsl.lastCreateInletOptions, {
27
- info: fakeInfo.boundInfo,
53
+ infoHandle: this.inletHandle,
28
54
  maxBufferedMs: this.maxBufferedMs,
29
55
  }, 'Should have called createInlet!');
56
+ this.stopPulling();
30
57
  }
31
- static async flushQueueCallsLslBinding() {
32
- this.instance.flushQueue();
33
- assert.isEqualDeep(this.fakeLiblsl.lastFlushInletOptions, { inlet: this.boundInlet }, 'Should have called flushInlet!');
58
+ static async flushInletCallsLslBinding() {
59
+ this.instance.flushInlet();
60
+ assert.isEqualDeep(this.fakeLiblsl.lastFlushInletOptions, { inletHandle: this.inletHandle }, 'Should have called flushInlet!');
34
61
  }
35
62
  static async destroyCallsLslBinding() {
36
- this.instance.destroy();
37
- assert.isEqualDeep(this.fakeLiblsl.lastDestroyInletOptions, { inlet: this.boundInlet }, 'Did not destroy inlet!');
63
+ await this.startPullingThenDestroy();
64
+ assert.isEqualDeep(this.fakeLiblsl.lastDestroyInletOptions, { inletHandle: this.inletHandle }, 'Did not destroy inlet!');
65
+ }
66
+ static async destroyFreesAllPointers() {
67
+ let calls = [];
68
+ StreamInletWorker.freePointer = (params) => {
69
+ calls.push(params);
70
+ };
71
+ await this.startPullingThenDestroy();
72
+ const { paramsType, pointerType } = calls[0];
73
+ assert.isEqualDeep({ paramsType, pointerType }, {
74
+ paramsType: [
75
+ DataType.U8Array,
76
+ DataType.U8Array,
77
+ DataType.U8Array,
78
+ DataType.U8Array,
79
+ ],
80
+ pointerType: PointerType.CPointer,
81
+ }, 'Destroy did not free all pointers!');
38
82
  }
39
83
  static async destroyCallsStopIfIsRunning() {
40
- this.instance.startPulling();
41
- this.instance.destroy();
84
+ await this.startPulling();
85
+ this.destroy();
42
86
  assert.isFalse(this.instance.isRunning, 'Did not stop inlet before destroying!');
43
87
  }
44
88
  static async destroyDoesNotCallStopIfNotRunning() {
@@ -53,11 +97,72 @@ export default class LslStreamInletTest extends AbstractPackageTest {
53
97
  assert.isFalse(this.isRunning, 'isRunning should be false at first!');
54
98
  }
55
99
  static async startPullingSetsIsRunningToTrue() {
56
- this.startPulling();
57
- await this.wait(10);
100
+ await this.startPulling();
58
101
  assert.isTrue(this.isRunning, 'isRunning should be true!');
59
102
  this.stopPulling();
60
103
  }
104
+ static async doesNotStartPullingTwiceIfAlreadyRunning() {
105
+ await this.startPulling();
106
+ await this.startPulling();
107
+ assert.isEqual(FakeWorker.callsToPostMessage.filter((msg) => msg.type === 'startPulling').length, 1, 'startPulling did not return early!');
108
+ this.stopPulling();
109
+ }
110
+ static async startPullingOpensInletStream() {
111
+ await this.startPulling();
112
+ const aboutOneYearInMs = 32000000 * 1000;
113
+ assert.isEqualDeep(this.fakeLiblsl.lastOpenStreamOptions, {
114
+ inletHandle: this.inletHandle,
115
+ timeoutMs: aboutOneYearInMs,
116
+ errorCodePtr: this.errorCodePtr,
117
+ }, 'Did not open inlet stream!');
118
+ this.stopPulling();
119
+ }
120
+ static async opensInletStreamWithPassedTimeout() {
121
+ const openStreamTimeoutMs = 1000 * Math.random();
122
+ const instance = await this.LslStreamInlet({
123
+ openStreamTimeoutMs,
124
+ });
125
+ await this.startPulling(instance);
126
+ assert.isEqualDeep(this.fakeLiblsl.lastOpenStreamOptions, {
127
+ inletHandle: this.inletHandle,
128
+ timeoutMs: openStreamTimeoutMs,
129
+ errorCodePtr: this.errorCodePtr,
130
+ }, 'Did not open inlet stream with passed timeout!');
131
+ instance.stopPulling();
132
+ }
133
+ static async waitsAfterOpeningStreamWithPassedOption() {
134
+ const waitAfterOpenStreamMs = 10;
135
+ const instance = await this.LslStreamInlet({
136
+ waitAfterOpenStreamMs,
137
+ });
138
+ let t0 = Date.now();
139
+ await this.startPulling(instance);
140
+ let elapsed = Date.now() - t0;
141
+ instance.stopPulling();
142
+ assert.isAbove(elapsed, waitAfterOpenStreamMs * 0.8, 'Did not wait after opening stream!');
143
+ }
144
+ static async stopPullingClosesInletStream() {
145
+ await this.startPulling();
146
+ this.stopPulling();
147
+ assert.isEqualDeep(this.fakeLiblsl.lastCloseStreamOptions, {
148
+ inletHandle: this.inletHandle,
149
+ }, 'Did not close inlet stream!');
150
+ }
151
+ static async stopPullingFlushesInletByDefault() {
152
+ await this.startPulling();
153
+ this.stopPulling();
154
+ assert.isEqualDeep(this.fakeLiblsl.lastFlushInletOptions, {
155
+ inletHandle: this.inletHandle,
156
+ }, 'Did not flush inlet!');
157
+ }
158
+ static async stopPullingDoesNotFlushInletIfPassedOption() {
159
+ const instance = await this.LslStreamInlet({
160
+ flushInletOnStop: false,
161
+ });
162
+ await this.startPulling(instance);
163
+ instance.stopPulling();
164
+ assert.isUndefined(this.fakeLiblsl.lastFlushInletOptions, 'Should not have flushed inlet!');
165
+ }
61
166
  static async stopPullingSetsIsRunningToFalse() {
62
167
  await this.startThenStop();
63
168
  assert.isFalse(this.isRunning, 'isRunning should be false!');
@@ -71,42 +176,78 @@ export default class LslStreamInletTest extends AbstractPackageTest {
71
176
  assert.isEqual(this.callsToOnData.length, 2, 'Did not call onData as expected!');
72
177
  }
73
178
  static async callsPullSampleIfChunkSizeIsOne() {
74
- const inlet = await this.runChunkSizeOne();
179
+ await this.runChunkSizeOne();
75
180
  assert.isEqualDeep(this.fakeLiblsl.lastPullSampleOptions, {
76
- inlet: this.boundInlet,
77
- dataBufferPtr: inlet['dataBufferPtr'],
78
- dataBufferElements: this.channelCount,
79
- timeout: 0,
80
- errcodePtr: inlet['errorCodeBufferPtr'],
181
+ inletHandle: this.inletHandle,
182
+ sampleBufferPtr: this.sampleBufferPtr,
183
+ sampleBufferElements: this.channelCount,
184
+ timeoutMs: 0,
185
+ errorCodePtr: this.errorCodePtr,
81
186
  }, 'Should have called pullSample!');
82
187
  }
83
188
  static async callsPullChunkIfChunkSizeIsNotOne() {
84
189
  await this.startThenStop();
85
190
  assert.isEqualDeep(this.fakeLiblsl.lastPullChunkOptions, {
86
- inlet: this.boundInlet,
87
- dataBufferPtr: this.instance['dataBufferPtr'],
88
- timestampBufferPtr: this.instance['timestampBufferPtr'],
89
- dataBufferElements: this.chunkSize * this.channelCount,
191
+ inletHandle: this.inletHandle,
192
+ sampleBufferPtr: this.sampleBufferPtr,
193
+ timestampBufferPtr: this.timestampBufferPtr,
194
+ sampleBufferElements: this.chunkSize * this.channelCount,
90
195
  timestampBufferElements: this.chunkSize,
91
- timeout: 0,
92
- errcodePtr: this.instance['errorCodeBufferPtr'],
196
+ timeoutMs: 0,
197
+ errorCodePtr: this.errorCodePtr,
93
198
  }, 'Should have called pullChunk!');
94
199
  }
200
+ static async pushSampleHandlesErrorCode() {
201
+ let passedErrorCode;
202
+ StreamInletWorker.handleError = (errorCode) => {
203
+ passedErrorCode = errorCode;
204
+ };
205
+ const fakeErrorCode = [-4, -3, -2, -1, 0][Math.floor(Math.random() * 5)];
206
+ const worker = this.getFakeWorker();
207
+ worker['inletWorker']['pullErrorBuffer'].writeInt32LE(fakeErrorCode);
208
+ await this.startThenStop();
209
+ assert.isEqualDeep(passedErrorCode, FakeLiblsl.fakeErrorCode, 'Did not pass the expected error code to handleError!');
210
+ }
211
+ static async waitsBetweenPullsIfPassedOption() {
212
+ const waitBetweenPullsMs = 10;
213
+ const instance = await this.LslStreamInlet({
214
+ waitBetweenPullsMs,
215
+ });
216
+ let pulls = 0;
217
+ const inletWorker = this.getFakeWorker(instance)['inletWorker'];
218
+ const original = inletWorker['pullDataOnce'].bind(inletWorker);
219
+ inletWorker['pullDataOnce'] = async () => {
220
+ pulls++;
221
+ await original();
222
+ };
223
+ const t0 = Date.now();
224
+ const promise = this.startPulling(instance);
225
+ while (pulls < 2) {
226
+ await this.wait(1);
227
+ }
228
+ const elapsed = Date.now() - t0;
229
+ assert.isAbove(elapsed, waitBetweenPullsMs * 0.8, 'Did not wait between pulls');
230
+ instance.stopPulling();
231
+ await promise;
232
+ }
233
+ static async waitsOneMillisecondBetweenPullsIfNotPassed() {
234
+ assert.isEqual(this.instance['waitBetweenPullsMs'], 1, 'Default waitBetweenPullsMs should be 1!');
235
+ }
95
236
  static async passesTimeoutMsOptionToPullSample() {
96
- const timeoutMs = 1000 * Math.random();
237
+ const pullTimeoutMs = 1000 * Math.random();
97
238
  await this.runInletWithOptions({
98
239
  chunkSize: 1,
99
- timeoutMs,
240
+ pullTimeoutMs,
100
241
  });
101
- assert.isEqual(this.fakeLiblsl.lastPullSampleOptions?.timeout, timeoutMs / 1000, 'Did not pass timeoutMs to pullSample!');
242
+ assert.isEqual(this.fakeLiblsl.lastPullSampleOptions?.timeoutMs, pullTimeoutMs, 'Did not pass pullTimeoutMs to pullSample!');
102
243
  }
103
244
  static async passesTimeoutMsOptionToPullChunk() {
104
- const timeoutMs = 1000 * Math.random();
245
+ const pullTimeoutMs = 1000 * Math.random();
105
246
  await this.runInletWithOptions({
106
247
  chunkSize: this.chunkSize,
107
- timeoutMs,
248
+ pullTimeoutMs,
108
249
  });
109
- assert.isEqual(this.fakeLiblsl.lastPullChunkOptions?.timeout, timeoutMs / 1000, 'Did not pass timeoutMs to pullChunk!');
250
+ assert.isEqual(this.fakeLiblsl.lastPullChunkOptions?.timeoutMs, pullTimeoutMs, 'Did not pass timeoutMs to pullChunk!');
110
251
  }
111
252
  static async defaultsMaxBufferedMsToSixMinutesInSeconds() {
112
253
  await this.runInletWithOptions({
@@ -115,27 +256,9 @@ export default class LslStreamInletTest extends AbstractPackageTest {
115
256
  const sixMinutesInMs = 360 * 1000;
116
257
  assert.isEqualDeep(this.fakeLiblsl.lastCreateInletOptions?.maxBufferedMs, sixMinutesInMs);
117
258
  }
118
- static async throwsWithUnknownErrorCode() {
119
- await this.assertThrowsWithErrorCode(-999, `An unknown liblsl error has occurred!`);
120
- }
121
- static async throwsWithErrorCodeNegativeOne() {
122
- await this.assertThrowsWithErrorCode(-1, `The liblsl operation failed due to a timeout!`);
123
- }
124
- static async throwsWithErrorCodeNegativeTwo() {
125
- await this.assertThrowsWithErrorCode(-2, `The liblsl stream has been lost!`);
126
- }
127
- static async throwsWithErrorCodeNegativeThree() {
128
- await this.assertThrowsWithErrorCode(-3, 'A liblsl argument was incorrectly specified!');
129
- }
130
- static async throwsWithErrorCodeNegativeFour() {
131
- await this.assertThrowsWithErrorCode(-4, 'An internal liblsl error has occurred!');
132
- }
133
- static async assertThrowsWithErrorCode(errorCode, message) {
134
- await this.startThenStop();
135
- this.instance['errorCodeBuffer'].writeInt32LE(errorCode);
136
- assert.doesThrow(() => {
137
- this.instance['handleErrorCodeIfPresent']();
138
- }, message);
259
+ static async startPullingThenDestroy() {
260
+ await this.startPulling();
261
+ this.destroy();
139
262
  }
140
263
  static async runChunkSizeOne() {
141
264
  return await this.runInletWithOptions({
@@ -149,21 +272,35 @@ export default class LslStreamInletTest extends AbstractPackageTest {
149
272
  }
150
273
  static async startThenStop(inlet) {
151
274
  const instance = inlet || this.instance;
152
- instance.startPulling();
275
+ await this.startPulling(instance);
153
276
  await this.wait(10);
154
277
  instance.stopPulling();
155
278
  }
156
- static startPulling() {
157
- this.instance.startPulling();
279
+ static async startPulling(instance) {
280
+ const inst = instance || this.instance;
281
+ const startPullingPromise = inst.startPulling();
282
+ while (!this.getFakeWorker(inst).createInletPromise) {
283
+ await this.wait(1);
284
+ }
285
+ await this.getFakeWorker(inst).createInletPromise;
286
+ inst['workerReady'] = true;
287
+ await startPullingPromise;
158
288
  }
159
289
  static stopPulling() {
160
290
  this.instance.stopPulling();
161
291
  }
292
+ static destroy() {
293
+ this.instance.destroy();
294
+ }
162
295
  static get isRunning() {
163
296
  return this.instance.isRunning;
164
297
  }
165
- static get boundInlet() {
166
- return this.instance.getBoundInlet();
298
+ static get inletHandle() {
299
+ return this.getFakeWorker()['inletWorker']['inletHandle'];
300
+ }
301
+ static getFakeWorker(instance) {
302
+ const inst = instance || this.instance;
303
+ return inst['worker'];
167
304
  }
168
305
  static onData = (samples, timestamps) => {
169
306
  this.callsToOnData.push({ samples, timestamps });
@@ -182,10 +319,13 @@ __decorate([
182
319
  ], LslStreamInletTest, "callsBindingsToCreateStreamInlet", null);
183
320
  __decorate([
184
321
  test()
185
- ], LslStreamInletTest, "flushQueueCallsLslBinding", null);
322
+ ], LslStreamInletTest, "flushInletCallsLslBinding", null);
186
323
  __decorate([
187
324
  test()
188
325
  ], LslStreamInletTest, "destroyCallsLslBinding", null);
326
+ __decorate([
327
+ test()
328
+ ], LslStreamInletTest, "destroyFreesAllPointers", null);
189
329
  __decorate([
190
330
  test()
191
331
  ], LslStreamInletTest, "destroyCallsStopIfIsRunning", null);
@@ -198,6 +338,27 @@ __decorate([
198
338
  __decorate([
199
339
  test()
200
340
  ], LslStreamInletTest, "startPullingSetsIsRunningToTrue", null);
341
+ __decorate([
342
+ test()
343
+ ], LslStreamInletTest, "doesNotStartPullingTwiceIfAlreadyRunning", null);
344
+ __decorate([
345
+ test()
346
+ ], LslStreamInletTest, "startPullingOpensInletStream", null);
347
+ __decorate([
348
+ test()
349
+ ], LslStreamInletTest, "opensInletStreamWithPassedTimeout", null);
350
+ __decorate([
351
+ test()
352
+ ], LslStreamInletTest, "waitsAfterOpeningStreamWithPassedOption", null);
353
+ __decorate([
354
+ test()
355
+ ], LslStreamInletTest, "stopPullingClosesInletStream", null);
356
+ __decorate([
357
+ test()
358
+ ], LslStreamInletTest, "stopPullingFlushesInletByDefault", null);
359
+ __decorate([
360
+ test()
361
+ ], LslStreamInletTest, "stopPullingDoesNotFlushInletIfPassedOption", null);
201
362
  __decorate([
202
363
  test()
203
364
  ], LslStreamInletTest, "stopPullingSetsIsRunningToFalse", null);
@@ -215,26 +376,20 @@ __decorate([
215
376
  ], LslStreamInletTest, "callsPullChunkIfChunkSizeIsNotOne", null);
216
377
  __decorate([
217
378
  test()
218
- ], LslStreamInletTest, "passesTimeoutMsOptionToPullSample", null);
379
+ ], LslStreamInletTest, "pushSampleHandlesErrorCode", null);
219
380
  __decorate([
220
381
  test()
221
- ], LslStreamInletTest, "passesTimeoutMsOptionToPullChunk", null);
382
+ ], LslStreamInletTest, "waitsBetweenPullsIfPassedOption", null);
222
383
  __decorate([
223
384
  test()
224
- ], LslStreamInletTest, "defaultsMaxBufferedMsToSixMinutesInSeconds", null);
225
- __decorate([
226
- test()
227
- ], LslStreamInletTest, "throwsWithUnknownErrorCode", null);
228
- __decorate([
229
- test()
230
- ], LslStreamInletTest, "throwsWithErrorCodeNegativeOne", null);
385
+ ], LslStreamInletTest, "waitsOneMillisecondBetweenPullsIfNotPassed", null);
231
386
  __decorate([
232
387
  test()
233
- ], LslStreamInletTest, "throwsWithErrorCodeNegativeTwo", null);
388
+ ], LslStreamInletTest, "passesTimeoutMsOptionToPullSample", null);
234
389
  __decorate([
235
390
  test()
236
- ], LslStreamInletTest, "throwsWithErrorCodeNegativeThree", null);
391
+ ], LslStreamInletTest, "passesTimeoutMsOptionToPullChunk", null);
237
392
  __decorate([
238
393
  test()
239
- ], LslStreamInletTest, "throwsWithErrorCodeNegativeFour", null);
394
+ ], LslStreamInletTest, "defaultsMaxBufferedMsToSixMinutesInSeconds", null);
240
395
  //# sourceMappingURL=LslStreamInlet.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LslStreamInlet.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/LslStreamInlet.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LslStreamInlet.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/LslStreamInlet.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { LslSample } from 'impl/LiblslAdapter.js';
1
+ import { LslSample } from '@neurodevs/ndx-native';
2
2
  import AbstractPackageTest from '../AbstractPackageTest.js';
3
3
  export default class LslStreamOutletTest extends AbstractPackageTest {
4
4
  private static randomOutletOptions;
@@ -21,16 +21,12 @@ export default class LslStreamOutletTest extends AbstractPackageTest {
21
21
  protected static canDestroyOutlet(): Promise<void>;
22
22
  protected static destroyAlsoCallsDestroyStreamInfo(): Promise<void>;
23
23
  protected static pushSampleShouldNotCreateMultipleOutlets(): Promise<void>;
24
+ protected static pushSampleAcceptsOptionalPreciseTimestamp(): Promise<void>;
25
+ protected static pushSampleHandlesErrorCode(): Promise<void>;
24
26
  protected static waitsForTenMsAfterConstructionBeforeReturning(): Promise<void>;
25
27
  protected static defaultsMaxBufferedMsToSixMinutesInSeconds(): Promise<void>;
26
28
  protected static defaultsManufacturerToNA(): Promise<void>;
27
29
  protected static defaultsUnitsToNA(): Promise<void>;
28
- protected static throwsWithUnknownErrorCode(): Promise<void>;
29
- protected static throwsWithErrorCodeNegativeOne(): Promise<void>;
30
- protected static throwsWithErrorCodeNegativeTwo(): Promise<void>;
31
- protected static throwsWithErrorCodeNegativeThree(): Promise<void>;
32
- protected static throwsWithErrorCodeNegativeFour(): Promise<void>;
33
- private static assertThrowsWithErrorCode;
34
30
  private static assertThrowsWithEmptyChannelNames;
35
31
  private static assertThrowsInvalidSampleRateHz;
36
32
  private static assertThrowsInvalidChannelFormat;