@neurodevs/node-lsl 17.1.0 → 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 +22 -8
  19. package/build/__tests__/impl/LslStreamInlet.test.js +240 -66
  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 -47
  38. package/build/impl/LslStreamInlet.js +82 -143
  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 +24 -8
  101. package/src/.spruce/settings.json +5 -1
  102. package/src/__tests__/AbstractPackageTest.ts +13 -15
  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 +366 -95
  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 +105 -208
  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 -159
  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 -548
  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,34 +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>;
17
+ protected static destroyCallsStopIfIsRunning(): Promise<void>;
18
+ protected static destroyDoesNotCallStopIfNotRunning(): Promise<void>;
12
19
  protected static exposesIsRunningFieldThatIsFalseAtFirst(): Promise<void>;
13
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>;
14
28
  protected static stopPullingSetsIsRunningToFalse(): Promise<void>;
15
29
  protected static callsOnDataForChunkSizeNotOne(): Promise<void>;
16
30
  protected static callsOnDataForChunkSizeOne(): Promise<void>;
17
31
  protected static callsPullSampleIfChunkSizeIsOne(): Promise<void>;
18
32
  protected static callsPullChunkIfChunkSizeIsNotOne(): Promise<void>;
33
+ protected static pushSampleHandlesErrorCode(): Promise<void>;
34
+ protected static waitsBetweenPullsIfPassedOption(): Promise<void>;
35
+ protected static waitsOneMillisecondBetweenPullsIfNotPassed(): Promise<void>;
19
36
  protected static passesTimeoutMsOptionToPullSample(): Promise<void>;
20
37
  protected static passesTimeoutMsOptionToPullChunk(): Promise<void>;
21
38
  protected static defaultsMaxBufferedMsToSixMinutesInSeconds(): Promise<void>;
22
- protected static throwsWithUnknownErrorCode(): Promise<void>;
23
- protected static throwsWithErrorCodeNegativeOne(): Promise<void>;
24
- protected static throwsWithErrorCodeNegativeTwo(): Promise<void>;
25
- protected static throwsWithErrorCodeNegativeThree(): Promise<void>;
26
- protected static throwsWithErrorCodeNegativeFour(): Promise<void>;
27
- private static assertThrowsWithErrorCode;
39
+ private static startPullingThenDestroy;
28
40
  private static runChunkSizeOne;
29
41
  private static runInletWithOptions;
30
42
  private static startThenStop;
31
43
  private static startPulling;
32
44
  private static stopPulling;
45
+ private static destroy;
33
46
  private static get isRunning();
34
- private static get boundInlet();
47
+ private static get inletHandle();
48
+ private static getFakeWorker;
35
49
  private static onData;
36
50
  protected static LslStreamInlet(options?: Partial<StreamInletOptions>): Promise<SpyStreamInlet>;
37
51
  }
@@ -4,47 +4,165 @@ 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() {
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!');
82
+ }
83
+ static async destroyCallsStopIfIsRunning() {
84
+ await this.startPulling();
85
+ this.destroy();
86
+ assert.isFalse(this.instance.isRunning, 'Did not stop inlet before destroying!');
87
+ }
88
+ static async destroyDoesNotCallStopIfNotRunning() {
89
+ let wasHit = false;
90
+ this.instance.stopPulling = () => {
91
+ wasHit = true;
92
+ };
36
93
  this.instance.destroy();
37
- assert.isEqualDeep(this.fakeLiblsl.lastDestroyInletOptions, { inlet: this.boundInlet }, 'Did not destroy inlet!');
94
+ assert.isFalse(wasHit, 'Stop should not have been called!');
38
95
  }
39
96
  static async exposesIsRunningFieldThatIsFalseAtFirst() {
40
97
  assert.isFalse(this.isRunning, 'isRunning should be false at first!');
41
98
  }
