1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-25 08:39:09 -05:00
denoland-deno/tests/unit/file_test.ts
Matt Mastracci f5e46c9bf2
chore: move cli/tests/ -> tests/ (#22369)
This looks like a massive PR, but it's only a move from cli/tests ->
tests, and updates of relative paths for files.

This is the first step towards aggregate all of the integration test
files under tests/, which will lead to a set of integration tests that
can run without the CLI binary being built.

While we could leave these tests under `cli`, it would require us to
keep a more complex directory structure for the various test runners. In
addition, we have a lot of complexity to ignore various test files in
the `cli` project itself (cargo publish exclusion rules, autotests =
false, etc).

And finally, the `tests/` folder will eventually house the `test_ffi`,
`test_napi` and other testing code, reducing the size of the root repo
directory.

For easier review, the extremely large and noisy "move" is in the first
commit (with no changes -- just a move), while the remainder of the
changes to actual files is in the second commit.
2024-02-10 20:22:13 +00:00

112 lines
2.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
import { assert, assertEquals } from "./test_util.ts";
// deno-lint-ignore no-explicit-any
function testFirstArgument(arg1: any[], expectedSize: number) {
const file = new File(arg1, "name");
assert(file instanceof File);
assertEquals(file.name, "name");
assertEquals(file.size, expectedSize);
assertEquals(file.type, "");
}
Deno.test(function fileEmptyFileBits() {
testFirstArgument([], 0);
});
Deno.test(function fileStringFileBits() {
testFirstArgument(["bits"], 4);
});
Deno.test(function fileUnicodeStringFileBits() {
testFirstArgument(["𝓽𝓮𝔁𝓽"], 16);
});
Deno.test(function fileStringObjectFileBits() {
testFirstArgument([new String("string object")], 13);
});
Deno.test(function fileEmptyBlobFileBits() {
testFirstArgument([new Blob()], 0);
});
Deno.test(function fileBlobFileBits() {
testFirstArgument([new Blob(["bits"])], 4);
});
Deno.test(function fileEmptyFileFileBits() {
testFirstArgument([new File([], "world.txt")], 0);
});
Deno.test(function fileFileFileBits() {
testFirstArgument([new File(["bits"], "world.txt")], 4);
});
Deno.test(function fileArrayBufferFileBits() {
testFirstArgument([new ArrayBuffer(8)], 8);
});
Deno.test(function fileTypedArrayFileBits() {
testFirstArgument([new Uint8Array([0x50, 0x41, 0x53, 0x53])], 4);
});
Deno.test(function fileVariousFileBits() {
testFirstArgument(
[
"bits",
new Blob(["bits"]),
new Blob(),
new Uint8Array([0x50, 0x41]),
new Uint16Array([0x5353]),
new Uint32Array([0x53534150]),
],
16,
);
});
Deno.test(function fileNumberInFileBits() {
testFirstArgument([12], 2);
});
Deno.test(function fileArrayInFileBits() {
testFirstArgument([[1, 2, 3]], 5);
});
Deno.test(function fileObjectInFileBits() {
// "[object Object]"
testFirstArgument([{}], 15);
});
// deno-lint-ignore no-explicit-any
function testSecondArgument(arg2: any, expectedFileName: string) {
const file = new File(["bits"], arg2);
assert(file instanceof File);
assertEquals(file.name, expectedFileName);
}
Deno.test(function fileUsingFileName() {
testSecondArgument("dummy", "dummy");
});
Deno.test(function fileUsingNullFileName() {
testSecondArgument(null, "null");
});
Deno.test(function fileUsingNumberFileName() {
testSecondArgument(1, "1");
});
Deno.test(function fileUsingEmptyStringFileName() {
testSecondArgument("", "");
});
Deno.test(function inspectFile() {
assertEquals(
Deno.inspect(new File([], "file-name.txt")),
`File { name: "file-name.txt", size: 0, type: "" }`,
);
assertEquals(
Deno.inspect(new File([], "file-name.txt", { type: "text/plain" })),
`File { name: "file-name.txt", size: 0, type: "text/plain" }`,
);
});