summaryrefslogtreecommitdiff
path: root/std/node/string_decoder_test.ts
diff options
context:
space:
mode:
authorSteven Guerrero <42647963+Soremwar@users.noreply.github.com>2020-07-14 13:30:03 -0500
committerGitHub <noreply@github.com>2020-07-14 14:30:03 -0400
commitfe8399973a5a1dd8a21cbb6edc88415feb83b2ef (patch)
treeb6c7caa2156bf4694471d913775d2b7bcf7b0d4c /std/node/string_decoder_test.ts
parente5724e61189b01bb373b914fb733139a399ac996 (diff)
feat(std/node): add string_decoder (#6638)
Diffstat (limited to 'std/node/string_decoder_test.ts')
-rw-r--r--std/node/string_decoder_test.ts117
1 files changed, 117 insertions, 0 deletions
diff --git a/std/node/string_decoder_test.ts b/std/node/string_decoder_test.ts
new file mode 100644
index 000000000..69bb8402a
--- /dev/null
+++ b/std/node/string_decoder_test.ts
@@ -0,0 +1,117 @@
+import { assertEquals } from "../testing/asserts.ts";
+import Buffer from "./buffer.ts";
+import { StringDecoder } from "./string_decoder.ts";
+
+Deno.test({
+ name: "String decoder is encoding utf8 correctly",
+ fn() {
+ let decoder;
+
+ decoder = new StringDecoder("utf8");
+ assertEquals(decoder.write(Buffer.from("E1", "hex")), "");
+ assertEquals(decoder.end(), "\ufffd");
+
+ decoder = new StringDecoder("utf8");
+ assertEquals(decoder.write(Buffer.from("E18B", "hex")), "");
+ assertEquals(decoder.end(), "\ufffd");
+
+ decoder = new StringDecoder("utf8");
+ assertEquals(decoder.write(Buffer.from("\ufffd")), "\ufffd");
+ assertEquals(decoder.end(), "");
+
+ decoder = new StringDecoder("utf8");
+ assertEquals(
+ decoder.write(Buffer.from("\ufffd\ufffd\ufffd")),
+ "\ufffd\ufffd\ufffd"
+ );
+ assertEquals(decoder.end(), "");
+
+ decoder = new StringDecoder("utf8");
+ assertEquals(decoder.write(Buffer.from("EFBFBDE2", "hex")), "\ufffd");
+ assertEquals(decoder.end(), "\ufffd");
+
+ decoder = new StringDecoder("utf8");
+ assertEquals(decoder.write(Buffer.from("F1", "hex")), "");
+ assertEquals(decoder.write(Buffer.from("41F2", "hex")), "\ufffdA");
+ assertEquals(decoder.end(), "\ufffd");
+
+ decoder = new StringDecoder("utf8");
+ assertEquals(decoder.text(Buffer.from([0x41]), 2), "");
+ },
+});
+
+Deno.test({
+ name: "String decoder is encoding base64 correctly",
+ fn() {
+ let decoder;
+
+ decoder = new StringDecoder("base64");
+ assertEquals(decoder.write(Buffer.from("E1", "hex")), "4Q==");
+ assertEquals(decoder.end(), "4QAA");
+
+ decoder = new StringDecoder("base64");
+ assertEquals(decoder.write(Buffer.from("E18B", "hex")), "4Ys=");
+ assertEquals(decoder.end(), "4YsA");
+
+ decoder = new StringDecoder("base64");
+ assertEquals(decoder.write(Buffer.from("\ufffd")), "77+9");
+ assertEquals(decoder.end(), "");
+
+ decoder = new StringDecoder("base64");
+ assertEquals(
+ decoder.write(Buffer.from("\ufffd\ufffd\ufffd")),
+ "77+977+977+9"
+ );
+ assertEquals(decoder.end(), "");
+
+ decoder = new StringDecoder("base64");
+ assertEquals(decoder.write(Buffer.from("EFBFBDE2", "hex")), "77+94g==");
+ assertEquals(decoder.end(), "4gAA");
+
+ decoder = new StringDecoder("base64");
+ assertEquals(decoder.write(Buffer.from("F1", "hex")), "8Q==");
+ assertEquals(decoder.write(Buffer.from("41F2", "hex")), "8UHy");
+ assertEquals(decoder.end(), "");
+
+ decoder = new StringDecoder("base64");
+ assertEquals(decoder.text(Buffer.from([0x41]), 2), "QQ==");
+ },
+});
+
+Deno.test({
+ name: "String decoder is encoding hex correctly",
+ fn() {
+ let decoder;
+
+ decoder = new StringDecoder("hex");
+ assertEquals(decoder.write(Buffer.from("E1", "hex")), "e1");
+ assertEquals(decoder.end(), "");
+
+ decoder = new StringDecoder("hex");
+ assertEquals(decoder.write(Buffer.from("E18B", "hex")), "e18b");
+ assertEquals(decoder.end(), "");
+
+ decoder = new StringDecoder("hex");
+ assertEquals(decoder.write(Buffer.from("\ufffd")), "efbfbd");
+ assertEquals(decoder.end(), "");
+
+ decoder = new StringDecoder("hex");
+ assertEquals(
+ decoder.write(Buffer.from("\ufffd\ufffd\ufffd")),
+ "efbfbdefbfbdefbfbd"
+ );
+ assertEquals(decoder.end(), "");
+
+ decoder = new StringDecoder("hex");
+ assertEquals(decoder.write(Buffer.from("EFBFBDE2", "hex")), "efbfbde2");
+ assertEquals(decoder.end(), "");
+
+ decoder = new StringDecoder("hex");
+ assertEquals(decoder.write(Buffer.from("F1", "hex")), "f1");
+ assertEquals(decoder.write(Buffer.from("41F2", "hex")), "41f2");
+ assertEquals(decoder.end(), "");
+
+ decoder = new StringDecoder("hex");
+ assertEquals(decoder.text(Buffer.from([0x41]), 2), "");
+ },
+});