Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(50)

Side by Side Diff: LayoutTests/http/tests/fetch/script-tests/stream-reader.js

Issue 1216203003: Replace all sequential_promise_tests (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@update-testharnessjs
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 if (self.importScripts) { 1 if (self.importScripts) {
2 importScripts('/fetch/resources/fetch-test-helpers.js'); 2 importScripts('/fetch/resources/fetch-test-helpers.js');
3 } 3 }
4 4
5 function read_until_end(reader) { 5 function read_until_end(reader) {
6 var chunks = []; 6 var chunks = [];
7 function consume() { 7 function consume() {
8 return reader.read().then(function(r) { 8 return reader.read().then(function(r) {
9 if (r.done) { 9 if (r.done) {
10 return chunks; 10 return chunks;
11 } else { 11 } else {
12 chunks.push(r.value); 12 chunks.push(r.value);
13 return consume(); 13 return consume();
14 } 14 }
15 }); 15 });
16 } 16 }
17 return consume(); 17 return consume();
18 } 18 }
19 19
20 sequential_promise_test(function(t) { 20 promise_test(function(t) {
21 return fetch('/fetch/resources/doctype.html').then(function(res) { 21 return fetch('/fetch/resources/doctype.html').then(function(res) {
22 var stream = res.body; 22 var stream = res.body;
23 var reader = stream.getReader(); 23 var reader = stream.getReader();
24 assert_throws({name: 'TypeError'}, function() { stream.getReader() }); 24 assert_throws({name: 'TypeError'}, function() { stream.getReader() });
25 reader.releaseLock(); 25 reader.releaseLock();
26 var another = stream.getReader(); 26 var another = stream.getReader();
27 assert_not_equals(another, reader); 27 assert_not_equals(another, reader);
28 }); 28 });
29 }, 'ReadableStreamReader acquisition / releasing'); 29 }, 'ReadableStreamReader acquisition / releasing');
30 30
31 sequential_promise_test(function(t) { 31 promise_test(function(t) {
32 return fetch('/fetch/resources/doctype.html').then(function(res) { 32 return fetch('/fetch/resources/doctype.html').then(function(res) {
33 var reader = res.body.getReader(); 33 var reader = res.body.getReader();
34 return read_until_end(reader); 34 return read_until_end(reader);
35 }).then(function(chunks) { 35 }).then(function(chunks) {
36 var size = 0; 36 var size = 0;
37 for (var chunk of chunks) { 37 for (var chunk of chunks) {
38 assert_equals(chunk.constructor, Uint8Array, 'chunk\'s type'); 38 assert_equals(chunk.constructor, Uint8Array, 'chunk\'s type');
39 size += chunk.byteLength; 39 size += chunk.byteLength;
40 } 40 }
41 var buffer = new Uint8Array(size); 41 var buffer = new Uint8Array(size);
42 var offset = 0; 42 var offset = 0;
43 for (var chunk of chunks) { 43 for (var chunk of chunks) {
44 buffer.set(new Uint8Array(chunk), offset); 44 buffer.set(new Uint8Array(chunk), offset);
45 offset += chunk.byteLength; 45 offset += chunk.byteLength;
46 } 46 }
47 return new TextDecoder().decode(buffer); 47 return new TextDecoder().decode(buffer);
48 }).then(function(string) { 48 }).then(function(string) {
49 assert_equals(string, '<!DOCTYPE html>\n'); 49 assert_equals(string, '<!DOCTYPE html>\n');
50 }); 50 });
51 }, 'read contents with ReadableStreamReader'); 51 }, 'read contents with ReadableStreamReader');
52 52
53 sequential_promise_test(function(t) { 53 promise_test(function(t) {
54 return fetch('/fetch/resources/progressive.php').then(function(res) { 54 return fetch('/fetch/resources/progressive.php').then(function(res) {
55 assert_false(res.bodyUsed); 55 assert_false(res.bodyUsed);
56 var reader = res.body.getReader(); 56 var reader = res.body.getReader();
57 assert_true(res.bodyUsed); 57 assert_true(res.bodyUsed);
58 return res.text(); 58 return res.text();
59 }).then(unreached_rejection(t), function() { 59 }).then(unreached_rejection(t), function() {
60 // text() should fail because bodyUsed is set. 60 // text() should fail because bodyUsed is set.
61 }); 61 });
62 }, 'acquiring a reader should set bodyUsed.'); 62 }, 'acquiring a reader should set bodyUsed.');
63 63
64 sequential_promise_test(function(t) { 64 promise_test(function(t) {
65 var response; 65 var response;
66 return fetch('/fetch/resources/progressive.php').then(function(res) { 66 return fetch('/fetch/resources/progressive.php').then(function(res) {
67 response = res; 67 response = res;
68 assert_false(res.bodyUsed); 68 assert_false(res.bodyUsed);
69 var p = res.arrayBuffer(); 69 var p = res.arrayBuffer();
70 assert_true(res.bodyUsed); 70 assert_true(res.bodyUsed);
71 assert_throws({name: 'TypeError'}, function() { res.body.getReader() }); 71 assert_throws({name: 'TypeError'}, function() { res.body.getReader() });
72 return p; 72 return p;
73 }).then(function(buffer) { 73 }).then(function(buffer) {
74 assert_equals(buffer.byteLength, 190); 74 assert_equals(buffer.byteLength, 190);
75 // Now we can obtain a (closed) reader. 75 // Now we can obtain a (closed) reader.
76 return response.body.getReader().closed; 76 return response.body.getReader().closed;
77 }); 77 });
78 }, 'Setting bodyUsed means the body is locked.'); 78 }, 'Setting bodyUsed means the body is locked.');
79 79
80 sequential_promise_test(function(t) { 80 promise_test(function(t) {
81 return fetch('/fetch/resources/slow-failure.cgi').then(function(res) { 81 return fetch('/fetch/resources/slow-failure.cgi').then(function(res) {
82 return res.text().then(function() { 82 return res.text().then(function() {
83 assert_unreached('text() should fail'); 83 assert_unreached('text() should fail');
84 }, function(e) { 84 }, function(e) {
85 return res.body.getReader().closed.then(function() { 85 return res.body.getReader().closed.then(function() {
86 assert_unreached('res.body should be errored'); 86 assert_unreached('res.body should be errored');
87 }, function(e) {}); 87 }, function(e) {});
88 }); 88 });
89 }); 89 });
90 }, 'Error in text() should be propagated to the body stream.'); 90 }, 'Error in text() should be propagated to the body stream.');
91 91
92 sequential_promise_test(function(t) { 92 promise_test(function(t) {
93 var reader; 93 var reader;
94 var read = 0; 94 var read = 0;
95 var original; 95 var original;
96 return fetch('/fetch/resources/progressive.php').then(function(res) { 96 return fetch('/fetch/resources/progressive.php').then(function(res) {
97 original = res; 97 original = res;
98 reader = res.body.getReader(); 98 reader = res.body.getReader();
99 return reader.read(); 99 return reader.read();
100 }).then(function(r) { 100 }).then(function(r) {
101 assert_false(r.done); 101 assert_false(r.done);
102 read += r.value.byteLength; 102 read += r.value.byteLength;
(...skipping 21 matching lines...) Expand all
124 } 124 }
125 for (var chunk of r[1]) { 125 for (var chunk of r[1]) {
126 read2 += chunk.byteLength; 126 read2 += chunk.byteLength;
127 } 127 }
128 // Make sure that we received all data in total. 128 // Make sure that we received all data in total.
129 assert_equals(read + read1, 190); 129 assert_equals(read + read1, 190);
130 assert_equals(read + read2, 190); 130 assert_equals(read + read2, 190);
131 }); 131 });
132 }, 'Clone after reading partially'); 132 }, 'Clone after reading partially');
133 133
134 sequential_promise_test(function(t) { 134 promise_test(function(t) {
135 return fetch('/fetch/resources/progressive.php').then(function(res) { 135 return fetch('/fetch/resources/progressive.php').then(function(res) {
136 res.body.cancel(); 136 res.body.cancel();
137 return res.text(); 137 return res.text();
138 }).then(function(text) { 138 }).then(function(text) {
139 assert_equals(text, ''); 139 assert_equals(text, '');
140 }); 140 });
141 }, 'Cancelling stream stops downloading.'); 141 }, 'Cancelling stream stops downloading.');
142 142
143 sequential_promise_test(function(t) { 143 promise_test(function(t) {
144 return fetch('/fetch/resources/progressive.php').then(function(res) { 144 return fetch('/fetch/resources/progressive.php').then(function(res) {
145 var clone = res.clone(); 145 var clone = res.clone();
146 res.body.cancel(); 146 res.body.cancel();
147 return Promise.all([res.arrayBuffer(), clone.arrayBuffer()]); 147 return Promise.all([res.arrayBuffer(), clone.arrayBuffer()]);
148 }).then(function(r) { 148 }).then(function(r) {
149 assert_equals(r[0].byteLength, 0); 149 assert_equals(r[0].byteLength, 0);
150 assert_equals(r[1].byteLength, 190); 150 assert_equals(r[1].byteLength, 190);
151 }); 151 });
152 }, 'Cancelling stream should not affect cloned one.'); 152 }, 'Cancelling stream should not affect cloned one.');
153 153
154 sequential_promise_test(function(t) { 154 promise_test(function(t) {
155 var stream; 155 var stream;
156 return fetch('/fetch/resources/progressive.php').then(function(res) { 156 return fetch('/fetch/resources/progressive.php').then(function(res) {
157 var p = res.text(); 157 var p = res.text();
158 stream = res.body; 158 stream = res.body;
159 assert_throws({name: 'TypeError'}, function() { stream.getReader() }); 159 assert_throws({name: 'TypeError'}, function() { stream.getReader() });
160 return p; 160 return p;
161 }).then(function(text) { 161 }).then(function(text) {
162 assert_equals(text.length, 190); 162 assert_equals(text.length, 190);
163 return stream.getReader().read(); 163 return stream.getReader().read();
164 }).then(function(r) { 164 }).then(function(r) {
165 assert_true(r.done); 165 assert_true(r.done);
166 assert_equals(r.value, undefined); 166 assert_equals(r.value, undefined);
167 }); 167 });
168 }, 'Accessing body when processing text().'); 168 }, 'Accessing body when processing text().');
169 169
170 done(); 170 done();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698