diff options
Diffstat (limited to 'std/async/pool_test.ts')
-rw-r--r-- | std/async/pool_test.ts | 28 |
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"); +}); |