forked from WebKit/WebKit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathreadable-stream-default-reader-read.html
153 lines (136 loc) · 4.58 KB
/
readable-stream-default-reader-read.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
<!DOCTYPE html>
<script src='../resources/testharness.js'></script>
<script src='../resources/testharnessreport.js'></script>
<script>
// This is updated till https://github.com/whatwg/streams/commit/4ba861e6f60c248060811830e11271c84b439cc3
var test1 = async_test('Reading twice on a stream that gets closed');
test1.step(function() {
var controller;
var rs = new ReadableStream({
start: function(c) {
controller = c;
}
});
var counter = 0;
var reader = rs.getReader();
reader.read().then(test1.step_func(function(result) {
assert_object_equals(result, { value: undefined, done: true }, 'read() should fulfill with close');
assert_equals(++counter, 1);
}));
reader.read().then(test1.step_func(function(result) {
assert_object_equals(result, { value: undefined, done: true }, 'read() should fulfill with close');
assert_equals(++counter, 2);
}));
reader.closed.then(test1.step_func(function() {
assert_equals(++counter, 3);
test1.done();
}));
controller.close();
});
var test2 = async_test('Reading twice on a closed stream');
test2.step(function() {
var controller;
var rs = new ReadableStream({
start: function(c) {
controller = c;
}
});
controller.close();
var counter = 0;
var reader = rs.getReader();
reader.read().then(test2.step_func(function(result) {
assert_object_equals(result, { value: undefined, done: true }, 'read() should fulfill with close');
assert_equals(counter, 0);
counter++;
}));
reader.read().then(test2.step_func(function(result) {
assert_object_equals(result, { value: undefined, done: true }, 'read() should fulfill with close');
assert_equals(counter, 1);
counter++;
}));
reader.closed.then(test2.step_func(function() {
assert_equals(counter, 2);
counter++;
test2.done();
}));
});
var test3 = async_test('Reading twice on an errored stream');
test3.step(function() {
var controller;
var rs = new ReadableStream({
start: function(c) {
controller = c;
}
});
var myError = { potato: "mashed" };
controller.error(myError);
var counter = 0;
var reader = rs.getReader();
reader.read().then(test3.step_func(function() {
assert_unreached('read() should reject on an errored stream');
}), test3.step_func(function(err) {
assert_equals(myError, err);
assert_equals(counter, 0);
counter++;
}));
reader.read().then(test3.step_func(function() {
assert_unreached('read() should reject on an errored stream');
}), test3.step_func(function(err) {
assert_equals(myError, err);
assert_equals(counter, 1);
counter++;
}));
reader.closed.then(test3.step_func(function() {
assert_unreached('read() should reject on an errored stream');
}), test3.step_func(function(err) {
assert_equals(myError, err);
assert_equals(counter, 2);
counter++;
test3.done();
}));
});
var test4 = async_test('Reading twice on a stream that gets errored');
test4.step(function() {
var controller;
var rs = new ReadableStream({
start: function(c) {
controller = c;
}
});
var counter = 0;
var reader = rs.getReader();
reader.read().then(test4.step_func(function() {
assert_unreached('read() should reject on an errored stream');
}), test4.step_func(function(err) {
assert_equals(myError, err);
assert_equals(++counter, 2);
}));
reader.read().then(test4.step_func(function() {
assert_unreached('read() should reject on an errored stream');
}), test4.step_func(function(err) {
assert_equals(myError, err);
assert_equals(++counter, 3);
test4.done();
}));
reader.closed.then(test4.step_func(function() {
assert_unreached('read() should reject on an errored stream');
}), test4.step_func(function(err) {
assert_equals(myError, err);
assert_equals(++counter, 1);
}));
var myError = { potato: 'mashed' };
controller.error(myError);
});
var test5 = async_test('ReadableStream: if start rejects with no parameter, it should error the stream with an undefined error');
test5.step(function() {
var rs = new ReadableStream({
start: function(c) {
return Promise.reject();
}
});
rs.getReader().read().catch(test5.step_func(function(e) {
assert_equals(typeof e, "undefined");
test5.done();
}));
});
</script>