summaryrefslogtreecommitdiff
path: root/std/async/pool_test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'std/async/pool_test.ts')
-rw-r--r--std/async/pool_test.ts28
1 files changed, 26 insertions, 2 deletions
diff --git a/std/async/pool_test.ts b/std/async/pool_test.ts
index 856f4cc0a..81be903ed 100644
--- a/std/async/pool_test.ts
+++ b/std/async/pool_test.ts
@@ -1,6 +1,12 @@
// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
+import { delay } from "./delay.ts";
import { pooledMap } from "./pool.ts";
-import { assert } from "../testing/asserts.ts";
+import {
+ assert,
+ assertEquals,
+ assertStringIncludes,
+ assertThrowsAsync,
+} from "../testing/asserts.ts";
Deno.test("[async] pooledMap", async function (): Promise<void> {
const start = new Date();
@@ -17,4 +23,22 @@ Deno.test("[async] pooledMap", async function (): Promise<void> {
assert(diff < 3000);
});
-export {};
+Deno.test("[async] pooledMap errors", async function (): Promise<void> {
+ async function mapNumber(n: number): Promise<number> {
+ if (n <= 2) {
+ throw new Error(`Bad number: ${n}`);
+ }
+ await delay(100);
+ return n;
+ }
+ const mappedNumbers: number[] = [];
+ const error = await assertThrowsAsync(async () => {
+ for await (const m of pooledMap(3, [1, 2, 3, 4], mapNumber)) {
+ mappedNumbers.push(m);
+ }
+ }, AggregateError) as AggregateError;
+ assertEquals(mappedNumbers, [3]);
+ assertEquals(error.errors.length, 2);
+ assertStringIncludes(error.errors[0].stack, "Error: Bad number: 1");
+ assertStringIncludes(error.errors[1].stack, "Error: Bad number: 2");
+});