mirror of
https://github.com/servo/servo.git
synced 2025-08-23 22:35:33 +01:00
Update web-platform-tests to revision 0d9238c8062f05a55898a0cb60dc0c353794d87a
This commit is contained in:
parent
c80fa33864
commit
7e8624d921
57 changed files with 5290 additions and 266 deletions
|
@ -0,0 +1,107 @@
|
|||
'use strict';
|
||||
|
||||
if (self.importScripts) {
|
||||
self.importScripts('/resources/testharness.js');
|
||||
}
|
||||
|
||||
test(() => {
|
||||
|
||||
new ByteLengthQueuingStrategy({ highWaterMark: 4 });
|
||||
|
||||
}, 'Can construct a ByteLengthQueuingStrategy with a valid high water mark');
|
||||
|
||||
test(() => {
|
||||
|
||||
for (let highWaterMark of [-Infinity, NaN, 'foo', {}, () => {}]) {
|
||||
const strategy = new ByteLengthQueuingStrategy({ highWaterMark });
|
||||
assert_equals(strategy.highWaterMark, highWaterMark, `${highWaterMark} gets set correctly`);
|
||||
}
|
||||
|
||||
}, 'Can construct a ByteLengthQueuingStrategy with any value as its high water mark');
|
||||
|
||||
test(() => {
|
||||
|
||||
const highWaterMark = 1;
|
||||
const highWaterMarkObjectGetter = {
|
||||
get highWaterMark() { return highWaterMark; }
|
||||
};
|
||||
const error = new Error('wow!');
|
||||
const highWaterMarkObjectGetterThrowing = {
|
||||
get highWaterMark() { throw error; }
|
||||
};
|
||||
|
||||
assert_throws({ name: 'TypeError' }, () => new ByteLengthQueuingStrategy(), 'construction fails with undefined');
|
||||
assert_throws({ name: 'TypeError' }, () => new ByteLengthQueuingStrategy(null), 'construction fails with null');
|
||||
assert_throws({ name: 'Error' }, () => new ByteLengthQueuingStrategy(highWaterMarkObjectGetterThrowing),
|
||||
'construction fails with an object with a throwing highWaterMark getter');
|
||||
|
||||
// Should not fail:
|
||||
new ByteLengthQueuingStrategy('potato');
|
||||
new ByteLengthQueuingStrategy({});
|
||||
new ByteLengthQueuingStrategy(highWaterMarkObjectGetter);
|
||||
|
||||
}, 'ByteLengthQueuingStrategy constructor behaves as expected with strange arguments');
|
||||
|
||||
test(() => {
|
||||
|
||||
const size = 1024;
|
||||
const chunk = { byteLength: size };
|
||||
const chunkGetter = {
|
||||
get byteLength() { return size; }
|
||||
};
|
||||
const error = new Error('wow!');
|
||||
const chunkGetterThrowing = {
|
||||
get byteLength() { throw error; }
|
||||
};
|
||||
assert_throws({ name: 'TypeError' }, () => ByteLengthQueuingStrategy.prototype.size(), 'size fails with undefined');
|
||||
assert_throws({ name: 'TypeError' }, () => ByteLengthQueuingStrategy.prototype.size(null), 'size fails with null');
|
||||
assert_equals(ByteLengthQueuingStrategy.prototype.size('potato'), undefined,
|
||||
'size succeeds with undefined with a random non-object type');
|
||||
assert_equals(ByteLengthQueuingStrategy.prototype.size({}), undefined,
|
||||
'size succeeds with undefined with an object without hwm property');
|
||||
assert_equals(ByteLengthQueuingStrategy.prototype.size(chunk), size,
|
||||
'size succeeds with the right amount with an object with a hwm');
|
||||
assert_equals(ByteLengthQueuingStrategy.prototype.size(chunkGetter), size,
|
||||
'size succeeds with the right amount with an object with a hwm getter');
|
||||
assert_throws({ name: 'Error' }, () => ByteLengthQueuingStrategy.prototype.size(chunkGetterThrowing),
|
||||
'size fails with the error thrown by the getter');
|
||||
|
||||
}, 'ByteLengthQueuingStrategy size behaves as expected with strange arguments');
|
||||
|
||||
test(() => {
|
||||
|
||||
const thisValue = null;
|
||||
const returnValue = { 'returned from': 'byteLength getter' };
|
||||
const chunk = {
|
||||
get byteLength() { return returnValue; }
|
||||
};
|
||||
|
||||
assert_equals(ByteLengthQueuingStrategy.prototype.size.call(thisValue, chunk), returnValue);
|
||||
|
||||
}, 'ByteLengthQueuingStrategy.prototype.size should work generically on its this and its arguments');
|
||||
|
||||
test(() => {
|
||||
|
||||
const strategy = new ByteLengthQueuingStrategy({ highWaterMark: 4 });
|
||||
|
||||
assert_object_equals(Object.getOwnPropertyDescriptor(strategy, 'highWaterMark'),
|
||||
{ value: 4, writable: true, enumerable: true, configurable: true },
|
||||
'highWaterMark property should be a data property with the value passed the constructor');
|
||||
assert_equals(typeof strategy.size, 'function');
|
||||
|
||||
}, 'ByteLengthQueuingStrategy instances have the correct properties');
|
||||
|
||||
test(() => {
|
||||
|
||||
const strategy = new ByteLengthQueuingStrategy({ highWaterMark: 4 });
|
||||
assert_equals(strategy.highWaterMark, 4);
|
||||
|
||||
strategy.highWaterMark = 10;
|
||||
assert_equals(strategy.highWaterMark, 10);
|
||||
|
||||
strategy.highWaterMark = 'banana';
|
||||
assert_equals(strategy.highWaterMark, 'banana');
|
||||
|
||||
}, 'ByteLengthQueuingStrategy\'s highWaterMark property can be set to anything');
|
||||
|
||||
done();
|
Loading…
Add table
Add a link
Reference in a new issue