42
99
  static async startPullingSetsIsRunningToTrue() {
43
- this.startPulling();
44
- await this.wait(10);
100
+ await this.startPulling();
45
101
  assert.isTrue(this.isRunning, 'isRunning should be true!');
46
102
  this.stopPulling();
47
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
+ }
48
166
  static async stopPullingSetsIsRunningToFalse() {
49
167
  await this.startThenStop();
50
168
  assert.isFalse(this.isRunning, 'isRunning should be false!');
@@ -58,42 +176,78 @@ export default class LslStreamInletTest extends AbstractPackageTest {
58
176
  assert.isEqual(this.callsToOnData.length, 2, 'Did not call onData as expected!');
59
177
  }
60
178
  static async callsPullSampleIfChunkSizeIsOne() {
61
- const inlet = await this.runChunkSizeOne();
179
+ await this.runChunkSizeOne();
62
180
  assert.isEqualDeep(this.fakeLiblsl.lastPullSampleOptions, {
63
- inlet: this.boundInlet,
64
- dataBufferPtr: inlet['dataBufferPtr'],
65
- dataBufferElements: this.channelCount,
66
- timeout: 0,
67
- errcodePtr: inlet['errorCodeBufferPtr'],
181
+ inletHandle: this.inletHandle,
182
+ sampleBufferPtr: this.sampleBufferPtr,
183
+ sampleBufferElements: this.channelCount,
184
+ timeoutMs: 0,
185
+ errorCodePtr: this.errorCodePtr,
68
186
  }, 'Should have called pullSample!');
69
187
  }
70
188
  static async callsPullChunkIfChunkSizeIsNotOne() {
71
189
  await this.startThenStop();
72
190
  assert.isEqualDeep(this.fakeLiblsl.lastPullChunkOptions, {
73
- inlet: this.boundInlet,
74
- dataBufferPtr: this.instance['dataBufferPtr'],
75
- timestampBufferPtr: this.instance['timestampBufferPtr'],
76
- dataBufferElements: this.chunkSize * this.channelCount,
191
+ inletHandle: this.inletHandle,
192
+ sampleBufferPtr: this.sampleBufferPtr,
193
+ timestampBufferPtr: this.timestampBufferPtr,
194
+ sampleBufferElements: this.chunkSize * this.channelCount,
77
195
  timestampBufferElements: this.chunkSize,
78
- timeout: 0,
79
- errcodePtr: this.instance['errorCodeBufferPtr'],
196
+ timeoutMs: 0,
197
+ errorCodePtr: this.errorCodePtr,
80
198
  }, 'Should have called pullChunk!');
81
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
+ }
82
236
  static async passesTimeoutMsOptionToPullSample() {
83
- const timeoutMs = 1000 * Math.random();
237
+ const pullTimeoutMs = 1000 * Math.random();
84
238
  await this.runInletWithOptions({
85
239
  chunkSize: 1,
86
- timeoutMs,
240
+ pullTimeoutMs,
87
241
  });
88
- 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!');
89
243
  }
90
244
  static async passesTimeoutMsOptionToPullChunk() {
91
- const timeoutMs = 1000 * Math.random();
245
+ const pullTimeoutMs = 1000 * Math.random();
92
246
  await this.runInletWithOptions({
93
247
  chunkSize: this.chunkSize,
94
- timeoutMs,
248
+ pullTimeoutMs,
95
249
  });
96
- 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!');
97
251
  }
98
252
  static async defaultsMaxBufferedMsToSixMinutesInSeconds() {
99
253
  await this.runInletWithOptions({
@@ -102,27 +256,9 @@ export default class LslStreamInletTest extends AbstractPackageTest {
102
256
  const sixMinutesInMs = 360 * 1000;
103
257
  assert.isEqualDeep(this.fakeLiblsl.lastCreateInletOptions?.maxBufferedMs, sixMinutesInMs);
104
258
  }
105
- static async throwsWithUnknownErrorCode() {
106
- await this.assertThrowsWithErrorCode(-999, `An unknown liblsl error has occurred!`);
107
- }
108
- static async throwsWithErrorCodeNegativeOne() {
109
- await this.assertThrowsWithErrorCode(-1, `The liblsl operation failed due to a timeout!`);
110
- }
111
- static async throwsWithErrorCodeNegativeTwo() {
112
- await this.assertThrowsWithErrorCode(-2, `The liblsl stream has been lost!`);
113
- }
114
- static async throwsWithErrorCodeNegativeThree() {
115
- await this.assertThrowsWithErrorCode(-3, 'A liblsl argument was incorrectly specified!');
116
- }
117
- static async throwsWithErrorCodeNegativeFour() {
118
- await this.assertThrowsWithErrorCode(-4, 'An internal liblsl error has occurred!');
119
- }
120
- static async assertThrowsWithErrorCode(errorCode, message) {
121
- await this.startThenStop();
122
- this.instance['errorCodeBuffer'].writeInt32LE(errorCode);
123
- assert.doesThrow(() => {
124
- this.instance['handleErrorCodeIfPresent']();
125
- }, message);
259
+ static async startPullingThenDestroy() {
260
+ await this.startPulling();
261
+ this.destroy();
126
262
  }
127
263
  static async runChunkSizeOne() {
128
264
  return await this.runInletWithOptions({
@@ -136,21 +272,35 @@ export default class LslStreamInletTest extends AbstractPackageTest {
136
272
  }
137
273
  static async startThenStop(inlet) {
138
274
  const instance = inlet || this.instance;
139
- instance.startPulling();
275
+ await this.startPulling(instance);
140
276
  await this.wait(10);
141
277
  instance.stopPulling();
142
278
  }
143
- static startPulling() {
144
- 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;
145
288
  }
146
289
  static stopPulling() {
147
290
  this.instance.stopPulling();
148
291
  }
292
+ static destroy() {
293
+ this.instance.destroy();
294
+ }
149
295
  static get isRunning() {
150
296
  return this.instance.isRunning;
151
297
  }
152
- static get boundInlet() {
153
- 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'];
154
304
  }
155
305
  static onData = (samples, timestamps) => {
156
306
  this.callsToOnData.push({ samples, timestamps });
@@ -169,16 +319,46 @@ __decorate([
169
319
  ], LslStreamInletTest, "callsBindingsToCreateStreamInlet", null);
170
320
  __decorate([
171
321
  test()
172
- ], LslStreamInletTest, "flushQueueCallsLslBinding", null);
322
+ ], LslStreamInletTest, "flushInletCallsLslBinding", null);
173
323
  __decorate([
174
324
  test()
175
325
  ], LslStreamInletTest, "destroyCallsLslBinding", null);
326
+ __decorate([
327
+ test()
328
+ ], LslStreamInletTest, "destroyFreesAllPointers", null);
329
+ __decorate([
330
+ test()
331
+ ], LslStreamInletTest, "destroyCallsStopIfIsRunning", null);
332
+ __decorate([
333
+ test()
334
+ ], LslStreamInletTest, "destroyDoesNotCallStopIfNotRunning", null);
176
335
  __decorate([
177
336
  test()
178
337
  ], LslStreamInletTest, "exposesIsRunningFieldThatIsFalseAtFirst", null);
179
338
  __decorate([
180
339
  test()
181
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);
182
362
  __decorate([
183
363
  test()
184
364
  ], LslStreamInletTest, "stopPullingSetsIsRunningToFalse", null);
@@ -196,26 +376,20 @@ __decorate([
196
376
  ], LslStreamInletTest, "callsPullChunkIfChunkSizeIsNotOne", null);
197
377
  __decorate([
198
378
  test()
199
- ], LslStreamInletTest, "passesTimeoutMsOptionToPullSample", null);
379
+ ], LslStreamInletTest, "pushSampleHandlesErrorCode", null);
200
380
  __decorate([
201
381
  test()
202
- ], LslStreamInletTest, "passesTimeoutMsOptionToPullChunk", null);
382
+ ], LslStreamInletTest, "waitsBetweenPullsIfPassedOption", null);
203
383
  __decorate([
204
384
  test()
205
- ], LslStreamInletTest, "defaultsMaxBufferedMsToSixMinutesInSeconds", null);
206
- __decorate([
207
- test()
208
- ], LslStreamInletTest, "throwsWithUnknownErrorCode", null);
209
- __decorate([
210
- test()
211
- ], LslStreamInletTest, "throwsWithErrorCodeNegativeOne", null);
385
+ ], LslStreamInletTest, "waitsOneMillisecondBetweenPullsIfNotPassed", null);
212
386
  __decorate([
213
387
  test()
214
- ], LslStreamInletTest, "throwsWithErrorCodeNegativeTwo", null);
388
+ ], LslStreamInletTest, "passesTimeoutMsOptionToPullSample", null);
215
389
  __decorate([
216
390
  test()
217
- ], LslStreamInletTest, "throwsWithErrorCodeNegativeThree", null);
391
+ ], LslStreamInletTest, "passesTimeoutMsOptionToPullChunk", null);
218
392
  __decorate([
219
393
  test()
220
- ], LslStreamInletTest, "throwsWithErrorCodeNegativeFour", null);
394
+ ], LslStreamInletTest, "defaultsMaxBufferedMsToSixMinutesInSeconds", null);
221
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;