diff options
author | Marcos Casagrande <marcoscvp90@gmail.com> | 2020-04-26 22:25:24 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-26 16:25:24 -0400 |
commit | 26dfd3c110ced12f2bd374de391c2c05e24290d8 (patch) | |
tree | 0e9ece1ff86d5565784a6d6f26b52e93a6c8371a /cli/js/tests | |
parent | f7d1f82796ac49c43d5a0075f86cfd8f83d83889 (diff) |
Add buffer size argument to copy (#4907)
Diffstat (limited to 'cli/js/tests')
-rw-r--r-- | cli/js/tests/io_test.ts | 57 | ||||
-rw-r--r-- | cli/js/tests/unit_tests.ts | 1 |
2 files changed, 58 insertions, 0 deletions
diff --git a/cli/js/tests/io_test.ts b/cli/js/tests/io_test.ts new file mode 100644 index 000000000..5b6e860be --- /dev/null +++ b/cli/js/tests/io_test.ts @@ -0,0 +1,57 @@ +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { unitTest, assertEquals } from "./test_util.ts"; + +const DEFAULT_BUF_SIZE = 32 * 1024; + +type Spy = { calls: number }; + +function repeat(c: string, bytes: number): Uint8Array { + assertEquals(c.length, 1); + const ui8 = new Uint8Array(bytes); + ui8.fill(c.charCodeAt(0)); + return ui8; +} + +function spyRead(obj: Deno.Buffer): Spy { + const spy: Spy = { + calls: 0, + }; + + const orig = obj.read.bind(obj); + + obj.read = (p: Uint8Array): Promise<number | Deno.EOF> => { + spy.calls++; + return orig(p); + }; + + return spy; +} + +unitTest(async function copyWithDefaultBufferSize() { + const xBytes = repeat("b", DEFAULT_BUF_SIZE); + const reader = new Deno.Buffer(xBytes.buffer as ArrayBuffer); + const write = new Deno.Buffer(); + + const readSpy = spyRead(reader); + + const n = await Deno.copy(reader, write); + + assertEquals(n, xBytes.length); + assertEquals(write.length, xBytes.length); + assertEquals(readSpy.calls, 2); // read with DEFAULT_BUF_SIZE bytes + read with 0 bytes +}); + +unitTest(async function copyWithCustomBufferSize() { + const bufSize = 1024; + const xBytes = repeat("b", DEFAULT_BUF_SIZE); + const reader = new Deno.Buffer(xBytes.buffer as ArrayBuffer); + const write = new Deno.Buffer(); + + const readSpy = spyRead(reader); + + const n = await Deno.copy(reader, write, { bufSize }); + + assertEquals(n, xBytes.length); + assertEquals(write.length, xBytes.length); + assertEquals(readSpy.calls, DEFAULT_BUF_SIZE / bufSize + 1); +}); diff --git a/cli/js/tests/unit_tests.ts b/cli/js/tests/unit_tests.ts index 7d7ec4821..74929c934 100644 --- a/cli/js/tests/unit_tests.ts +++ b/cli/js/tests/unit_tests.ts @@ -31,6 +31,7 @@ import "./get_random_values_test.ts"; import "./globals_test.ts"; import "./headers_test.ts"; import "./internals_test.ts"; +import "./io_test.ts"; import "./link_test.ts"; import "./location_test.ts"; import "./make_temp_test.ts"; |