summaryrefslogtreecommitdiff
path: root/cli/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-streaming.js
diff options
context:
space:
mode:
authorYoshiya Hinosawa <stibium121@gmail.com>2023-02-21 00:35:04 +0900
committerGitHub <noreply@github.com>2023-02-20 16:35:04 +0100
commit6915a9b7a701dde0e1078867961c9a91811c1850 (patch)
treee6822f2b8400c7c7941d3cb9ace59842389b5bc9 /cli/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-streaming.js
parenta1cd2a5915c13f6a9b8eafa3807e143a02616bc1 (diff)
test(ext/node): more node compat tests (#17827)
This PR adds the remaining ~650 Node.js compat test cases from std/node. Among these 650 cases, about 130 cases are now failing. These failing cases are prefixed with `TODO:` in `tests/node_compat/config.json`. These will be addressed in later PRs.
Diffstat (limited to 'cli/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-streaming.js')
-rw-r--r--cli/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-streaming.js45
1 files changed, 45 insertions, 0 deletions
diff --git a/cli/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-streaming.js b/cli/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-streaming.js
new file mode 100644
index 000000000..5fc7ece11
--- /dev/null
+++ b/cli/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-streaming.js
@@ -0,0 +1,45 @@
+// deno-fmt-ignore-file
+// deno-lint-ignore-file
+
+// Copyright Joyent and Node contributors. All rights reserved. MIT license.
+// Taken from Node 18.12.1
+// This file is automatically generated by "node/_tools/setup.ts". Do not modify this file manually
+
+'use strict';
+
+// From: https://github.com/w3c/web-platform-tests/blob/fa9436d12c/encoding/textdecoder-streaming.html
+// This is the part that can be run without ICU
+
+require('../common');
+
+const assert = require('assert');
+
+const string =
+ '\x00123ABCabc\x80\xFF\u0100\u1000\uFFFD\uD800\uDC00\uDBFF\uDFFF';
+const octets = {
+ 'utf-8': [
+ 0x00, 0x31, 0x32, 0x33, 0x41, 0x42, 0x43, 0x61, 0x62, 0x63, 0xc2, 0x80,
+ 0xc3, 0xbf, 0xc4, 0x80, 0xe1, 0x80, 0x80, 0xef, 0xbf, 0xbd, 0xf0, 0x90,
+ 0x80, 0x80, 0xf4, 0x8f, 0xbf, 0xbf],
+ 'utf-16le': [
+ 0x00, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x41, 0x00, 0x42, 0x00,
+ 0x43, 0x00, 0x61, 0x00, 0x62, 0x00, 0x63, 0x00, 0x80, 0x00, 0xFF, 0x00,
+ 0x00, 0x01, 0x00, 0x10, 0xFD, 0xFF, 0x00, 0xD8, 0x00, 0xDC, 0xFF, 0xDB,
+ 0xFF, 0xDF]
+};
+
+Object.keys(octets).forEach((encoding) => {
+ for (let len = 1; len <= 5; ++len) {
+ const encoded = octets[encoding];
+ const decoder = new TextDecoder(encoding);
+ let out = '';
+ for (let i = 0; i < encoded.length; i += len) {
+ const sub = [];
+ for (let j = i; j < encoded.length && j < i + len; ++j)
+ sub.push(encoded[j]);
+ out += decoder.decode(new Uint8Array(sub), { stream: true });
+ }
+ out += decoder.decode();
+ assert.strictEqual(out, string);
+ }
+});