Unreviewed, rolling out r208382.
[WebKit-https.git] / LayoutTests / streams / readable-byte-stream-controller.js
1 'use strict';
2
3 if (self.importScripts) {
4     self.importScripts('../resources/testharness.js');
5 }
6
7 test(function() {
8     const rs = new ReadableStream({
9         type: "bytes"
10     });
11 }, "Creating a ReadableStream with an underlyingSource with type property set to 'bytes' should succeed");
12
13 const test2 = async_test("Calling read() on a reader associated to a controller that has been errored should be rejected");
14 test2.step(function() {
15     let controller;
16
17     const rs = new ReadableStream({
18         start: function(c) {
19             controller = c;
20         },
21         type: "bytes"
22     });
23     const myError = "my error";
24     controller.error(myError);
25
26     rs.getReader().read().then(
27         test2.step_func(function() {
28             assert_unreached('read() should reject on an errored stream');
29         }),
30         test2.step_func(function(err) {
31             assert_equals(myError, err);
32             test2.done();
33         })
34     );
35 });
36
37 const test3 = async_test("Calling read() on a reader associated to a controller that has been closed should not be rejected");
38 test3.step(function() {
39     let controller;
40
41     const rs = new ReadableStream({
42         start: function(c) {
43             controller = c;
44         },
45         type: "bytes"
46     });
47
48     controller.close();
49
50     rs.getReader().read().then(
51         test3.step_func(function(res) {
52             assert_object_equals(res, {value: undefined, done: true});
53             test3.done();
54         }),
55         test3.step_func(function(err) {
56             assert_unreached("read() should be fulfilled  on a closed stream");
57         })
58     );
59 });
60
61 const test4 = async_test("Calling read() after a chunk has been enqueued should result in obtaining said chunk");
62 test4.step(function() {
63     let controller;
64
65     const rs = new ReadableStream({
66         start: function(c) {
67             controller = c;
68         },
69         type: "bytes"
70     });
71
72     controller.enqueue("test");
73
74     rs.getReader().read().then(
75         test4.step_func(function(res) {
76             assert_object_equals(res, {value: "test", done: false});
77             test4.done();
78         }),
79         test4.step_func(function(err) {
80             assert_unreached("read() should be fulfilled after enqueue");
81         })
82     );
83 });
84
85 done();