@agentica/core 0.19.0 → 0.19.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/lib/index.mjs +32 -14
- package/lib/index.mjs.map +1 -1
- package/lib/utils/AsyncQueue.d.ts +10 -0
- package/lib/utils/AsyncQueue.js +33 -9
- package/lib/utils/AsyncQueue.js.map +1 -1
- package/lib/utils/AsyncQueue.spec.d.ts +1 -0
- package/lib/utils/AsyncQueue.spec.js +280 -0
- package/lib/utils/AsyncQueue.spec.js.map +1 -0
- package/lib/utils/MPSC.spec.d.ts +1 -0
- package/lib/utils/MPSC.spec.js +222 -0
- package/lib/utils/MPSC.spec.js.map +1 -0
- package/lib/utils/StreamUtil.spec.d.ts +1 -0
- package/lib/utils/StreamUtil.spec.js +471 -0
- package/lib/utils/StreamUtil.spec.js.map +1 -0
- package/package.json +1 -1
- package/src/utils/AsyncQueue.spec.ts +355 -0
- package/src/utils/AsyncQueue.ts +36 -8
- package/src/utils/MPSC.spec.ts +276 -0
- package/src/utils/StreamUtil.spec.ts +520 -0
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const AsyncQueue_1 = require("./AsyncQueue");
|
|
13
|
+
describe("the AsyncQueue", () => {
|
|
14
|
+
describe("basic functionality", () => {
|
|
15
|
+
it("enqueue and dequeue test", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
16
|
+
const queue = new AsyncQueue_1.AsyncQueue();
|
|
17
|
+
// Enqueue items
|
|
18
|
+
queue.enqueue(1);
|
|
19
|
+
queue.enqueue(2);
|
|
20
|
+
queue.enqueue(3);
|
|
21
|
+
// Dequeue items
|
|
22
|
+
const result1 = yield queue.dequeue();
|
|
23
|
+
const result2 = yield queue.dequeue();
|
|
24
|
+
const result3 = yield queue.dequeue();
|
|
25
|
+
expect(result1.value).toBe(1);
|
|
26
|
+
expect(result1.done).toBe(false);
|
|
27
|
+
expect(result2.value).toBe(2);
|
|
28
|
+
expect(result2.done).toBe(false);
|
|
29
|
+
expect(result3.value).toBe(3);
|
|
30
|
+
expect(result3.done).toBe(false);
|
|
31
|
+
}));
|
|
32
|
+
it("isEmpty test", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
33
|
+
const queue = new AsyncQueue_1.AsyncQueue();
|
|
34
|
+
expect(queue.isEmpty()).toBe(true);
|
|
35
|
+
queue.enqueue(1);
|
|
36
|
+
expect(queue.isEmpty()).toBe(false);
|
|
37
|
+
yield queue.dequeue();
|
|
38
|
+
expect(queue.isEmpty()).toBe(true);
|
|
39
|
+
}));
|
|
40
|
+
it("isClosed test", () => {
|
|
41
|
+
const queue = new AsyncQueue_1.AsyncQueue();
|
|
42
|
+
expect(queue.isClosed()).toBe(false);
|
|
43
|
+
queue.close();
|
|
44
|
+
expect(queue.isClosed()).toBe(true);
|
|
45
|
+
});
|
|
46
|
+
it("done test", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
47
|
+
const queue = new AsyncQueue_1.AsyncQueue();
|
|
48
|
+
expect(queue.done()).toBe(false);
|
|
49
|
+
queue.enqueue(1);
|
|
50
|
+
expect(queue.done()).toBe(false);
|
|
51
|
+
yield queue.dequeue();
|
|
52
|
+
expect(queue.done()).toBe(false);
|
|
53
|
+
queue.close();
|
|
54
|
+
expect(queue.done()).toBe(true);
|
|
55
|
+
}));
|
|
56
|
+
});
|
|
57
|
+
describe("close functionality", () => {
|
|
58
|
+
it("close test with empty queue", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
59
|
+
const queue = new AsyncQueue_1.AsyncQueue();
|
|
60
|
+
queue.close();
|
|
61
|
+
const result = yield queue.dequeue();
|
|
62
|
+
expect(result.done).toBe(true);
|
|
63
|
+
expect(result.value).toBeUndefined();
|
|
64
|
+
}));
|
|
65
|
+
it("close test with non-empty queue", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
66
|
+
const queue = new AsyncQueue_1.AsyncQueue();
|
|
67
|
+
queue.enqueue(1);
|
|
68
|
+
queue.enqueue(2);
|
|
69
|
+
queue.close();
|
|
70
|
+
const result1 = yield queue.dequeue();
|
|
71
|
+
const result2 = yield queue.dequeue();
|
|
72
|
+
const result3 = yield queue.dequeue();
|
|
73
|
+
expect(result1.value).toBe(1);
|
|
74
|
+
expect(result1.done).toBe(false);
|
|
75
|
+
expect(result2.value).toBe(2);
|
|
76
|
+
expect(result2.done).toBe(false);
|
|
77
|
+
expect(result3.done).toBe(true);
|
|
78
|
+
expect(result3.value).toBeUndefined();
|
|
79
|
+
}));
|
|
80
|
+
it("close test with waiting dequeue", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
81
|
+
const queue = new AsyncQueue_1.AsyncQueue();
|
|
82
|
+
// Start dequeue before enqueue
|
|
83
|
+
const dequeuePromise = queue.dequeue();
|
|
84
|
+
// Close the queue
|
|
85
|
+
queue.close();
|
|
86
|
+
const result = yield dequeuePromise;
|
|
87
|
+
expect(result.done).toBe(true);
|
|
88
|
+
expect(result.value).toBeUndefined();
|
|
89
|
+
}));
|
|
90
|
+
});
|
|
91
|
+
describe("waitUntilEmpty functionality", () => {
|
|
92
|
+
it("waitUntilEmpty test with empty queue", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
93
|
+
const queue = new AsyncQueue_1.AsyncQueue();
|
|
94
|
+
// Should resolve immediately since queue is empty
|
|
95
|
+
yield queue.waitUntilEmpty();
|
|
96
|
+
queue.enqueue(1);
|
|
97
|
+
const result = yield queue.dequeue();
|
|
98
|
+
expect(result.value).toBe(1);
|
|
99
|
+
expect(result.done).toBe(false);
|
|
100
|
+
}));
|
|
101
|
+
it("waitUntilEmpty test with non-empty queue", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
102
|
+
const queue = new AsyncQueue_1.AsyncQueue();
|
|
103
|
+
queue.enqueue(1);
|
|
104
|
+
queue.enqueue(2);
|
|
105
|
+
// waitUntilEmpty should not resolve since queue is not empty
|
|
106
|
+
const waitPromise = queue.waitUntilEmpty();
|
|
107
|
+
// Dequeue first value
|
|
108
|
+
const result1 = yield queue.dequeue();
|
|
109
|
+
expect(result1.value).toBe(1);
|
|
110
|
+
// Dequeue second value
|
|
111
|
+
const result2 = yield queue.dequeue();
|
|
112
|
+
expect(result2.value).toBe(2);
|
|
113
|
+
// Now queue is empty, waitUntilEmpty should resolve\
|
|
114
|
+
yield waitPromise;
|
|
115
|
+
}));
|
|
116
|
+
});
|
|
117
|
+
describe("waitClosed functionality", () => {
|
|
118
|
+
it("waitClosed test with unclosed queue", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
119
|
+
const queue = new AsyncQueue_1.AsyncQueue();
|
|
120
|
+
// waitClosed should not resolve since queue is not closed
|
|
121
|
+
const waitPromise = queue.waitClosed();
|
|
122
|
+
queue.enqueue(1);
|
|
123
|
+
const result = yield queue.dequeue();
|
|
124
|
+
expect(result.value).toBe(1);
|
|
125
|
+
// Close the queue
|
|
126
|
+
queue.close();
|
|
127
|
+
// Now queue is closed, waitClosed should resolve
|
|
128
|
+
yield waitPromise;
|
|
129
|
+
}));
|
|
130
|
+
it("waitClosed test with already closed queue", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
131
|
+
const queue = new AsyncQueue_1.AsyncQueue();
|
|
132
|
+
queue.close();
|
|
133
|
+
// waitClosed should resolve immediately since queue is already closed
|
|
134
|
+
yield queue.waitClosed();
|
|
135
|
+
}));
|
|
136
|
+
it("multiple waitClosed calls test", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
137
|
+
const queue = new AsyncQueue_1.AsyncQueue();
|
|
138
|
+
// Create multiple waitClosed promises
|
|
139
|
+
const waitPromises = [queue.waitClosed(), queue.waitClosed(), queue.waitClosed()];
|
|
140
|
+
// Close the queue
|
|
141
|
+
queue.close();
|
|
142
|
+
// All promises should resolve
|
|
143
|
+
yield Promise.all(waitPromises);
|
|
144
|
+
}));
|
|
145
|
+
it("waitClosed test with delayed close", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
146
|
+
const queue = new AsyncQueue_1.AsyncQueue();
|
|
147
|
+
// Start waiting for close
|
|
148
|
+
const closePromise = queue.waitClosed();
|
|
149
|
+
// Close after delay
|
|
150
|
+
setTimeout(() => {
|
|
151
|
+
queue.close();
|
|
152
|
+
}, 10);
|
|
153
|
+
yield closePromise; // Should resolve when queue is closed
|
|
154
|
+
}));
|
|
155
|
+
});
|
|
156
|
+
describe("dequeue behavior", () => {
|
|
157
|
+
it("dequeue before enqueue test", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
158
|
+
const queue = new AsyncQueue_1.AsyncQueue();
|
|
159
|
+
// Start dequeue before enqueue
|
|
160
|
+
const dequeuePromise = queue.dequeue();
|
|
161
|
+
// Enqueue after a small delay
|
|
162
|
+
setTimeout(() => {
|
|
163
|
+
queue.enqueue(42);
|
|
164
|
+
}, 10);
|
|
165
|
+
const result = yield dequeuePromise;
|
|
166
|
+
expect(result.value).toBe(42);
|
|
167
|
+
expect(result.done).toBe(false);
|
|
168
|
+
}));
|
|
169
|
+
it("multiple dequeue calls test", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
170
|
+
var _a, _b, _c, _d, _e, _f;
|
|
171
|
+
const queue = new AsyncQueue_1.AsyncQueue();
|
|
172
|
+
// Start multiple dequeue calls
|
|
173
|
+
const dequeuePromises = [
|
|
174
|
+
queue.dequeue(),
|
|
175
|
+
queue.dequeue(),
|
|
176
|
+
queue.dequeue(),
|
|
177
|
+
];
|
|
178
|
+
// Enqueue values
|
|
179
|
+
queue.enqueue(1);
|
|
180
|
+
queue.enqueue(2);
|
|
181
|
+
queue.enqueue(3);
|
|
182
|
+
const results = yield Promise.all(dequeuePromises);
|
|
183
|
+
expect((_a = results[0]) === null || _a === void 0 ? void 0 : _a.value).toBe(1);
|
|
184
|
+
expect((_b = results[0]) === null || _b === void 0 ? void 0 : _b.done).toBe(false);
|
|
185
|
+
expect((_c = results[1]) === null || _c === void 0 ? void 0 : _c.value).toBe(2);
|
|
186
|
+
expect((_d = results[1]) === null || _d === void 0 ? void 0 : _d.done).toBe(false);
|
|
187
|
+
expect((_e = results[2]) === null || _e === void 0 ? void 0 : _e.value).toBe(3);
|
|
188
|
+
expect((_f = results[2]) === null || _f === void 0 ? void 0 : _f.done).toBe(false);
|
|
189
|
+
}));
|
|
190
|
+
it("dequeue after close test", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
191
|
+
const queue = new AsyncQueue_1.AsyncQueue();
|
|
192
|
+
queue.enqueue(1);
|
|
193
|
+
queue.close();
|
|
194
|
+
const result1 = yield queue.dequeue();
|
|
195
|
+
expect(result1.value).toBe(1);
|
|
196
|
+
expect(result1.done).toBe(false);
|
|
197
|
+
const result2 = yield queue.dequeue();
|
|
198
|
+
expect(result2.done).toBe(true);
|
|
199
|
+
expect(result2.value).toBeUndefined();
|
|
200
|
+
}));
|
|
201
|
+
it("duplicate dequeue test", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
202
|
+
const queue = new AsyncQueue_1.AsyncQueue();
|
|
203
|
+
// Start dequeue operation that will wait for an item
|
|
204
|
+
const pendingDequeue = queue.dequeue();
|
|
205
|
+
// Add item after a small delay
|
|
206
|
+
setTimeout(() => {
|
|
207
|
+
queue.enqueue("delayed item");
|
|
208
|
+
}, 10);
|
|
209
|
+
const delayedResult = yield pendingDequeue;
|
|
210
|
+
expect(delayedResult.value).toBe("delayed item");
|
|
211
|
+
expect(delayedResult.done).toBe(false);
|
|
212
|
+
// Check for duplicate dequeue
|
|
213
|
+
const duplicatedResult = yield Promise.race([
|
|
214
|
+
queue.dequeue(),
|
|
215
|
+
new Promise(resolve => setTimeout(resolve, 0, false)),
|
|
216
|
+
]);
|
|
217
|
+
// If duplicatedResult is false, it means the race timed out (expected)
|
|
218
|
+
// If it's an IteratorResult, it should not have the same value
|
|
219
|
+
if (duplicatedResult !== false) {
|
|
220
|
+
expect(duplicatedResult.value).not.toBe("delayed item");
|
|
221
|
+
}
|
|
222
|
+
}));
|
|
223
|
+
});
|
|
224
|
+
describe("edge cases and error handling", () => {
|
|
225
|
+
it("enqueue after close test", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
226
|
+
const queue = new AsyncQueue_1.AsyncQueue();
|
|
227
|
+
queue.close();
|
|
228
|
+
queue.enqueue(1); // Should still work, but dequeue will return done: true
|
|
229
|
+
const result = yield queue.dequeue();
|
|
230
|
+
expect(result.done).toBe(true);
|
|
231
|
+
expect(result.value).toBeUndefined();
|
|
232
|
+
}));
|
|
233
|
+
it("multiple close calls test", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
234
|
+
const queue = new AsyncQueue_1.AsyncQueue();
|
|
235
|
+
queue.close();
|
|
236
|
+
queue.close(); // Second close should not cause issues
|
|
237
|
+
const result = yield queue.dequeue();
|
|
238
|
+
expect(result.done).toBe(true);
|
|
239
|
+
expect(result.value).toBeUndefined();
|
|
240
|
+
}));
|
|
241
|
+
it("waitUntilEmpty with multiple calls test", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
242
|
+
const queue = new AsyncQueue_1.AsyncQueue();
|
|
243
|
+
queue.enqueue(1);
|
|
244
|
+
// Create multiple waitUntilEmpty promises
|
|
245
|
+
const waitPromises = [queue.waitUntilEmpty(), queue.waitUntilEmpty()];
|
|
246
|
+
// Dequeue the value
|
|
247
|
+
yield queue.dequeue();
|
|
248
|
+
// All promises should resolve
|
|
249
|
+
yield Promise.all(waitPromises);
|
|
250
|
+
}));
|
|
251
|
+
it("concurrent enqueue and dequeue test", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
252
|
+
const queue = new AsyncQueue_1.AsyncQueue();
|
|
253
|
+
const results = [];
|
|
254
|
+
// Start multiple dequeue operations
|
|
255
|
+
const dequeuePromises = Array.from({ length: 5 }).fill(0).map(() => __awaiter(void 0, void 0, void 0, function* () { return queue.dequeue(); }));
|
|
256
|
+
// Enqueue values with small delays
|
|
257
|
+
for (let i = 0; i < 5; i++) {
|
|
258
|
+
setTimeout(() => {
|
|
259
|
+
queue.enqueue(i);
|
|
260
|
+
}, i * 10);
|
|
261
|
+
}
|
|
262
|
+
// Wait for all dequeue operations to complete
|
|
263
|
+
const dequeuedResults = yield Promise.all(dequeuePromises);
|
|
264
|
+
// Collect values
|
|
265
|
+
dequeuedResults.forEach((result) => {
|
|
266
|
+
if (result.value !== undefined) {
|
|
267
|
+
results.push(result.value);
|
|
268
|
+
}
|
|
269
|
+
});
|
|
270
|
+
// Check that all values were dequeued
|
|
271
|
+
expect(results.length).toBe(5);
|
|
272
|
+
expect(results).toContain(0);
|
|
273
|
+
expect(results).toContain(1);
|
|
274
|
+
expect(results).toContain(2);
|
|
275
|
+
expect(results).toContain(3);
|
|
276
|
+
expect(results).toContain(4);
|
|
277
|
+
}));
|
|
278
|
+
});
|
|
279
|
+
});
|
|
280
|
+
//# sourceMappingURL=AsyncQueue.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AsyncQueue.spec.js","sourceRoot":"","sources":["../../src/utils/AsyncQueue.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const MPSC_1 = require("./MPSC");
|
|
13
|
+
describe("the MPSC", () => {
|
|
14
|
+
describe("basic functionality", () => {
|
|
15
|
+
it("basic MPSC functionality test", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
16
|
+
const mpsc = new MPSC_1.MPSC();
|
|
17
|
+
const reader = mpsc.consumer.getReader();
|
|
18
|
+
// Produce values
|
|
19
|
+
mpsc.produce(10);
|
|
20
|
+
mpsc.produce(20);
|
|
21
|
+
mpsc.produce(30);
|
|
22
|
+
const read1 = yield reader.read();
|
|
23
|
+
const read2 = yield reader.read();
|
|
24
|
+
const read3 = yield reader.read();
|
|
25
|
+
expect(read1.value).toBe(10);
|
|
26
|
+
expect(read1.done).toBe(false);
|
|
27
|
+
expect(read2.value).toBe(20);
|
|
28
|
+
expect(read2.done).toBe(false);
|
|
29
|
+
expect(read3.value).toBe(30);
|
|
30
|
+
expect(read3.done).toBe(false);
|
|
31
|
+
}));
|
|
32
|
+
it("close functionality test", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
33
|
+
const mpsc = new MPSC_1.MPSC();
|
|
34
|
+
const reader = mpsc.consumer.getReader();
|
|
35
|
+
mpsc.produce(10);
|
|
36
|
+
mpsc.close();
|
|
37
|
+
yield reader.read();
|
|
38
|
+
expect(mpsc.done()).toBe(true);
|
|
39
|
+
}));
|
|
40
|
+
it("multiple producers scenario test", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
41
|
+
const multiMpsc = new MPSC_1.MPSC();
|
|
42
|
+
const multiReader = multiMpsc.consumer.getReader();
|
|
43
|
+
// Simulate multiple producers
|
|
44
|
+
for (let i = 1; i <= 5; i++) {
|
|
45
|
+
multiMpsc.produce(`producer-${i}`);
|
|
46
|
+
}
|
|
47
|
+
// Read all values
|
|
48
|
+
const multiResults = [];
|
|
49
|
+
for (let i = 0; i < 5; i++) {
|
|
50
|
+
const { value } = yield multiReader.read();
|
|
51
|
+
if (value != null) {
|
|
52
|
+
multiResults.push(value);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
expect(multiResults.length).toBe(5);
|
|
56
|
+
expect(multiResults).toContain("producer-1");
|
|
57
|
+
expect(multiResults).toContain("producer-2");
|
|
58
|
+
expect(multiResults).toContain("producer-3");
|
|
59
|
+
expect(multiResults).toContain("producer-4");
|
|
60
|
+
expect(multiResults).toContain("producer-5");
|
|
61
|
+
multiMpsc.close();
|
|
62
|
+
const multiAfterClose = yield multiReader.read();
|
|
63
|
+
expect(multiAfterClose.done).toBe(true);
|
|
64
|
+
}));
|
|
65
|
+
it("reading before producing test", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
66
|
+
const delayMpsc = new MPSC_1.MPSC();
|
|
67
|
+
const delayReader = delayMpsc.consumer.getReader();
|
|
68
|
+
// Start reading before producing
|
|
69
|
+
const readPromise = delayReader.read();
|
|
70
|
+
// Produce after a small delay
|
|
71
|
+
setTimeout(() => {
|
|
72
|
+
delayMpsc.produce(42);
|
|
73
|
+
}, 10);
|
|
74
|
+
const delayResult = yield readPromise;
|
|
75
|
+
expect(delayResult.value).toBe(42);
|
|
76
|
+
expect(delayResult.done).toBe(false);
|
|
77
|
+
delayMpsc.close();
|
|
78
|
+
}));
|
|
79
|
+
it("producer-first, then consumer test", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
80
|
+
const laterMpsc = new MPSC_1.MPSC();
|
|
81
|
+
// Produce values first
|
|
82
|
+
laterMpsc.produce("first");
|
|
83
|
+
laterMpsc.produce("second");
|
|
84
|
+
laterMpsc.produce("third");
|
|
85
|
+
// Then get reader and read
|
|
86
|
+
const laterReader = laterMpsc.consumer.getReader();
|
|
87
|
+
const laterResult1 = yield laterReader.read();
|
|
88
|
+
const laterResult2 = yield laterReader.read();
|
|
89
|
+
const laterResult3 = yield laterReader.read();
|
|
90
|
+
expect(laterResult1.value).toBe("first");
|
|
91
|
+
expect(laterResult1.done).toBe(false);
|
|
92
|
+
expect(laterResult2.value).toBe("second");
|
|
93
|
+
expect(laterResult2.done).toBe(false);
|
|
94
|
+
expect(laterResult3.value).toBe("third");
|
|
95
|
+
expect(laterResult3.done).toBe(false);
|
|
96
|
+
laterMpsc.close();
|
|
97
|
+
}));
|
|
98
|
+
});
|
|
99
|
+
describe("waitClosed functionality", () => {
|
|
100
|
+
it("basic waitClosed functionality test", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
101
|
+
const mpsc = new MPSC_1.MPSC();
|
|
102
|
+
const reader = mpsc.consumer.getReader();
|
|
103
|
+
mpsc.produce("message");
|
|
104
|
+
const readResult = yield reader.read();
|
|
105
|
+
expect(readResult.value).toBe("message");
|
|
106
|
+
expect(readResult.done).toBe(false);
|
|
107
|
+
// Call waitClose then execute close
|
|
108
|
+
const closePromise = mpsc.waitClosed();
|
|
109
|
+
mpsc.close();
|
|
110
|
+
yield closePromise; // Should resolve when closed
|
|
111
|
+
const afterClose = yield reader.read();
|
|
112
|
+
expect(afterClose.done).toBe(true);
|
|
113
|
+
}));
|
|
114
|
+
it("call waitClose on already closed queue test", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
115
|
+
const mpsc2 = new MPSC_1.MPSC();
|
|
116
|
+
mpsc2.close(); // Close first
|
|
117
|
+
const alreadyClosedPromise = mpsc2.waitClosed();
|
|
118
|
+
// Should resolve immediately since already closed
|
|
119
|
+
yield alreadyClosedPromise;
|
|
120
|
+
}));
|
|
121
|
+
it("multiple waitClose calls test", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
122
|
+
const mpsc3 = new MPSC_1.MPSC();
|
|
123
|
+
// Create multiple waitClose promises
|
|
124
|
+
const waitPromises = [mpsc3.waitClosed(), mpsc3.waitClosed(), mpsc3.waitClosed()];
|
|
125
|
+
// All promises should resolve
|
|
126
|
+
mpsc3.close();
|
|
127
|
+
yield Promise.all(waitPromises);
|
|
128
|
+
}));
|
|
129
|
+
it("verify waitClose doesn't block other operations", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
130
|
+
const mpsc4 = new MPSC_1.MPSC();
|
|
131
|
+
const reader4 = mpsc4.consumer.getReader();
|
|
132
|
+
// Call waitClose
|
|
133
|
+
const waitPromise4 = mpsc4.waitClosed();
|
|
134
|
+
// Check if value production and consumption still work
|
|
135
|
+
mpsc4.produce("first");
|
|
136
|
+
mpsc4.produce("second");
|
|
137
|
+
const read1 = yield reader4.read();
|
|
138
|
+
const read2 = yield reader4.read();
|
|
139
|
+
expect(read1.value).toBe("first");
|
|
140
|
+
expect(read1.done).toBe(false);
|
|
141
|
+
expect(read2.value).toBe("second");
|
|
142
|
+
expect(read2.done).toBe(false);
|
|
143
|
+
mpsc4.close();
|
|
144
|
+
yield waitPromise4;
|
|
145
|
+
const afterClose4 = yield reader4.read();
|
|
146
|
+
expect(afterClose4.done).toBe(true);
|
|
147
|
+
}));
|
|
148
|
+
it("waitClose resolution after async close test", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
149
|
+
const mpsc5 = new MPSC_1.MPSC();
|
|
150
|
+
const reader5 = mpsc5.consumer.getReader();
|
|
151
|
+
mpsc5.produce(100);
|
|
152
|
+
// Call waitClose
|
|
153
|
+
const waitPromise5 = mpsc5.waitClosed();
|
|
154
|
+
// Perform async close
|
|
155
|
+
setTimeout(() => {
|
|
156
|
+
mpsc5.close();
|
|
157
|
+
}, 50);
|
|
158
|
+
// Wait for waitClose to resolve
|
|
159
|
+
yield waitPromise5;
|
|
160
|
+
yield reader5.read();
|
|
161
|
+
const afterClose5 = yield reader5.read();
|
|
162
|
+
expect(afterClose5.done).toBe(true);
|
|
163
|
+
}));
|
|
164
|
+
});
|
|
165
|
+
describe("waitUntilEmpty functionality", () => {
|
|
166
|
+
it("waitUntilEmpty test when queue is empty", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
167
|
+
const mpsc = new MPSC_1.MPSC();
|
|
168
|
+
const reader = mpsc.consumer.getReader();
|
|
169
|
+
// Should resolve immediately since queue is empty
|
|
170
|
+
yield mpsc.waitUntilEmpty();
|
|
171
|
+
mpsc.produce(1);
|
|
172
|
+
const readResult = yield reader.read();
|
|
173
|
+
expect(readResult.value).toBe(1);
|
|
174
|
+
expect(readResult.done).toBe(false);
|
|
175
|
+
mpsc.close();
|
|
176
|
+
}));
|
|
177
|
+
it("waitUntilEmpty test when queue is not empty", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
178
|
+
const mpsc = new MPSC_1.MPSC();
|
|
179
|
+
const reader = mpsc.consumer.getReader();
|
|
180
|
+
mpsc.produce(1);
|
|
181
|
+
mpsc.produce(2);
|
|
182
|
+
// waitUntilEmpty should not resolve since queue is not empty
|
|
183
|
+
const waitPromise = mpsc.waitUntilEmpty();
|
|
184
|
+
// Read first value
|
|
185
|
+
const read1 = yield reader.read();
|
|
186
|
+
expect(read1.value).toBe(1);
|
|
187
|
+
// Read second value
|
|
188
|
+
const read2 = yield reader.read();
|
|
189
|
+
expect(read2.value).toBe(2);
|
|
190
|
+
mpsc.close();
|
|
191
|
+
const read3 = yield reader.read();
|
|
192
|
+
expect(read3.done).toBe(true);
|
|
193
|
+
// Now queue is empty, waitUntilEmpty should resolve
|
|
194
|
+
yield waitPromise;
|
|
195
|
+
}));
|
|
196
|
+
it("waitUntilEmpty test on closed queue", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
197
|
+
const mpsc = new MPSC_1.MPSC();
|
|
198
|
+
const reader = mpsc.consumer.getReader();
|
|
199
|
+
mpsc.produce(1);
|
|
200
|
+
mpsc.close();
|
|
201
|
+
// waitUntilEmpty should resolve since queue is closed
|
|
202
|
+
yield mpsc.waitUntilEmpty();
|
|
203
|
+
const readResult = yield reader.read();
|
|
204
|
+
expect(readResult.value).toBe(1);
|
|
205
|
+
expect(readResult.done).toBe(false);
|
|
206
|
+
const afterClose = yield reader.read();
|
|
207
|
+
expect(afterClose.done).toBe(true);
|
|
208
|
+
}));
|
|
209
|
+
});
|
|
210
|
+
describe("done functionality", () => {
|
|
211
|
+
it("done test on unclosed queue", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
212
|
+
const mpsc = new MPSC_1.MPSC();
|
|
213
|
+
expect(mpsc.done()).toBe(false);
|
|
214
|
+
mpsc.produce(1);
|
|
215
|
+
expect(mpsc.done()).toBe(false);
|
|
216
|
+
mpsc.close();
|
|
217
|
+
yield mpsc.consumer.getReader().read();
|
|
218
|
+
expect(mpsc.done()).toBe(true);
|
|
219
|
+
}));
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
//# sourceMappingURL=MPSC.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MPSC.spec.js","sourceRoot":"","sources":["../../src/utils/MPSC.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|