@zenfs/core
Version:
A filesystem, anywhere
59 lines (46 loc) • 1.81 kB
text/typescript
// SPDX-License-Identifier: LGPL-3.0-or-later
import assert from 'node:assert/strict';
import { suite, test } from 'node:test';
import { fs } from '../common.js';
suite('Reading', () => {
test('Cannot read a file with an invalid encoding', () => {
assert.throws(() => fs.readFileSync('a.js', 'wrong-encoding' as BufferEncoding));
});
test('Reading past the end of a file should not be an error', async () => {
const handle = await fs.promises.open('a.js', 'r');
const { bytesRead } = await handle.read(new Uint8Array(10), 0, 10, 10000);
assert.equal(bytesRead, 0);
});
const dir = 'test-readfile-unlink';
const file = 'test-readfile-unlink/test.bin';
const data = new Uint8Array(512).fill(42);
test('create directory and write file', async () => {
await fs.promises.mkdir(dir);
await fs.promises.writeFile(file, data);
});
test('read file and verify its content', async () => {
const read: Uint8Array = await fs.promises.readFile(file);
assert.equal(read.length, data.length);
assert.equal(read[0], 42);
});
test('unlink file and remove directory', async () => {
await fs.promises.unlink(file);
await fs.promises.rmdir(dir);
});
const fileName = 'empty.txt';
test('read file', async () => {
assert.equal((await fs.promises.readFile(fileName)).toString(), '');
assert.equal(fs.readFileSync(fileName).toString(), '');
});
test('read file with utf-8 encoding', async () => {
assert.equal(await fs.promises.readFile(fileName, 'utf8'), '');
assert.equal(fs.readFileSync(fileName, 'utf8'), '');
});
test('read file synchronously and verify the content', () => {
const content = fs.readFileSync('elipses.txt', 'utf8');
assert.equal(content.length, 10000);
for (let i = 0; i < content.length; i++) {
assert.equal(content[i], '…');
}
});
});