From eb14bed4e034c2845eab652c05d561c50383da49 Mon Sep 17 00:00:00 2001 From: anji Date: Wed, 24 Apr 2019 12:49:21 -0400 Subject: [PATCH 01/14] created file --- packages/ash/assembly/bin/head.ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 packages/ash/assembly/bin/head.ts diff --git a/packages/ash/assembly/bin/head.ts b/packages/ash/assembly/bin/head.ts new file mode 100644 index 0000000..e69de29 From 192f6155e7b697d717c7651b831b31f609102159 Mon Sep 17 00:00:00 2001 From: alambe13 Date: Wed, 24 Apr 2019 13:11:46 -0400 Subject: [PATCH 02/14] fixes #19 --- types/assembly/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/assembly/index.d.ts b/types/assembly/index.d.ts index 4409f1f..41f15f3 100644 --- a/types/assembly/index.d.ts +++ b/types/assembly/index.d.ts @@ -1549,7 +1549,7 @@ declare class Float64Array extends TypedArray {} /** Class representing a sequence of values of type `T`. */ declare class Array { static isArray(value: any): value is Array; - + buffer_: ArrayBuffer; [key: number]: T; /** Current length of the array. */ length: i32; From 753d97532c51b88f1af844359069717f76734957 Mon Sep 17 00:00:00 2001 From: alambe13 Date: Wed, 24 Apr 2019 13:14:21 -0400 Subject: [PATCH 03/14] fixes #19 --- packages/ash/assembly/bin/head.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/packages/ash/assembly/bin/head.ts b/packages/ash/assembly/bin/head.ts index e69de29..22b1967 100644 --- a/packages/ash/assembly/bin/head.ts +++ b/packages/ash/assembly/bin/head.ts @@ -0,0 +1,17 @@ +import {StringUtils} from "../../../assemblyscript/assembly/wasa/mock" +//creates string from array + + +export function main(args: string[]): void { + let fd = fs.open(args[1]); + + let arr: Array = new Array(512); + fs.read(fd, arr); + + let str = StringUtils.fromCString(changetype(arr.buffer_)); + let lines = str.split('\n'); + + for (let i = 0; i < 10; i++) { + Console.log(lines[i]); + } +} From 1b541027e0a24206ee5b354ce91d8214c17c8dd5 Mon Sep 17 00:00:00 2001 From: Willem Wyndham Date: Wed, 15 May 2019 12:17:59 -0400 Subject: [PATCH 04/14] Updated to master Fixed to use with new interface. Also it currently fails and needs to be finished. Perhaps add a flag argument for how many lines. --- packages/ash/assembly/__tests__/head.spec.ts | 33 ++++++++++++++++++++ packages/ash/assembly/bin/head.ts | 22 ++++++------- 2 files changed, 44 insertions(+), 11 deletions(-) create mode 100644 packages/ash/assembly/__tests__/head.spec.ts diff --git a/packages/ash/assembly/__tests__/head.spec.ts b/packages/ash/assembly/__tests__/head.spec.ts new file mode 100644 index 0000000..4abab3f --- /dev/null +++ b/packages/ash/assembly/__tests__/head.spec.ts @@ -0,0 +1,33 @@ +import { main as head } from "../bin/head"; +import { stdout, stderr } from './fixtures'; + + +describe("head", (): void => { + + beforeEach((): void => { + stdout.reset() + Console.stdout.erase() //Erases and resets + stderr.reset(); + Console.stderr.erase() //Erases and resets + CommandLine.reset(); + CommandLine.push("head"); + }); + + it("should print 10 lines by default", (): void => { + CommandLine.push("/numbers")//See ./simple_fs.ts + head(CommandLine.all()) + let str = "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n"; + log(stdout.readString().result) + stdout.reset(); + expect(Console.stdout.tell()).toBe(str.lengthUTF8 - 1, "Two extra characters for space and \\n") + expect(stdout.readString().result).toStrictEqual(str); + }); + + it("should write to stderr if file not found", () => { + CommandLine.push("/doesnotexist"); + head(CommandLine.all()) + expect(Console.stderr.tell()).toBeGreaterThan(0); + expect(stderr.readString().result).toStrictEqual("head: /doesnotexist: No such file or directory\n") + }); + +}) diff --git a/packages/ash/assembly/bin/head.ts b/packages/ash/assembly/bin/head.ts index 22b1967..3c950db 100644 --- a/packages/ash/assembly/bin/head.ts +++ b/packages/ash/assembly/bin/head.ts @@ -1,17 +1,17 @@ -import {StringUtils} from "../../../assemblyscript/assembly/wasa/mock" -//creates string from array export function main(args: string[]): void { - let fd = fs.open(args[1]); - - let arr: Array = new Array(512); - fs.read(fd, arr); - - let str = StringUtils.fromCString(changetype(arr.buffer_)); - let lines = str.split('\n'); - + let res = fs.openFile(args[1]); + if (res.failed) { + //print `head: file: No such file or directory + return; + } + let file = res.result; for (let i = 0; i < 10; i++) { - Console.log(lines[i]); + let line = file.readLine(); + if (line.failed) { + break; + } + Console.write(line.result); } } From 153d385f271403c1c59042fb53caa51c4515f554 Mon Sep 17 00:00:00 2001 From: Yoni Rawson Date: Wed, 15 May 2019 14:47:20 -0400 Subject: [PATCH 05/14] initial commit --- packages/ash/assembly/__tests__/nl.spec.ts | 0 packages/ash/assembly/bin/nl.ts | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 packages/ash/assembly/__tests__/nl.spec.ts create mode 100644 packages/ash/assembly/bin/nl.ts diff --git a/packages/ash/assembly/__tests__/nl.spec.ts b/packages/ash/assembly/__tests__/nl.spec.ts new file mode 100644 index 0000000..e69de29 diff --git a/packages/ash/assembly/bin/nl.ts b/packages/ash/assembly/bin/nl.ts new file mode 100644 index 0000000..e69de29 From 79b727d591072114c780472dd97e379242fe15ca Mon Sep 17 00:00:00 2001 From: Yoni Rawson Date: Wed, 15 May 2019 18:51:42 -0400 Subject: [PATCH 06/14] first attempt --- packages/ash/assembly/__tests__/nl.spec.ts | 33 ++++++++++++++++++++++ packages/ash/assembly/bin/nl.ts | 21 ++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/packages/ash/assembly/__tests__/nl.spec.ts b/packages/ash/assembly/__tests__/nl.spec.ts index e69de29..cbb2982 100644 --- a/packages/ash/assembly/__tests__/nl.spec.ts +++ b/packages/ash/assembly/__tests__/nl.spec.ts @@ -0,0 +1,33 @@ +import { main as nl } from "../bin/nl"; +import { stdout, stderr } from './fixtures'; + + +describe("nl", (): void => { + beforeEach((): void => { + stdout.reset() + Console.stdout.erase() //Erases and resets + stderr.reset(); + Console.stderr.erase() //Erases and resets + CommandLine.reset(); + CommandLine.push("nl"); + }); + + it("should print 10 lines by default", (): void => { + CommandLine.push("/numbers")//See ./simple_fs.ts + nl(CommandLine.all()) + let str = " 1 0\n 2 1\n 3 2\n 4 3\n 5 4\n 6 5\n" + + " 7 6\n 8 7\n 9 8\n 10 9\n 11 10\n 12 11\n 13 12\n" + + " 14 13\n 15 14\n 16 15\n 17 16\n 18 17\n 19 18\n 20 19\n"; + log(stdout.readString().result) + stdout.reset(); + expect(Console.stdout.tell()).toBe(str.lengthUTF8 - 1, "Two extra characters for space and \\n") + expect(stdout.readString().result).toStrictEqual(str); + }); + + it("should write to stderr if file not found", () => { + CommandLine.push("/doesnotexist"); + nl(CommandLine.all()) + expect(Console.stderr.tell()).toBeGreaterThan(0); + expect(stderr.readString().result).toStrictEqual("nl: /doesnotexist: No such file or directory\n") + }); +}) \ No newline at end of file diff --git a/packages/ash/assembly/bin/nl.ts b/packages/ash/assembly/bin/nl.ts index e69de29..7fa9a1a 100644 --- a/packages/ash/assembly/bin/nl.ts +++ b/packages/ash/assembly/bin/nl.ts @@ -0,0 +1,21 @@ +export function main(args: string[]): void { + let res = fs.openFile(args[1]); + if (res.error) { + log(`head: file: No such file or directory`); + return; + } + let file = res.result; + let line = file.readLine(); + var num = 1; + + if (line.failed) { + return; + } + while (!line.failed) { + let intro: string = ` ${num} `; + + Console.write(intro.concat(line.result)); + line = file.readLine(); + num++; + } +} From 317a53ac15a0234d2491c1404ebc32b978613a6f Mon Sep 17 00:00:00 2001 From: Willem Wyndham Date: Thu, 16 May 2019 11:17:18 -0400 Subject: [PATCH 07/14] Added num.toString Also the test file didn't have a newline at the end. --- packages/ash/assembly/__tests__/nl.spec.ts | 2 +- packages/ash/assembly/bin/nl.ts | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/ash/assembly/__tests__/nl.spec.ts b/packages/ash/assembly/__tests__/nl.spec.ts index cbb2982..6042d9d 100644 --- a/packages/ash/assembly/__tests__/nl.spec.ts +++ b/packages/ash/assembly/__tests__/nl.spec.ts @@ -17,7 +17,7 @@ describe("nl", (): void => { nl(CommandLine.all()) let str = " 1 0\n 2 1\n 3 2\n 4 3\n 5 4\n 6 5\n" + " 7 6\n 8 7\n 9 8\n 10 9\n 11 10\n 12 11\n 13 12\n" + - " 14 13\n 15 14\n 16 15\n 17 16\n 18 17\n 19 18\n 20 19\n"; + " 14 13\n 15 14\n 16 15\n 17 16\n 18 17\n 19 18\n 20 19"; log(stdout.readString().result) stdout.reset(); expect(Console.stdout.tell()).toBe(str.lengthUTF8 - 1, "Two extra characters for space and \\n") diff --git a/packages/ash/assembly/bin/nl.ts b/packages/ash/assembly/bin/nl.ts index 7fa9a1a..24e81dd 100644 --- a/packages/ash/assembly/bin/nl.ts +++ b/packages/ash/assembly/bin/nl.ts @@ -1,6 +1,7 @@ export function main(args: string[]): void { let res = fs.openFile(args[1]); if (res.error) { + //This is just the log for testing need to use Console.error log(`head: file: No such file or directory`); return; } @@ -12,7 +13,9 @@ export function main(args: string[]): void { return; } while (!line.failed) { - let intro: string = ` ${num} `; + log(line.result + "-") + //@ts-ignore Integer does have to string method. + let intro: string = " " + num.toString() + " "; Console.write(intro.concat(line.result)); line = file.readLine(); From 2ad29e65e845d8b488c43cf3e1de13581e83e753 Mon Sep 17 00:00:00 2001 From: Yoni Rawson Date: Thu, 16 May 2019 12:09:22 -0400 Subject: [PATCH 08/14] passing second test --- packages/ash/assembly/bin/nl.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/ash/assembly/bin/nl.ts b/packages/ash/assembly/bin/nl.ts index 24e81dd..9854309 100644 --- a/packages/ash/assembly/bin/nl.ts +++ b/packages/ash/assembly/bin/nl.ts @@ -2,18 +2,19 @@ export function main(args: string[]): void { let res = fs.openFile(args[1]); if (res.error) { //This is just the log for testing need to use Console.error - log(`head: file: No such file or directory`); + Console.error("nl: " + args[1] + ": No such file or directory"); + // log(`head: file: No such file or directory`); return; } let file = res.result; let line = file.readLine(); - var num = 1; + let num = 1; + Console.stdin.reset(); if (line.failed) { return; } while (!line.failed) { - log(line.result + "-") //@ts-ignore Integer does have to string method. let intro: string = " " + num.toString() + " "; From 85a84f535c587b7c4ada6d7b7317f0c81bbac428 Mon Sep 17 00:00:00 2001 From: Willem Wyndham Date: Thu, 16 May 2019 12:20:02 -0400 Subject: [PATCH 09/14] Fix increment when reading line --- packages/assemblyscript/assembly/wasa/mock/utils/index.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/assemblyscript/assembly/wasa/mock/utils/index.ts b/packages/assemblyscript/assembly/wasa/mock/utils/index.ts index 30cd3aa..6aed5d5 100644 --- a/packages/assemblyscript/assembly/wasa/mock/utils/index.ts +++ b/packages/assemblyscript/assembly/wasa/mock/utils/index.ts @@ -28,14 +28,13 @@ export class StringUtils { static fromCStringTilNewLine(cstring: usize, max: usize): string | null { let size: usize = 0; while (!this.terminates(cstring + size) && size < max - 1) { - if (this.isNewLine(cstring + size)) { + if (this.isNewLine(cstring + size++)) { break; } - size++; } if (size == 0) { return null } - return String.fromUTF8(cstring, size + 1); + return String.fromUTF8(cstring, size); } } \ No newline at end of file From 36c5d0180c679ee75f0493b4f564be782590ee26 Mon Sep 17 00:00:00 2001 From: Yoni Rawson Date: Thu, 16 May 2019 13:07:02 -0400 Subject: [PATCH 10/14] word test --- packages/ash/assembly/__tests__/nl.spec.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/ash/assembly/__tests__/nl.spec.ts b/packages/ash/assembly/__tests__/nl.spec.ts index 6042d9d..2574490 100644 --- a/packages/ash/assembly/__tests__/nl.spec.ts +++ b/packages/ash/assembly/__tests__/nl.spec.ts @@ -12,18 +12,27 @@ describe("nl", (): void => { CommandLine.push("nl"); }); - it("should print 10 lines by default", (): void => { + it("with numbers", (): void => { CommandLine.push("/numbers")//See ./simple_fs.ts nl(CommandLine.all()) let str = " 1 0\n 2 1\n 3 2\n 4 3\n 5 4\n 6 5\n" + " 7 6\n 8 7\n 9 8\n 10 9\n 11 10\n 12 11\n 13 12\n" + " 14 13\n 15 14\n 16 15\n 17 16\n 18 17\n 19 18\n 20 19"; - log(stdout.readString().result) stdout.reset(); expect(Console.stdout.tell()).toBe(str.lengthUTF8 - 1, "Two extra characters for space and \\n") expect(stdout.readString().result).toStrictEqual(str); }); + it("with words", () => { + CommandLine.push("/home/bob/documents/secret.txt"); + let str = " 1 For my eyes only.\n 2 No one else" + nl(CommandLine.all()); + log(stdout.readString().result) + stdout.reset(); + expect(Console.stdout.tell()).toBe(str.lengthUTF8 - 1, "Two extra characters for space and \\n"); + expect(stdout.readString().result).toStrictEqual(str); + }) + it("should write to stderr if file not found", () => { CommandLine.push("/doesnotexist"); nl(CommandLine.all()) From cbfce465a739683cfa0d2dc60113179f88417655 Mon Sep 17 00:00:00 2001 From: Willem Wyndham Date: Thu, 16 May 2019 15:08:09 -0400 Subject: [PATCH 11/14] Look at the test output --- packages/ash/assembly/__tests__/nl.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ash/assembly/__tests__/nl.spec.ts b/packages/ash/assembly/__tests__/nl.spec.ts index 2574490..2803ceb 100644 --- a/packages/ash/assembly/__tests__/nl.spec.ts +++ b/packages/ash/assembly/__tests__/nl.spec.ts @@ -29,8 +29,8 @@ describe("nl", (): void => { nl(CommandLine.all()); log(stdout.readString().result) stdout.reset(); - expect(Console.stdout.tell()).toBe(str.lengthUTF8 - 1, "Two extra characters for space and \\n"); expect(stdout.readString().result).toStrictEqual(str); + expect(Console.stdout.tell()).toBe(str.lengthUTF8 - 1, "Two extra characters for space and \\n"); }) it("should write to stderr if file not found", () => { From e51e387d4f7c87ccb31066b5cbc696bc8db38806 Mon Sep 17 00:00:00 2001 From: Yoni Rawson Date: Thu, 16 May 2019 17:29:32 -0400 Subject: [PATCH 12/14] added option n for no line numbering --- packages/ash/assembly/__tests__/nl.spec.ts | 26 ++++++++++++++++++-- packages/ash/assembly/__tests__/simple_fs.ts | 3 ++- packages/ash/assembly/bin/nl.ts | 23 ++++++++++++----- 3 files changed, 43 insertions(+), 9 deletions(-) diff --git a/packages/ash/assembly/__tests__/nl.spec.ts b/packages/ash/assembly/__tests__/nl.spec.ts index 2803ceb..8ddc387 100644 --- a/packages/ash/assembly/__tests__/nl.spec.ts +++ b/packages/ash/assembly/__tests__/nl.spec.ts @@ -25,9 +25,8 @@ describe("nl", (): void => { it("with words", () => { CommandLine.push("/home/bob/documents/secret.txt"); - let str = " 1 For my eyes only.\n 2 No one else" + let str = " 1 For my eyes only.\n 2 No one else" nl(CommandLine.all()); - log(stdout.readString().result) stdout.reset(); expect(stdout.readString().result).toStrictEqual(str); expect(Console.stdout.tell()).toBe(str.lengthUTF8 - 1, "Two extra characters for space and \\n"); @@ -39,4 +38,27 @@ describe("nl", (): void => { expect(Console.stderr.tell()).toBeGreaterThan(0); expect(stderr.readString().result).toStrictEqual("nl: /doesnotexist: No such file or directory\n") }); + + it("options - t", () => { + CommandLine.push("-b") + CommandLine.push("t") + CommandLine.push("/home/bob/documents/secret.txt"); + let str = " 1 For my eyes only.\n 2 No one else" + nl(CommandLine.all()); + stdout.reset(); + expect(stdout.readString().result).toStrictEqual(str); + expect(Console.stdout.tell()).toBe(str.lengthUTF8 - 1, "Two extra characters for space and \\n"); + }) + + it("options - n", () => { + CommandLine.push("-b") + CommandLine.push("n") + CommandLine.push("/home/bob/documents/secret.txt") + nl(CommandLine.all()) + stdout.reset() + let str = " For my eyes only.\n No one else" + expect(stdout.readString().result).toStrictEqual(str); + expect(Console.stdout.tell()).toBe(str.lengthUTF8 - 1, "Two extra characters for space and \\n"); + }) + }) \ No newline at end of file diff --git a/packages/ash/assembly/__tests__/simple_fs.ts b/packages/ash/assembly/__tests__/simple_fs.ts index 5f4d797..ec42e6b 100644 --- a/packages/ash/assembly/__tests__/simple_fs.ts +++ b/packages/ash/assembly/__tests__/simple_fs.ts @@ -16,6 +16,7 @@ export const fs_str = `\ }\ }\ },\ - "numbers": "0\\n1\\n2\\n3\\n4\\n5\\n6\\n7\\n8\\n9\\n10\\n11\\n12\\n13\\n14\\n15\\n16\\n17\\n18\\n19"\ + "numbers": "0\\n1\\n2\\n3\\n4\\n5\\n6\\n7\\n8\\n9\\n10\\n11\\n12\\n13\\n14\\n15\\n16\\n17\\n18\\n19",\ + "newLines": "hey\\n\\nhey"\ }\ ` \ No newline at end of file diff --git a/packages/ash/assembly/bin/nl.ts b/packages/ash/assembly/bin/nl.ts index 9854309..3dd82dc 100644 --- a/packages/ash/assembly/bin/nl.ts +++ b/packages/ash/assembly/bin/nl.ts @@ -1,8 +1,14 @@ export function main(args: string[]): void { - let res = fs.openFile(args[1]); + let option: string = ""; + let argnumber = 1; + if (args[1] == "-b") { + option = args[2] + argnumber = 3; + } + let res = fs.openFile(args[argnumber]) if (res.error) { //This is just the log for testing need to use Console.error - Console.error("nl: " + args[1] + ": No such file or directory"); + Console.error("nl: " + args[argnumber] + ": No such file or directory"); // log(`head: file: No such file or directory`); return; } @@ -10,14 +16,19 @@ export function main(args: string[]): void { let line = file.readLine(); let num = 1; Console.stdin.reset(); - if (line.failed) { return; } - while (!line.failed) { - //@ts-ignore Integer does have to string method. - let intro: string = " " + num.toString() + " "; + while (!line.failed) { + let intro = ""; + if (option == "" || option == "t") { + //@ts-ignore Integer does have to string method. + intro = " " + num.toString() + " "; + } + else if (option == "n") { + intro = " " + } Console.write(intro.concat(line.result)); line = file.readLine(); num++; From 4c585310b0b6b1e4a195e26b911154e8fb248455 Mon Sep 17 00:00:00 2001 From: Willem Wyndham Date: Sun, 19 May 2019 16:18:13 -0400 Subject: [PATCH 13/14] Removed head --- packages/ash/assembly/__tests__/head.spec.ts | 33 -------------------- packages/ash/assembly/bin/head.ts | 17 ---------- 2 files changed, 50 deletions(-) delete mode 100644 packages/ash/assembly/__tests__/head.spec.ts delete mode 100644 packages/ash/assembly/bin/head.ts diff --git a/packages/ash/assembly/__tests__/head.spec.ts b/packages/ash/assembly/__tests__/head.spec.ts deleted file mode 100644 index 4abab3f..0000000 --- a/packages/ash/assembly/__tests__/head.spec.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { main as head } from "../bin/head"; -import { stdout, stderr } from './fixtures'; - - -describe("head", (): void => { - - beforeEach((): void => { - stdout.reset() - Console.stdout.erase() //Erases and resets - stderr.reset(); - Console.stderr.erase() //Erases and resets - CommandLine.reset(); - CommandLine.push("head"); - }); - - it("should print 10 lines by default", (): void => { - CommandLine.push("/numbers")//See ./simple_fs.ts - head(CommandLine.all()) - let str = "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n"; - log(stdout.readString().result) - stdout.reset(); - expect(Console.stdout.tell()).toBe(str.lengthUTF8 - 1, "Two extra characters for space and \\n") - expect(stdout.readString().result).toStrictEqual(str); - }); - - it("should write to stderr if file not found", () => { - CommandLine.push("/doesnotexist"); - head(CommandLine.all()) - expect(Console.stderr.tell()).toBeGreaterThan(0); - expect(stderr.readString().result).toStrictEqual("head: /doesnotexist: No such file or directory\n") - }); - -}) diff --git a/packages/ash/assembly/bin/head.ts b/packages/ash/assembly/bin/head.ts deleted file mode 100644 index 3c950db..0000000 --- a/packages/ash/assembly/bin/head.ts +++ /dev/null @@ -1,17 +0,0 @@ - - -export function main(args: string[]): void { - let res = fs.openFile(args[1]); - if (res.failed) { - //print `head: file: No such file or directory - return; - } - let file = res.result; - for (let i = 0; i < 10; i++) { - let line = file.readLine(); - if (line.failed) { - break; - } - Console.write(line.result); - } -} From bcc7cbccc18348df18aa0f136bd668d2f2ba4ad0 Mon Sep 17 00:00:00 2001 From: Willem Wyndham Date: Sun, 19 May 2019 16:49:59 -0400 Subject: [PATCH 14/14] Fix test by adding`\n` to expected string --- packages/ash/assembly/__tests__/nl.spec.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/ash/assembly/__tests__/nl.spec.ts b/packages/ash/assembly/__tests__/nl.spec.ts index 8ddc387..289bde0 100644 --- a/packages/ash/assembly/__tests__/nl.spec.ts +++ b/packages/ash/assembly/__tests__/nl.spec.ts @@ -17,9 +17,9 @@ describe("nl", (): void => { nl(CommandLine.all()) let str = " 1 0\n 2 1\n 3 2\n 4 3\n 5 4\n 6 5\n" + " 7 6\n 8 7\n 9 8\n 10 9\n 11 10\n 12 11\n 13 12\n" + - " 14 13\n 15 14\n 16 15\n 17 16\n 18 17\n 19 18\n 20 19"; + " 14 13\n 15 14\n 16 15\n 17 16\n 18 17\n 19 18\n 20 19\n"; stdout.reset(); - expect(Console.stdout.tell()).toBe(str.lengthUTF8 - 1, "Two extra characters for space and \\n") + expect(Console.stdout.tell()).toBe(str.lengthUTF8 - 1, "FD offset should be length of string"); expect(stdout.readString().result).toStrictEqual(str); }); @@ -29,7 +29,7 @@ describe("nl", (): void => { nl(CommandLine.all()); stdout.reset(); expect(stdout.readString().result).toStrictEqual(str); - expect(Console.stdout.tell()).toBe(str.lengthUTF8 - 1, "Two extra characters for space and \\n"); + expect(Console.stdout.tell()).toBe(str.lengthUTF8 - 1, "FD offset should be length of string"); }) it("should write to stderr if file not found", () => { @@ -47,7 +47,7 @@ describe("nl", (): void => { nl(CommandLine.all()); stdout.reset(); expect(stdout.readString().result).toStrictEqual(str); - expect(Console.stdout.tell()).toBe(str.lengthUTF8 - 1, "Two extra characters for space and \\n"); + expect(Console.stdout.tell()).toBe(str.lengthUTF8 - 1, "FD offset should be length of string"); }) it("options - n", () => { @@ -58,7 +58,7 @@ describe("nl", (): void => { stdout.reset() let str = " For my eyes only.\n No one else" expect(stdout.readString().result).toStrictEqual(str); - expect(Console.stdout.tell()).toBe(str.lengthUTF8 - 1, "Two extra characters for space and \\n"); + expect(Console.stdout.tell()).toBe(str.lengthUTF8 - 1, "FD offset should be length of string"); }) }) \ No newline at end of file