From bb70e28d1ca1b567a04c8dd175da45cb55b8aa7c Mon Sep 17 00:00:00 2001 From: Gobleizer Date: Mon, 26 Aug 2024 14:47:27 -0700 Subject: [PATCH 1/7] test: initial test set up --- .../typescript/Number.prototype.chr/index.test.ts | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 workspaces/adventure-pack/goodies/typescript/Number.prototype.chr/index.test.ts diff --git a/workspaces/adventure-pack/goodies/typescript/Number.prototype.chr/index.test.ts b/workspaces/adventure-pack/goodies/typescript/Number.prototype.chr/index.test.ts new file mode 100644 index 00000000..6ec7026e --- /dev/null +++ b/workspaces/adventure-pack/goodies/typescript/Number.prototype.chr/index.test.ts @@ -0,0 +1,9 @@ +import { describe, expect, it } from "@jest/globals"; + +import "./index"; + +describe("Number.prototype.chr", () => { + it("convert ASCII codepoint to ASCII string", () => { + expect(Number(65).chr()).toBe("A"); + }); +}); \ No newline at end of file From 2ad7586de4ae68d10661131c29882dea5d5cf920 Mon Sep 17 00:00:00 2001 From: Gobleizer Date: Mon, 26 Aug 2024 15:47:18 -0700 Subject: [PATCH 2/7] test: provides tests for typescript Number chr method --- .../Number.prototype.chr/index.test.ts | Bin 220 -> 2043 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/workspaces/adventure-pack/goodies/typescript/Number.prototype.chr/index.test.ts b/workspaces/adventure-pack/goodies/typescript/Number.prototype.chr/index.test.ts index 6ec7026e942a30bd80759a53b73137f661f92633..b449d7f077a80302e1e31b8d0a2e31617b20267f 100644 GIT binary patch literal 2043 zcmbuAyN=U96o#qu6h|WpM{>L#C$U(q7O^0TG%0{?LCBYrWLEKvHJ*T@C^Sn+O}ovC zf~Vn8_7RvN0ofCqTsBgg(f6PGIc8Zdq=FTsSR|6g=mM5GCdvh-U=0%~G9WK*uux~y zxrn2AK`uHSwviF_VBHasZ-{z=qaqoFE z7*Y$oZ02YXTHu#vupd|)G;@Pz7Uyrcwa&*XSgll;i5vFc8qwgq@7qy4+}(d~4n*Sv zx{Lq#+8WOc%X<3`Xq;aT{DGD6udNHad43t#=+oxd{gO`le&4eDaQE%Doj(tv9sd4j zYqFT-YN^vjnJ~c%Gp&3vpF=W>WRxhZ&$*q7<>^UtSl1s8;|Mv7vxmRM?L@CO9%j*` z+)P&Hbr$h-j=DVN7!)8Ds$eO?f-^J0AR|6Sh?k&dQhe5%zI{O{MN1Vo2V}eZz3QsI zGd7$z#^h_GuU~_q_oH~km@M??Nw*BseS!Sj)!MX-qw#6NYwAK!UF0Kb UN5Y{y9G=+g)p}pRrsU@T8))5UiU0rr delta 14 Ucmey(e}{3xRrXp Date: Wed, 28 Aug 2024 17:09:30 -0700 Subject: [PATCH 3/7] fix: replaces incompatible characters --- .../Number.prototype.chr/index.test.ts | Bin 2043 -> 2049 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/workspaces/adventure-pack/goodies/typescript/Number.prototype.chr/index.test.ts b/workspaces/adventure-pack/goodies/typescript/Number.prototype.chr/index.test.ts index b449d7f077a80302e1e31b8d0a2e31617b20267f..79fb1ed104ca33a60bd9783607d032bb6cc1039a 100644 GIT binary patch delta 82 zcmey(-zc!5hM6hGU~(a&*yPE~f-vT8I8(?#Q!hEANJCRouO#0oRYM7?n2SXOrr4B4 M7|7i0$+C$V0KG{S+W-In delta 69 zcmZn^_|3nehMAFJav`JGlw2ERE&>B1j@2v5oTggn%u}HwmFSuHZuT! CToEn+ From 86a35f3c1352c34bb3bc93c3527221c6c5b577bc Mon Sep 17 00:00:00 2001 From: Gobleizer Date: Sat, 31 Aug 2024 16:05:54 -0700 Subject: [PATCH 4/7] fix: removes repetitive tests --- .../typescript/Number.prototype.chr/index.test.ts | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/workspaces/adventure-pack/goodies/typescript/Number.prototype.chr/index.test.ts b/workspaces/adventure-pack/goodies/typescript/Number.prototype.chr/index.test.ts index 79fb1ed1..a8b4a47a 100644 --- a/workspaces/adventure-pack/goodies/typescript/Number.prototype.chr/index.test.ts +++ b/workspaces/adventure-pack/goodies/typescript/Number.prototype.chr/index.test.ts @@ -24,13 +24,8 @@ describe("Number.prototype.chr", () => { expect(Number(0x1f92a).chr()).toBe("🤪"); }); - it("convert empty coercions to null character", () => { - expect(Number().chr()).toBe("\0"); - expect(Number([]).chr()).toBe("\0"); - expect(Number("").chr()).toBe("\0"); - expect(Number(0).chr()).toBe("\0"); - expect(Number(false).chr()).toBe("\0"); - expect(Number(null).chr()).toBe("\0"); + it("convert zero to null character", () => { + expect((0).chr()).toBe("\0"); }); it("handle numbers outside unicode range by throwing range error", () => { @@ -47,8 +42,5 @@ describe("Number.prototype.chr", () => { it("handles incompatible types by throwing range error", () => { expect(() => Number(undefined).chr()).toThrow(RangeError); expect(() => Number(NaN).chr()).toThrow(RangeError); - expect(() => Number([1, 2]).chr()).toThrow(RangeError); - expect(() => Number("65,55").chr()).toThrow(RangeError); - expect(() => Number({}).chr()).toThrow(RangeError); }); }); From 354da9b4fe25745902e6d964f76e87a608ca5776 Mon Sep 17 00:00:00 2001 From: Gobleizer Date: Sat, 31 Aug 2024 17:00:17 -0700 Subject: [PATCH 5/7] fix: refactor tests for readability --- .../Number.prototype.chr/index.test.ts | 75 ++++++++++++------- 1 file changed, 47 insertions(+), 28 deletions(-) diff --git a/workspaces/adventure-pack/goodies/typescript/Number.prototype.chr/index.test.ts b/workspaces/adventure-pack/goodies/typescript/Number.prototype.chr/index.test.ts index a8b4a47a..f5bf0c0f 100644 --- a/workspaces/adventure-pack/goodies/typescript/Number.prototype.chr/index.test.ts +++ b/workspaces/adventure-pack/goodies/typescript/Number.prototype.chr/index.test.ts @@ -3,41 +3,60 @@ import { describe, expect, it } from "@jest/globals"; import "./index"; describe("Number.prototype.chr", () => { - it("convert ASCII codepoint to ASCII string", () => { - expect(Number(65).chr()).toBe("A"); - expect(Number(10).chr()).toBe("\n"); - expect(Number(61).chr()).toBe("="); - expect(Number(126).chr()).toBe("~"); - expect(Number(32).chr()).toBe(" "); - expect(Number(48).chr()).toBe("0"); - }); + it.each([ + { codepoint: 65, expected: "A" }, + { codepoint: 10, expected: "\n" }, + { codepoint: 61, expected: "=" }, + { codepoint: 126, expected: "~" }, + { codepoint: 32, expected: " " }, + { codepoint: 48, expected: "0" }, + ])( + "convert ASCII codepoint $codepoint to ASCII string $expected", + ({ codepoint, expected }) => { + expect(codepoint.chr()).toBe(expected); + }, + ); - it("convert codepoint to emoji", () => { - expect(Number(129302).chr()).toBe("🤖"); - expect(Number(129412).chr()).toBe("🦄"); - }); + it.each([ + { codepoint: 129302, expected: "🤖" }, + { codepoint: 129412, expected: "🦄" }, + ])( + "convert codepoint $codepoint to emoji $expected", + ({ codepoint, expected }) => { + expect(codepoint.chr()).toBe(expected); + }, + ); - it("convert hex codepoint to string", () => { - expect(Number(0x404).chr()).toBe("Є"); - expect(Number(0x24).chr()).toBe("$"); - expect(Number(0x1f303).chr()).toBe("🌃"); - expect(Number(0x1f92a).chr()).toBe("🤪"); - }); + it.each([ + { codepoint: 0x404, expected: "Є" }, + { codepoint: 0x24, expected: "$" }, + { codepoint: 0x1f303, expected: "🌃" }, + { codepoint: 0x1f92a, expected: "🤪" }, + ])( + "convert hex codepoint $codepoint to string $expected", + ({ codepoint, expected }) => { + expect(codepoint.chr()).toBe(expected); + }, + ); it("convert zero to null character", () => { expect((0).chr()).toBe("\0"); }); - it("handle numbers outside unicode range by throwing range error", () => { - expect(() => Number(-1).chr()).toThrow(RangeError); - expect(() => Number(11120651).chr()).toThrow(RangeError); - expect(() => Number(Infinity).chr()).toThrow(RangeError); - expect(() => Number(-Infinity).chr()).toThrow(RangeError); - expect(() => Number("_").chr()).toThrow(RangeError); - expect(() => Number(1.5).chr()).toThrow(RangeError); - expect(() => Number(1e-2).chr()).toThrow(RangeError); - expect(() => Number(0xffffff).chr()).toThrow(RangeError); - }); + it.each([ + { edgecase: -1 }, + { edgecase: 11120651 }, + { edgecase: Infinity }, + { edgecase: -Infinity }, + { edgecase: 1.5 }, + { edgecase: 1e-2 }, + { edgecase: 0xffffff }, + ])( + "handle number $edgecase outside unicode range by throwing range error", + ({ edgecase }) => { + expect(() => edgecase.chr()).toThrow(RangeError); + }, + ); it("handles incompatible types by throwing range error", () => { expect(() => Number(undefined).chr()).toThrow(RangeError); From 3ffe581d1847f783989ca1e89e3061f5580a829b Mon Sep 17 00:00:00 2001 From: Gobleizer Date: Sat, 31 Aug 2024 18:57:36 -0700 Subject: [PATCH 6/7] fix: break up tests for readability --- .../Number.prototype.chr/index.test.ts | 114 ++++++++++-------- 1 file changed, 61 insertions(+), 53 deletions(-) diff --git a/workspaces/adventure-pack/goodies/typescript/Number.prototype.chr/index.test.ts b/workspaces/adventure-pack/goodies/typescript/Number.prototype.chr/index.test.ts index f5bf0c0f..b0e31ede 100644 --- a/workspaces/adventure-pack/goodies/typescript/Number.prototype.chr/index.test.ts +++ b/workspaces/adventure-pack/goodies/typescript/Number.prototype.chr/index.test.ts @@ -3,63 +3,71 @@ import { describe, expect, it } from "@jest/globals"; import "./index"; describe("Number.prototype.chr", () => { - it.each([ - { codepoint: 65, expected: "A" }, - { codepoint: 10, expected: "\n" }, - { codepoint: 61, expected: "=" }, - { codepoint: 126, expected: "~" }, - { codepoint: 32, expected: " " }, - { codepoint: 48, expected: "0" }, - ])( - "convert ASCII codepoint $codepoint to ASCII string $expected", - ({ codepoint, expected }) => { - expect(codepoint.chr()).toBe(expected); - }, - ); - - it.each([ - { codepoint: 129302, expected: "🤖" }, - { codepoint: 129412, expected: "🦄" }, - ])( - "convert codepoint $codepoint to emoji $expected", - ({ codepoint, expected }) => { - expect(codepoint.chr()).toBe(expected); - }, - ); + describe("convert ASCII codepoint to ASCII string", () => { + it.each([ + { codepoint: 65, expected: "A" }, + { codepoint: 10, expected: "\n" }, + { codepoint: 61, expected: "=" }, + { codepoint: 126, expected: "~" }, + { codepoint: 32, expected: " " }, + { codepoint: 48, expected: "0" }, + ])( + "convert ASCII codepoint $codepoint to ASCII string $expected", + ({ codepoint, expected }) => { + expect(codepoint.chr()).toBe(expected); + }, + ); + }); - it.each([ - { codepoint: 0x404, expected: "Є" }, - { codepoint: 0x24, expected: "$" }, - { codepoint: 0x1f303, expected: "🌃" }, - { codepoint: 0x1f92a, expected: "🤪" }, - ])( - "convert hex codepoint $codepoint to string $expected", - ({ codepoint, expected }) => { - expect(codepoint.chr()).toBe(expected); - }, - ); + describe("convert codepoint to emoji", () => { + it.each([ + { codepoint: 129302, expected: "🤖" }, + { codepoint: 129412, expected: "🦄" }, + ])( + "convert codepoint $codepoint to emoji $expected", + ({ codepoint, expected }) => { + expect(codepoint.chr()).toBe(expected); + }, + ); + }); - it("convert zero to null character", () => { - expect((0).chr()).toBe("\0"); + describe("convert hex codepoint to string", () => { + it.each([ + { codepoint: 0x404, expected: "Є" }, + { codepoint: 0x24, expected: "$" }, + { codepoint: 0x1f303, expected: "🌃" }, + { codepoint: 0x1f92a, expected: "🤪" }, + ])( + "convert hex codepoint $codepoint to string $expected", + ({ codepoint, expected }) => { + expect(codepoint.chr()).toBe(expected); + }, + ); }); - it.each([ - { edgecase: -1 }, - { edgecase: 11120651 }, - { edgecase: Infinity }, - { edgecase: -Infinity }, - { edgecase: 1.5 }, - { edgecase: 1e-2 }, - { edgecase: 0xffffff }, - ])( - "handle number $edgecase outside unicode range by throwing range error", - ({ edgecase }) => { - expect(() => edgecase.chr()).toThrow(RangeError); - }, - ); + describe("handle edgecases appropiately by returning null char or throwing error.", () => { + it("convert zero to null character", () => { + expect((0).chr()).toBe("\0"); + }); + + it.each([ + { edgecase: -1 }, + { edgecase: 11120651 }, + { edgecase: Infinity }, + { edgecase: -Infinity }, + { edgecase: 1.5 }, + { edgecase: 1e-2 }, + { edgecase: 0xffffff }, + ])( + "handle number $edgecase outside unicode range by throwing range error", + ({ edgecase }) => { + expect(() => edgecase.chr()).toThrow(RangeError); + }, + ); - it("handles incompatible types by throwing range error", () => { - expect(() => Number(undefined).chr()).toThrow(RangeError); - expect(() => Number(NaN).chr()).toThrow(RangeError); + it("handles incompatible types by throwing range error", () => { + expect(() => Number(undefined).chr()).toThrow(RangeError); + expect(() => Number(NaN).chr()).toThrow(RangeError); + }); }); }); From cbe71fb9268141c78ad1c082ee9786fcb7031b7b Mon Sep 17 00:00:00 2001 From: Gobleizer Date: Sat, 7 Sep 2024 17:22:44 -0700 Subject: [PATCH 7/7] fix: removes unnecessary test --- .../Number.prototype.chr/index.test.ts | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/workspaces/adventure-pack/goodies/typescript/Number.prototype.chr/index.test.ts b/workspaces/adventure-pack/goodies/typescript/Number.prototype.chr/index.test.ts index b0e31ede..b4c2be91 100644 --- a/workspaces/adventure-pack/goodies/typescript/Number.prototype.chr/index.test.ts +++ b/workspaces/adventure-pack/goodies/typescript/Number.prototype.chr/index.test.ts @@ -3,7 +3,7 @@ import { describe, expect, it } from "@jest/globals"; import "./index"; describe("Number.prototype.chr", () => { - describe("convert ASCII codepoint to ASCII string", () => { + describe("converts ASCII codepoint to ASCII string", () => { it.each([ { codepoint: 65, expected: "A" }, { codepoint: 10, expected: "\n" }, @@ -12,41 +12,41 @@ describe("Number.prototype.chr", () => { { codepoint: 32, expected: " " }, { codepoint: 48, expected: "0" }, ])( - "convert ASCII codepoint $codepoint to ASCII string $expected", + "converts ASCII codepoint $codepoint to ASCII string $expected", ({ codepoint, expected }) => { expect(codepoint.chr()).toBe(expected); }, ); }); - describe("convert codepoint to emoji", () => { + describe("converts codepoint to emoji", () => { it.each([ { codepoint: 129302, expected: "🤖" }, { codepoint: 129412, expected: "🦄" }, ])( - "convert codepoint $codepoint to emoji $expected", + "converts codepoint $codepoint to emoji $expected", ({ codepoint, expected }) => { expect(codepoint.chr()).toBe(expected); }, ); }); - describe("convert hex codepoint to string", () => { + describe("converts hex codepoint to string", () => { it.each([ { codepoint: 0x404, expected: "Є" }, { codepoint: 0x24, expected: "$" }, { codepoint: 0x1f303, expected: "🌃" }, { codepoint: 0x1f92a, expected: "🤪" }, ])( - "convert hex codepoint $codepoint to string $expected", + "converts hex codepoint $codepoint to string $expected", ({ codepoint, expected }) => { expect(codepoint.chr()).toBe(expected); }, ); }); - describe("handle edgecases appropiately by returning null char or throwing error.", () => { - it("convert zero to null character", () => { + describe("handles edgecases appropiately by returning null char or throwing error.", () => { + it("converts zero to null character", () => { expect((0).chr()).toBe("\0"); }); @@ -59,15 +59,14 @@ describe("Number.prototype.chr", () => { { edgecase: 1e-2 }, { edgecase: 0xffffff }, ])( - "handle number $edgecase outside unicode range by throwing range error", + "handles number $edgecase outside unicode range by throwing range error", ({ edgecase }) => { expect(() => edgecase.chr()).toThrow(RangeError); }, ); - it("handles incompatible types by throwing range error", () => { - expect(() => Number(undefined).chr()).toThrow(RangeError); - expect(() => Number(NaN).chr()).toThrow(RangeError); + it("handles incompatible types that resolve to NaN by throwing range error", () => { + expect(() => NaN.chr()).toThrow(RangeError); }); }); });