diff options
author | Chris Knight <cknight1234@gmail.com> | 2020-03-03 13:56:10 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-03 08:56:10 -0500 |
commit | 3968308886dec239a071503bf09352f893e1da83 (patch) | |
tree | aaec064149e262ccbcd7d3b2827261a315f5a521 /std/node/_fs_dirent_test.ts | |
parent | eafd40feabaf14f9f88748c66fa319519fd69072 (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.ts | 123 |
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" + ); + } +}); |