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

Unified Diff: third_party/WebKit/LayoutTests/http/tests/streams/writable-streams/brand-checks.js

Issue 2500833002: Import latest WritableStream tests from upstream (Closed)
Patch Set: 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/LayoutTests/http/tests/streams/writable-streams/brand-checks.js
diff --git a/third_party/WebKit/LayoutTests/http/tests/streams/writable-streams/brand-checks.js b/third_party/WebKit/LayoutTests/http/tests/streams/writable-streams/brand-checks.js
new file mode 100644
index 0000000000000000000000000000000000000000..79d19ac4b31002ba8cc565738e411f6b094ea10c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/http/tests/streams/writable-streams/brand-checks.js
@@ -0,0 +1,79 @@
+'use strict';
+
+if (self.importScripts) {
+ self.importScripts('/resources/testharness.js');
+}
+
+function fakeWritableStreamDefaultWriter() {
+ return {
+ get closed() { return Promise.resolve(); },
+ get desiredSize() { return 1; },
+ get ready() { return Promise.resolve(); },
+ abort() { return Promise.resolve(); },
+ close() { return Promise.resolve(); },
+ write() { return Promise.resolve(); }
+ };
+}
+
+function realReadableStreamDefaultWriter() {
+ const rs = new ReadableStream();
+ return rs.getReader();
+}
+
+function getterRejects(t, obj, getterName, target) {
+ const getter = Object.getOwnPropertyDescriptor(obj, getterName).get;
+
+ return promise_rejects(t, new TypeError(), getter.call(target),
+ getterName + ' should reject with a TypeError');
+}
+
+function methodRejects(t, obj, methodName, target) {
+ const method = obj[methodName];
+
+ return promise_rejects(t, new TypeError(), method.call(target),
+ methodName + ' should reject with a TypeError');
+}
+
+function getterThrows(obj, getterName, target) {
+ const getter = Object.getOwnPropertyDescriptor(obj, getterName).get;
+
+ assert_throws(new TypeError(), () => getter.call(target), getterName + ' should throw a TypeError');
+}
+
+const ws = new WritableStream();
+const writer = ws.getWriter();
+const WritableStreamDefaultWriter = writer.constructor;
+const WriterProto = WritableStreamDefaultWriter.prototype;
+
+test(() => {
+ getterThrows(WriterProto, 'desiredSize', fakeWritableStreamDefaultWriter());
+ getterThrows(WriterProto, 'desiredSize', realReadableStreamDefaultWriter());
+}, 'WritableStreamDefaultWriter.prototype.desiredSize enforces a brand check');
+
+promise_test(t => {
+ return Promise.all([getterRejects(t, WriterProto, 'closed', fakeWritableStreamDefaultWriter()),
+ getterRejects(t, WriterProto, 'closed', realReadableStreamDefaultWriter())]);
+}, 'WritableStreamDefaultWriter.prototype.closed enforces a brand check');
+
+promise_test(t => {
+ return Promise.all([getterRejects(t, WriterProto, 'ready', fakeWritableStreamDefaultWriter()),
+ getterRejects(t, WriterProto, 'ready', realReadableStreamDefaultWriter())]);
+}, 'WritableStreamDefaultWriter.prototype.ready enforces a brand check');
+
+test(t => {
+ return Promise.all([methodRejects(t, WriterProto, 'abort', fakeWritableStreamDefaultWriter()),
+ methodRejects(t, WriterProto, 'abort', realReadableStreamDefaultWriter())]);
+
+}, 'WritableStreamDefaultWriter.prototype.abort enforces a brand check');
+
+promise_test(t => {
+ return Promise.all([methodRejects(t, WriterProto, 'write', fakeWritableStreamDefaultWriter()),
+ methodRejects(t, WriterProto, 'write', realReadableStreamDefaultWriter())]);
+}, 'WritableStreamDefaultWriter.prototype.write enforces a brand check');
+
+promise_test(t => {
+ return Promise.all([methodRejects(t, WriterProto, 'close', fakeWritableStreamDefaultWriter()),
+ methodRejects(t, WriterProto, 'close', realReadableStreamDefaultWriter())]);
+}, 'WritableStreamDefaultWriter.prototype.close enforces a brand check');
+
+done();

Powered by Google App Engine
This is Rietveld 408576698