78 lines
2.8 KiB
HTML
78 lines
2.8 KiB
HTML
<!DOCTYPE html>
|
|
<script src='../resources/testharness.js'></script>
|
|
<script src='../resources/testharnessreport.js'></script>
|
|
<script src='reference-implementation/resources/streams-utils.js'></script>
|
|
<script>
|
|
// This is updated till https://github.com/whatwg/streams/commit/4ba861e6f60c248060811830e11271c84b439cc3
|
|
|
|
let ReadableStreamDefaultReader = (new ReadableStream()).getReader().constructor;
|
|
|
|
function fakeWritableStream() {
|
|
return {
|
|
get closed() { return Promise.resolve(); },
|
|
get ready() { return Promise.resolve(); },
|
|
get state() { return 'closed' },
|
|
abort(reason) { return Promise.resolve(); },
|
|
close() { return Promise.resolve(); },
|
|
write(chunk) { return Promise.resolve(); }
|
|
};
|
|
}
|
|
|
|
function realReadableStream() {
|
|
return new ReadableStream();
|
|
}
|
|
|
|
function fakeReadableStream() {
|
|
return {
|
|
cancel: function(reason) { return Promise.resolve(); },
|
|
getReader: function() { return new ReadableStreamDefaultReader(new ReadableStream()); },
|
|
pipeThrough: function(obj, options) { return obj.readable; },
|
|
pipeTo: function() { return Promise.resolve(); },
|
|
tee: function() { return [realReadableStream(), realReadableStream()]; }
|
|
};
|
|
}
|
|
|
|
test(function() {
|
|
var pipeToArguments;
|
|
var thisValue = {
|
|
pipeTo: function() {
|
|
pipeToArguments = arguments;
|
|
}
|
|
};
|
|
|
|
var input = { readable: {}, writable: {} };
|
|
var options = {};
|
|
var 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 works generically on its this and its arguments');
|
|
|
|
test(function() {
|
|
ReadableStream.prototype.pipeTo.call(fakeReadableStream(), fakeWritableStream()); // Check it does not throw.
|
|
}, 'ReadableStream.prototype.pipeTo works generically on its this and its arguments');
|
|
|
|
test(function() {
|
|
var thisValue = null;
|
|
var returnValue = { 'returned from': 'byteLength getter' };
|
|
var 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(function() {
|
|
var thisValue = null;
|
|
var chunk = {
|
|
get byteLength() {
|
|
throw new TypeError('shouldn\'t be called');
|
|
}
|
|
};
|
|
|
|
assert_equals(CountQueuingStrategy.prototype.size.call(thisValue, chunk), 1);
|
|
}, 'CountQueuingStrategy.prototype.size should work generically on its this and its arguments');
|
|
</script>
|