summaryrefslogtreecommitdiff
path: root/cli/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-utf16-surrogates.js
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-utf16-surrogates.js')
-rw-r--r--cli/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-utf16-surrogates.js63
1 files changed, 63 insertions, 0 deletions
diff --git a/cli/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-utf16-surrogates.js b/cli/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-utf16-surrogates.js
new file mode 100644
index 000000000..afe542dfd
--- /dev/null
+++ b/cli/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-utf16-surrogates.js
@@ -0,0 +1,63 @@
+// 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/39a67e2fff/encoding/textdecoder-utf16-surrogates.html
+// With the twist that we specifically test for Node.js error codes
+
+const common = require('../common');
+
+if (!common.hasIntl)
+ common.skip('missing Intl');
+
+const assert = require('assert');
+
+const bad = [
+ {
+ encoding: 'utf-16le',
+ input: [0x00, 0xd8],
+ expected: '\uFFFD',
+ name: 'lone surrogate lead'
+ },
+ {
+ encoding: 'utf-16le',
+ input: [0x00, 0xdc],
+ expected: '\uFFFD',
+ name: 'lone surrogate trail'
+ },
+ {
+ encoding: 'utf-16le',
+ input: [0x00, 0xd8, 0x00, 0x00],
+ expected: '\uFFFD\u0000',
+ name: 'unmatched surrogate lead'
+ },
+ {
+ encoding: 'utf-16le',
+ input: [0x00, 0xdc, 0x00, 0x00],
+ expected: '\uFFFD\u0000',
+ name: 'unmatched surrogate trail'
+ },
+ {
+ encoding: 'utf-16le',
+ input: [0x00, 0xdc, 0x00, 0xd8],
+ expected: '\uFFFD\uFFFD',
+ name: 'swapped surrogate pair'
+ },
+];
+
+bad.forEach((t) => {
+ assert.throws(
+ () => {
+ new TextDecoder(t.encoding, { fatal: true })
+ .decode(new Uint8Array(t.input));
+ }, {
+ code: 'ERR_ENCODING_INVALID_ENCODED_DATA',
+ name: 'TypeError'
+ }
+ );
+});