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

Side by Side Diff: third_party/WebKit/LayoutTests/http/tests/streams/readable-streams/brand-checks.js

Issue 1404523005: Implement author-constructible ReadableStream using V8 extras (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 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
(Empty)
1 'use strict';
2
3 if (self.importScripts) {
4 self.importScripts('../resources/test-utils.js');
5 self.importScripts('/resources/testharness.js');
6 }
7
8 var ReadableStreamReader;
9 var ReadableStreamController;
10
11 test(function() {
12 // It's not exposed globally, but we test a few of its properties here.
13 ReadableStreamReader = (new ReadableStream()).getReader().constructor;
14 }, 'Can get the ReadableStreamReader constructor indirectly');
15
16 test(function() {
17 // It's not exposed globally, but we test a few of its properties here.
18 new ReadableStream({
19 start: function(c) {
20 ReadableStreamController = c.constructor;
21 }
22 });
23 }, 'Can get the ReadableStreamController constructor indirectly');
24
25 function fakeReadableStream() {
26 return {
27 cancel: function(reason) { return Promise.resolve(); },
28 getReader: function() { return new ReadableStreamReader(new ReadableStre am()); },
29 pipeThrough: function(obj, options) { return obj.readable; },
30 pipeTo: function() { return Promise.resolve(); },
31 tee: function() { return [realReadableStream(), realReadableStream()]; }
32 };
33 }
34
35 function realReadableStream() {
36 return new ReadableStream();
37 }
38
39 function fakeReadableStreamReader() {
40 return {
41 get closed() { return Promise.resolve(); },
42 cancel: function(reason) { return Promise.resolve(); },
43 read: function() { return Promise.resolve({ value: undefined, done: true }); },
44 releaseLock: function() { return; }
45 };
46 }
47
48 function fakeReadableStreamController() {
49 return {
50 close: function() { },
51 enqueue: function(chunk) { },
52 error: function(e) { }
53 };
54 }
55
56 var test1 = async_test('ReadableStream.prototype.cancel enforces a brand check') ;
57 test1.step(function() {
58 methodRejects(test1, ReadableStream.prototype, 'cancel', fakeReadableStream( ), true);
59 });
60
61 test(function() {
62 methodThrows(ReadableStream.prototype, 'getReader', fakeReadableStream());
63 }, 'ReadableStream.prototype.getReader enforces a brand check');
64
65 test(function() {
66 methodThrows(ReadableStream.prototype, 'tee', fakeReadableStream());
67 }, 'ReadableStream.prototype.tee enforces a brand check');
68
69 test(function() {
70 assert_throws(new TypeError(), function() { new ReadableStreamReader(fakeRea dableStream()); }, 'Constructing a ReadableStreamReader should throw');
71 }, 'ReadableStreamReader enforces a brand check on its argument');
72
73 var test2 = async_test('ReadableStreamReader.prototype.closed enforces a brand c heck');
74 test2.step(function() {
75 getterRejects(test2, ReadableStreamReader.prototype, 'closed', fakeReadableS treamReader());
76 getterRejects(test2, ReadableStreamReader.prototype, 'closed', realReadableS tream(), true);
77 });
78
79 var test3 = async_test('ReadableStreamReader.prototype.cancel enforces a brand c heck');
80 test3.step(function() {
81 methodRejects(test3, ReadableStreamReader.prototype, 'cancel', fakeReadableS treamReader());
82 methodRejects(test3, ReadableStreamReader.prototype, 'cancel', realReadableS tream(), true);
83 });
84
85 var test4 = async_test('ReadableStreamReader.prototype.read enforces a brand che ck');
86 test4.step(function() {
87 methodRejects(test4, ReadableStreamReader.prototype, 'read', fakeReadableStr eamReader());
88 methodRejects(test4, ReadableStreamReader.prototype, 'read', realReadableStr eam(), true);
89 });
90
91 var test5 = async_test('ReadableStreamReader.prototype.read enforces a brand che ck');
92 test5.step(function() {
93 methodRejects(test5, ReadableStreamReader.prototype, 'read', fakeReadableStr eamReader());
94 methodRejects(test5, ReadableStreamReader.prototype, 'read', realReadableStr eam(), true);
95 });
96
97 test(function() {
98 methodThrows(ReadableStreamReader.prototype, 'releaseLock', fakeReadableStre amReader());
99 methodThrows(ReadableStreamReader.prototype, 'releaseLock', realReadableStre am());
100 }, 'ReadableStreamReader.prototype.releaseLock enforces a brand check');
101
102 test(function() {
103 assert_throws(new TypeError(), function() { new ReadableStreamController(fak eReadableStream()); }, 'Constructing a ReadableStreamController should throw');
104 }, 'ReadableStreamController enforces a brand check on its argument');
105
106 test(function() {
107 assert_throws(new TypeError(), function() { new ReadableStreamController(rea lReadableStream()); }, 'Constructing a ReadableStreamController should throw');
108 }, 'ReadableStreamController can\'t be given a fully-constructed ReadableStream' );
109
110 test(function() {
111 methodThrows(ReadableStreamController.prototype, 'close', fakeReadableStreamCo ntroller());
112 }, 'ReadableStreamController.prototype.close enforces a brand check');
113
114 test(function() {
115 methodThrows(ReadableStreamController.prototype, 'enqueue', fakeReadableStream Controller());
116 }, 'ReadableStreamController.prototype.enqueue enforces a brand check');
117
118 test(function() {
119 methodThrows(ReadableStreamController.prototype, 'error', fakeReadableStreamCo ntroller());
120 }, 'ReadableStreamController.prototype.error enforces a brand check');
121
122 done();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698