Files
sousa-gecko/testing/web-platform/tests/encoding/streams/decode-attributes.any.js
T
Anne van Kesteren 47a27e9af8 Bug 2038779 [wpt PR 59794] - Remove ShadowRealm test coverage, a=testonly
Automatic update from web-platform-tests
Remove ShadowRealm test coverage

This intentionally does not make infrastructure or documentation changes, but without implementer support all the ShadowRealm tests add significant noise. Once there is implementer support this can be reverted.

--

wpt-commits: e4a4672e9e607fc2b28e7173b83ce4e38ef53071
wpt-pr: 59794
2026-05-13 04:24:16 +00:00

72 lines
2.6 KiB
JavaScript

// META: global=window,worker
'use strict';
// Verify that constructor arguments are correctly reflected in the attributes.
// Mapping of the first argument to TextDecoderStream to the expected value of
// the encoding attribute. We assume that if this subset works correctly, the
// rest probably work too.
const labelToName = {
'unicode-1-1-utf-8': 'utf-8',
'iso-8859-2': 'iso-8859-2',
'ascii': 'windows-1252',
'utf-16': 'utf-16le'
};
for (const label of Object.keys(labelToName)) {
test(() => {
const stream = new TextDecoderStream(label);
assert_equals(stream.encoding, labelToName[label], 'encoding should match');
}, `encoding attribute should have correct value for '${label}'`);
}
for (const falseValue of [false, 0, '', undefined, null]) {
test(() => {
const stream = new TextDecoderStream('utf-8', { fatal: falseValue });
assert_false(stream.fatal, 'fatal should be false');
}, `setting fatal to '${falseValue}' should set the attribute to false`);
test(() => {
const stream = new TextDecoderStream('utf-8', { ignoreBOM: falseValue });
assert_false(stream.ignoreBOM, 'ignoreBOM should be false');
}, `setting ignoreBOM to '${falseValue}' should set the attribute to false`);
}
for (const trueValue of [true, 1, {}, [], 'yes']) {
test(() => {
const stream = new TextDecoderStream('utf-8', { fatal: trueValue });
assert_true(stream.fatal, 'fatal should be true');
}, `setting fatal to '${trueValue}' should set the attribute to true`);
test(() => {
const stream = new TextDecoderStream('utf-8', { ignoreBOM: trueValue });
assert_true(stream.ignoreBOM, 'ignoreBOM should be true');
}, `setting ignoreBOM to '${trueValue}' should set the attribute to true`);
}
test(() => {
assert_throws_js(RangeError, () => new TextDecoderStream(''),
'the constructor should throw');
}, 'constructing with an invalid encoding should throw');
test(() => {
assert_throws_js(TypeError, () => new TextDecoderStream({
toString() { return {}; }
}), 'the constructor should throw');
}, 'constructing with a non-stringifiable encoding should throw');
test(() => {
assert_throws_js(Error,
() => new TextDecoderStream('utf-8', {
get fatal() { throw new Error(); }
}), 'the constructor should throw');
}, 'a throwing fatal member should cause the constructor to throw');
test(() => {
assert_throws_js(Error,
() => new TextDecoderStream('utf-8', {
get ignoreBOM() { throw new Error(); }
}), 'the constructor should throw');
}, 'a throwing ignoreBOM member should cause the constructor to throw');