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

Side by Side Diff: third_party/WebKit/LayoutTests/http/tests/streams/writable-streams/general.js

Issue 2453713003: Implementation of WritableStream (Closed)
Patch Set: Add missing return to promise_test Created 4 years, 1 month 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
(Empty)
1 'use strict';
2
3 if (self.importScripts) {
4 self.importScripts('/resources/testharness.js');
5 }
6
7 test(() => {
8 const ws = new WritableStream({});
9 const writer = ws.getWriter();
10 writer.releaseLock();
11
12 assert_throws(new TypeError(), () => writer.desiredSize, 'desiredSize should t hrow a TypeError');
13 }, 'desiredSize on a released writer');
14
15 test(() => {
16 const ws = new WritableStream({});
17
18 const writer = ws.getWriter();
19
20 assert_equals(writer.desiredSize, 1, 'desiredSize should be 1');
21 }, 'desiredSize initial value');
22
23 promise_test(() => {
24 const ws = new WritableStream({});
25
26 const writer = ws.getWriter();
27
28 writer.close();
29
30 return writer.closed.then(() => {
31 assert_equals(writer.desiredSize, 0, 'desiredSize should be 0');
32 });
33 }, 'desiredSize on a writer for a closed stream');
34
35 test(() => {
36 const ws = new WritableStream({});
37
38 const writer = ws.getWriter();
39 writer.close();
40 writer.releaseLock();
41
42 ws.getWriter();
43 }, 'ws.getWriter() on a closing WritableStream');
44
45 promise_test(() => {
46 const ws = new WritableStream({});
47
48 const writer = ws.getWriter();
49 return writer.close().then(() => {
50 writer.releaseLock();
51
52 ws.getWriter();
53 });
54 }, 'ws.getWriter() on a closed WritableStream');
55
56 test(() => {
57 const ws = new WritableStream({});
58
59 const writer = ws.getWriter();
60 writer.abort();
61 writer.releaseLock();
62
63 ws.getWriter();
64 }, 'ws.getWriter() on an aborted WritableStream');
65
66 promise_test(() => {
67 const ws = new WritableStream({
68 start(c) {
69 c.error();
70 }
71 });
72
73 const writer = ws.getWriter();
74 return writer.closed.then(
75 v => assert_unreached('writer.closed fulfilled unexpectedly with: ' + v),
76 () => {
77 writer.releaseLock();
78
79 ws.getWriter();
80 }
81 );
82 }, 'ws.getWriter() on an errored WritableStream');
83
84 promise_test(() => {
85 const ws = new WritableStream({});
86
87 const writer = ws.getWriter();
88 writer.releaseLock();
89
90 return writer.closed.then(
91 v => assert_unreached('writer.closed fulfilled unexpectedly with: ' + v),
92 closedRejection => {
93 assert_equals(closedRejection.name, 'TypeError', 'closed promise should re ject with a TypeError');
94 return writer.ready.then(
95 v => assert_unreached('writer.ready fulfilled unexpectedly with: ' + v),
96 readyRejection => assert_equals(readyRejection, closedRejection,
97 'ready promise should reject with the same error')
98 );
99 }
100 );
101 }, 'closed and ready on a released writer');
102
103 promise_test(() => {
104 const promises = {};
105 const resolvers = {};
106 for (const methodName of ['start', 'write', 'close', 'abort']) {
107 promises[methodName] = new Promise(resolve => {
108 resolvers[methodName] = resolve;
109 });
110 }
111
112 // Calls to Sink methods after the first are implicitly ignored. Only the firs t value that is passed to the resolver
113 // is used.
114 class Sink {
115 start() {
116 // Called twice
117 resolvers.start(this);
118 }
119
120 write() {
121 resolvers.write(this);
122 }
123
124 close() {
125 resolvers.close(this);
126 }
127
128 abort() {
129 resolvers.abort(this);
130 }
131 }
132
133 const theSink = new Sink();
134 const ws = new WritableStream(theSink);
135
136 const writer = ws.getWriter();
137
138 writer.write('a');
139 writer.close();
140
141 const ws2 = new WritableStream(theSink);
142 const writer2 = ws2.getWriter();
143 writer2.abort();
144
145 return promises.start
146 .then(thisValue => assert_equals(thisValue, theSink, 'start should be call ed as a method'))
147 .then(() => promises.write)
148 .then(thisValue => assert_equals(thisValue, theSink, 'write should be call ed as a method'))
149 .then(() => promises.close)
150 .then(thisValue => assert_equals(thisValue, theSink, 'close should be call ed as a method'))
151 .then(() => promises.abort)
152 .then(thisValue => assert_equals(thisValue, theSink, 'abort should be call ed as a method'));
153 }, 'WritableStream should call underlying sink methods as methods');
154
155 done();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698