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
72 lines
2.6 KiB
JavaScript
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');
|