summaryrefslogtreecommitdiff
path: root/std/node/_fs_dirent_test.ts
diff options
context:
space:
mode:
authorChris Knight <cknight1234@gmail.com>2020-03-03 13:56:10 +0000
committerGitHub <noreply@github.com>2020-03-03 08:56:10 -0500
commit3968308886dec239a071503bf09352f893e1da83 (patch)
treeaaec064149e262ccbcd7d3b2827261a315f5a521 /std/node/_fs_dirent_test.ts
parenteafd40feabaf14f9f88748c66fa319519fd69072 (diff)
feat(std/node): add directory classes (#4087)
Diffstat (limited to 'std/node/_fs_dirent_test.ts')
-rw-r--r--std/node/_fs_dirent_test.ts123
1 files changed, 123 insertions, 0 deletions
diff --git a/std/node/_fs_dirent_test.ts b/std/node/_fs_dirent_test.ts
new file mode 100644
index 000000000..acbaffc50
--- /dev/null
+++ b/std/node/_fs_dirent_test.ts
@@ -0,0 +1,123 @@
+const { test } = Deno;
+import { assert, assertEquals, assertThrows } from "../testing/asserts.ts";
+import Dirent from "./_fs_dirent.ts";
+
+class FileInfoMock implements Deno.FileInfo {
+ len = -1;
+ modified = -1;
+ accessed = -1;
+ created = -1;
+ name = "";
+ dev = -1;
+ ino = -1;
+ mode = -1;
+ nlink = -1;
+ uid = -1;
+ gid = -1;
+ rdev = -1;
+ blksize = -1;
+ blocks: number | null = null;
+
+ isFileMock = false;
+ isDirectoryMock = false;
+ isSymlinkMock = false;
+
+ isFile(): boolean {
+ return this.isFileMock;
+ }
+ isDirectory(): boolean {
+ return this.isDirectoryMock;
+ }
+ isSymlink(): boolean {
+ return this.isSymlinkMock;
+ }
+}
+
+test({
+ name: "Block devices are correctly identified",
+ fn() {
+ const fileInfo: FileInfoMock = new FileInfoMock();
+ fileInfo.blocks = 5;
+ assert(new Dirent(fileInfo).isBlockDevice());
+ assert(!new Dirent(fileInfo).isCharacterDevice());
+ }
+});
+
+test({
+ name: "Character devices are correctly identified",
+ fn() {
+ const fileInfo: FileInfoMock = new FileInfoMock();
+ fileInfo.blocks = null;
+ assert(new Dirent(fileInfo).isCharacterDevice());
+ assert(!new Dirent(fileInfo).isBlockDevice());
+ }
+});
+
+test({
+ name: "Directories are correctly identified",
+ fn() {
+ const fileInfo: FileInfoMock = new FileInfoMock();
+ fileInfo.isDirectoryMock = true;
+ fileInfo.isFileMock = false;
+ fileInfo.isSymlinkMock = false;
+ assert(new Dirent(fileInfo).isDirectory());
+ assert(!new Dirent(fileInfo).isFile());
+ assert(!new Dirent(fileInfo).isSymbolicLink());
+ }
+});
+
+test({
+ name: "Files are correctly identified",
+ fn() {
+ const fileInfo: FileInfoMock = new FileInfoMock();
+ fileInfo.isDirectoryMock = false;
+ fileInfo.isFileMock = true;
+ fileInfo.isSymlinkMock = false;
+ assert(!new Dirent(fileInfo).isDirectory());
+ assert(new Dirent(fileInfo).isFile());
+ assert(!new Dirent(fileInfo).isSymbolicLink());
+ }
+});
+
+test({
+ name: "Symlinks are correctly identified",
+ fn() {
+ const fileInfo: FileInfoMock = new FileInfoMock();
+ fileInfo.isDirectoryMock = false;
+ fileInfo.isFileMock = false;
+ fileInfo.isSymlinkMock = true;
+ assert(!new Dirent(fileInfo).isDirectory());
+ assert(!new Dirent(fileInfo).isFile());
+ assert(new Dirent(fileInfo).isSymbolicLink());
+ }
+});
+
+test({
+ name: "File name is correct",
+ fn() {
+ const fileInfo: FileInfoMock = new FileInfoMock();
+ fileInfo.name = "my_file";
+ assertEquals(new Dirent(fileInfo).name, "my_file");
+ }
+});
+
+test({
+ name: "Socket and FIFO pipes aren't yet available",
+ fn() {
+ const fileInfo: FileInfoMock = new FileInfoMock();
+ assertThrows(
+ () => {
+ new Dirent(fileInfo).isFIFO();
+ },
+ Error,
+ "does not yet support"
+ );
+ assertThrows(
+ () => {
+ new Dirent(fileInfo).isSocket();
+ },
+ Error,
+ "does not yet support"
+ );
+ }
+});