mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-09 17:31:47 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
|
|
@ -0,0 +1,108 @@
|
|||
'use strict';
|
||||
|
||||
if (self.importScripts) {
|
||||
self.importScripts('../resources/test-utils.js');
|
||||
self.importScripts('/resources/testharness.js');
|
||||
}
|
||||
|
||||
test(() => {
|
||||
|
||||
let pipeToArguments;
|
||||
const thisValue = {
|
||||
pipeTo() {
|
||||
pipeToArguments = arguments;
|
||||
}
|
||||
};
|
||||
|
||||
const input = { readable: {}, writable: {} };
|
||||
const options = {};
|
||||
const result = ReadableStream.prototype.pipeThrough.call(thisValue, input, options);
|
||||
|
||||
assert_array_equals(pipeToArguments, [input.writable, options],
|
||||
'correct arguments should be passed to thisValue.pipeTo');
|
||||
assert_equals(result, input.readable, 'return value should be the passed readable property');
|
||||
|
||||
}, 'ReadableStream.prototype.pipeThrough should work generically on its this and its arguments');
|
||||
|
||||
test(() => {
|
||||
|
||||
const thisValue = {
|
||||
pipeTo() {
|
||||
assert_unreached('pipeTo should not be called');
|
||||
}
|
||||
};
|
||||
|
||||
methodThrows(ReadableStream.prototype, 'pipeThrough', thisValue, [undefined, {}]);
|
||||
methodThrows(ReadableStream.prototype, 'pipeThrough', thisValue, [null, {}]);
|
||||
|
||||
}, 'ReadableStream.prototype.pipeThrough should throw when its first argument is not convertible to an object');
|
||||
|
||||
test(() => {
|
||||
|
||||
const args = [{ readable: {}, writable: {} }, {}];
|
||||
|
||||
methodThrows(ReadableStream.prototype, 'pipeThrough', undefined, args);
|
||||
methodThrows(ReadableStream.prototype, 'pipeThrough', null, args);
|
||||
methodThrows(ReadableStream.prototype, 'pipeThrough', 1, args);
|
||||
methodThrows(ReadableStream.prototype, 'pipeThrough', { pipeTo: 'test' }, args);
|
||||
|
||||
}, 'ReadableStream.prototype.pipeThrough should throw when "this" has no pipeTo method');
|
||||
|
||||
test(() => {
|
||||
const error = new Error('potato');
|
||||
|
||||
const throwingPipeTo = {
|
||||
get pipeTo() {
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
assert_throws(error,
|
||||
() => ReadableStream.prototype.pipeThrough.call(throwingPipeTo, { readable: { }, writable: { } }, {}),
|
||||
'pipeThrough should rethrow the error thrown by pipeTo');
|
||||
|
||||
const thisValue = {
|
||||
pipeTo() {
|
||||
assert_unreached('pipeTo should not be called');
|
||||
}
|
||||
};
|
||||
|
||||
const throwingWritable = {
|
||||
readable: {},
|
||||
get writable() {
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
assert_throws(error,
|
||||
() => ReadableStream.prototype.pipeThrough.call(thisValue, throwingWritable, {}),
|
||||
'pipeThrough should rethrow the error thrown by the writable getter');
|
||||
|
||||
const throwingReadable = {
|
||||
get readable() {
|
||||
throw error;
|
||||
},
|
||||
writable: {}
|
||||
};
|
||||
assert_throws(error,
|
||||
() => ReadableStream.prototype.pipeThrough.call(thisValue, throwingReadable, {}),
|
||||
'pipeThrough should rethrow the error thrown by the readable getter');
|
||||
|
||||
}, 'ReadableStream.prototype.pipeThrough should rethrow errors from accessing pipeTo, readable, or writable');
|
||||
|
||||
test(() => {
|
||||
|
||||
let count = 0;
|
||||
const thisValue = {
|
||||
pipeTo() {
|
||||
++count;
|
||||
}
|
||||
};
|
||||
|
||||
ReadableStream.prototype.pipeThrough.call(thisValue, { readable: {}, writable: {} });
|
||||
ReadableStream.prototype.pipeThrough.call(thisValue, { readable: {} }, {});
|
||||
ReadableStream.prototype.pipeThrough.call(thisValue, { writable: {} }, {});
|
||||
|
||||
assert_equals(count, 3, 'pipeTo was called 3 times');
|
||||
|
||||
}, 'ReadableStream.prototype.pipeThrough should work with missing readable, writable, or options');
|
||||
|
||||
done();
|
||||
Loading…
Add table
Add a link
Reference in a new issue