summaryrefslogtreecommitdiff
path: root/tests/unit_node/_fs/_fs_read_test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit_node/_fs/_fs_read_test.ts')
-rw-r--r--tests/unit_node/_fs/_fs_read_test.ts39
1 files changed, 36 insertions, 3 deletions
diff --git a/tests/unit_node/_fs/_fs_read_test.ts b/tests/unit_node/_fs/_fs_read_test.ts
index 42e8fed73..288e4a57c 100644
--- a/tests/unit_node/_fs/_fs_read_test.ts
+++ b/tests/unit_node/_fs/_fs_read_test.ts
@@ -1,4 +1,5 @@
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
+/// <reference types="npm:@types/node" />
import {
assertEquals,
assertFalse,
@@ -13,21 +14,21 @@ import { closeSync } from "node:fs";
async function readTest(
testData: string,
- buffer: Buffer,
+ buffer: NodeJS.ArrayBufferView,
offset: number,
length: number,
position: number | null = null,
expected: (
fd: number,
bytesRead: number | null,
- data: Buffer | undefined,
+ data: ArrayBufferView | undefined,
) => void,
) {
let fd1 = 0;
await new Promise<{
fd: number;
bytesRead: number | null;
- data: Buffer | undefined;
+ data: ArrayBufferView | undefined;
}>((resolve, reject) => {
open(testData, "r", (err, fd) => {
if (err) reject(err);
@@ -320,3 +321,35 @@ Deno.test({
closeSync(fd);
},
});
+
+Deno.test({
+ name: "accepts non Uint8Array buffer",
+ async fn() {
+ const moduleDir = path.dirname(path.fromFileUrl(import.meta.url));
+ const testData = path.resolve(moduleDir, "testdata", "hello.txt");
+ const buffer = new ArrayBuffer(1024);
+ const buf = new Int8Array(buffer);
+ await readTest(
+ testData,
+ buf,
+ buf.byteOffset,
+ buf.byteLength,
+ null,
+ (_fd, bytesRead, data) => {
+ assertStrictEquals(bytesRead, 11);
+ assertEquals(data instanceof Buffer, true);
+ assertMatch((data as Buffer).toString(), /hello world/);
+ },
+ );
+ const fd = openSync(testData, "r");
+
+ try {
+ const nRead = readSync(fd, buf);
+ const expected = new TextEncoder().encode("hello world");
+
+ assertEquals(buf.slice(0, nRead), new Int8Array(expected.buffer));
+ } finally {
+ closeSync(fd);
+ }
+ },
+});