| Index: third_party/WebKit/LayoutTests/http/tests/streams/readable-streams/templated.js
|
| diff --git a/third_party/WebKit/LayoutTests/http/tests/streams/readable-streams/templated.js b/third_party/WebKit/LayoutTests/http/tests/streams/readable-streams/templated.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..6db0429994d453dbfcd2e8347e6fa7efdf20bc4e
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/http/tests/streams/readable-streams/templated.js
|
| @@ -0,0 +1,148 @@
|
| +'use strict';
|
| +
|
| +if (self.importScripts) {
|
| + self.importScripts('/resources/testharness.js');
|
| + self.importScripts('../resources/test-utils.js');
|
| + self.importScripts('../resources/rs-test-templates.js');
|
| +}
|
| +
|
| +// Run the readable stream test templates against readable streams created directly using the constructor
|
| +
|
| +const theError = { name: 'boo!' };
|
| +const chunks = ['a', 'b'];
|
| +
|
| +templatedRSEmpty('ReadableStream (empty)', () => {
|
| + return new ReadableStream();
|
| +});
|
| +
|
| +templatedRSEmptyReader('ReadableStream (empty) reader', () => {
|
| + return streamAndDefaultReader(new ReadableStream());
|
| +});
|
| +
|
| +templatedRSClosed('ReadableStream (closed via call in start)', () => {
|
| + return new ReadableStream({
|
| + start(c) {
|
| + c.close();
|
| + }
|
| + });
|
| +});
|
| +
|
| +templatedRSClosedReader('ReadableStream reader (closed before getting reader)', () => {
|
| + let controller;
|
| + const stream = new ReadableStream({
|
| + start(c) {
|
| + controller = c;
|
| + }
|
| + });
|
| + controller.close();
|
| + const result = streamAndDefaultReader(stream);
|
| + return result;
|
| +});
|
| +
|
| +templatedRSClosedReader('ReadableStream reader (closed after getting reader)', () => {
|
| + let controller;
|
| + const stream = new ReadableStream({
|
| + start(c) {
|
| + controller = c;
|
| + }
|
| + });
|
| + const result = streamAndDefaultReader(stream);
|
| + controller.close();
|
| + return result;
|
| +});
|
| +
|
| +templatedRSClosed('ReadableStream (closed via cancel)', () => {
|
| + const stream = new ReadableStream();
|
| + stream.cancel();
|
| + return stream;
|
| +});
|
| +
|
| +templatedRSClosedReader('ReadableStream reader (closed via cancel after getting reader)', () => {
|
| + const stream = new ReadableStream();
|
| + const result = streamAndDefaultReader(stream);
|
| + result.reader.cancel();
|
| + return result;
|
| +});
|
| +
|
| +templatedRSErrored('ReadableStream (errored via call in start)', () => {
|
| + return new ReadableStream({
|
| + start(c) {
|
| + c.error(theError);
|
| + }
|
| + });
|
| +}, theError);
|
| +
|
| +templatedRSErroredSyncOnly('ReadableStream (errored via call in start)', () => {
|
| + return new ReadableStream({
|
| + start(c) {
|
| + c.error(theError);
|
| + }
|
| + });
|
| +}, theError);
|
| +
|
| +templatedRSErrored('ReadableStream (errored via returning a rejected promise in start)', () => {
|
| + return new ReadableStream({
|
| + start() {
|
| + return Promise.reject(theError);
|
| + }
|
| + });
|
| +}, theError);
|
| +
|
| +templatedRSErroredReader('ReadableStream (errored via returning a rejected promise in start) reader', () => {
|
| + return streamAndDefaultReader(new ReadableStream({
|
| + start() {
|
| + return Promise.reject(theError);
|
| + }
|
| + }));
|
| +}, theError);
|
| +
|
| +templatedRSErroredReader('ReadableStream reader (errored before getting reader)', () => {
|
| + let controller;
|
| + const stream = new ReadableStream({
|
| + start(c) {
|
| + controller = c;
|
| + }
|
| + });
|
| + controller.error(theError);
|
| + return streamAndDefaultReader(stream);
|
| +}, theError);
|
| +
|
| +templatedRSErroredReader('ReadableStream reader (errored after getting reader)', () => {
|
| + let controller;
|
| + const result = streamAndDefaultReader(new ReadableStream({
|
| + start(c) {
|
| + controller = c;
|
| + }
|
| + }));
|
| + controller.error(theError);
|
| + return result;
|
| +}, theError);
|
| +
|
| +templatedRSTwoChunksOpenReader('ReadableStream (two chunks enqueued, still open) reader', () => {
|
| + return streamAndDefaultReader(new ReadableStream({
|
| + start(c) {
|
| + c.enqueue(chunks[0]);
|
| + c.enqueue(chunks[1]);
|
| + }
|
| + }));
|
| +}, chunks);
|
| +
|
| +templatedRSTwoChunksClosedReader('ReadableStream (two chunks enqueued, then closed) reader', () => {
|
| + let doClose;
|
| + const stream = new ReadableStream({
|
| + start(c) {
|
| + c.enqueue(chunks[0]);
|
| + c.enqueue(chunks[1]);
|
| + doClose = c.close.bind(c);
|
| + }
|
| + });
|
| + const result = streamAndDefaultReader(stream);
|
| + doClose();
|
| + return result;
|
| +}, chunks);
|
| +
|
| +function streamAndDefaultReader(stream) {
|
| + return { stream, reader: stream.getReader() };
|
| +}
|
| +
|
| +done();
|
|
|