mirror of
https://github.com/servo/servo.git
synced 2025-08-09 23:45:35 +01:00
Update web-platform-tests to revision be5419e845d39089ba6dc338c1bd0fa279108317
This commit is contained in:
parent
aa199307c8
commit
2b6f573eb5
3440 changed files with 109438 additions and 41750 deletions
|
@ -0,0 +1,104 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset=utf-8>
|
||||
<title>Blob constructor: endings option</title>
|
||||
<link rel=help href="https://w3c.github.io/FileAPI/#constructorBlob">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script>
|
||||
|
||||
// Windows platforms use CRLF as the native line ending. All others use LF.
|
||||
const crlf = navigator.platform.startsWith('Win');
|
||||
const native_ending = crlf ? '\r\n' : '\n';
|
||||
|
||||
function readBlobAsPromise(blob) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const reader = new FileReader();
|
||||
reader.readAsText(blob);
|
||||
reader.onload = e => resolve(reader.result);
|
||||
reader.onerror = e => reject(reader.error);
|
||||
});
|
||||
}
|
||||
|
||||
[
|
||||
'transparent',
|
||||
'native'
|
||||
].forEach(value => test(t => {
|
||||
assert_class_string(new Blob([], {endings: value}), 'Blob',
|
||||
`Constructor should allow "${value}" endings`);
|
||||
}, `Valid "endings" value: ${JSON.stringify(value)}`));
|
||||
|
||||
[
|
||||
null,
|
||||
'',
|
||||
'invalidEnumValue',
|
||||
'Transparent',
|
||||
'NATIVE',
|
||||
0,
|
||||
{}
|
||||
].forEach(value => test(t => {
|
||||
assert_throws(new TypeError(), () => new Blob([], {endings: value}),
|
||||
'Blob constructor should throw');
|
||||
}, `Invalid "endings" value: ${JSON.stringify(value)}`));
|
||||
|
||||
test(t => {
|
||||
const test_error = {name: 'test'};
|
||||
assert_throws(
|
||||
test_error,
|
||||
() => new Blob([], { get endings() { throw test_error; }}),
|
||||
'Blob constructor should propagate exceptions from "endings" property');
|
||||
}, 'Exception propagation from options');
|
||||
|
||||
test(t => {
|
||||
let got = false;
|
||||
new Blob([], { get endings() { got = true; } });
|
||||
assert_true(got, 'The "endings" property was accessed during construction.');
|
||||
}, 'The "endings" options property is used');
|
||||
|
||||
[
|
||||
{name: 'LF', input: '\n', native: native_ending},
|
||||
{name: 'CR', input: '\r', native: native_ending},
|
||||
|
||||
{name: 'CRLF', input: '\r\n', native: native_ending},
|
||||
{name: 'CRCR', input: '\r\r', native: native_ending.repeat(2)},
|
||||
{name: 'LFCR', input: '\n\r', native: native_ending.repeat(2)},
|
||||
{name: 'LFLF', input: '\n\n', native: native_ending.repeat(2)},
|
||||
|
||||
{name: 'CRCRLF', input: '\r\r\n', native: native_ending.repeat(2)},
|
||||
{name: 'CRLFLF', input: '\r\n\n', native: native_ending.repeat(2)},
|
||||
{name: 'CRLFCR', input: '\r\n\r\n', native: native_ending.repeat(2)},
|
||||
|
||||
{name: 'CRLFCRLF', input: '\r\n\r\n', native: native_ending.repeat(2)},
|
||||
{name: 'LFCRLFCR', input: '\n\r\n\r', native: native_ending.repeat(3)},
|
||||
|
||||
].forEach(testCase => {
|
||||
promise_test(async t => {
|
||||
const blob = new Blob([testCase.input]);
|
||||
assert_equals(
|
||||
await readBlobAsPromise(blob), testCase.input,
|
||||
'Newlines should not change with endings unspecified');
|
||||
}, `Input ${testCase.name} with endings unspecified`);
|
||||
|
||||
promise_test(async t => {
|
||||
const blob = new Blob([testCase.input], {endings: 'transparent'});
|
||||
assert_equals(
|
||||
await readBlobAsPromise(blob), testCase.input,
|
||||
'Newlines should not change with endings "transparent"');
|
||||
}, `Input ${testCase.name} with endings 'transparent'`);
|
||||
|
||||
promise_test(async t => {
|
||||
const blob = new Blob([testCase.input], {endings: 'native'});
|
||||
assert_equals(
|
||||
await readBlobAsPromise(blob), testCase.native,
|
||||
'Newlines should match the platform with endings "native"');
|
||||
}, `Input ${testCase.name} with endings 'native'`);
|
||||
});
|
||||
|
||||
promise_test(async t => {
|
||||
const blob = new Blob(['\r', '\n'], {endings: 'native'});
|
||||
const expected = native_ending.repeat(2);
|
||||
assert_equals(
|
||||
await readBlobAsPromise(blob), expected,
|
||||
'CR/LF in adjacent strings should be converted to two platform newlines');
|
||||
}, `CR/LF in adjacent input strings`);
|
||||
|
||||
</script>
|
Loading…
Add table
Add a link
Reference in a new issue