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

Side by Side Diff: third_party/WebKit/LayoutTests/http/tests/streams/readable-streams/bad-strategies.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/testharness.js');
5 }
6
7 test(function() {
8 var theError = new Error('a unique string');
9
10 assert_throws(theError, function() {
11 new ReadableStream({}, {
12 get size() {
13 throw theError;
14 },
15 highWaterMark: 5
16 });
17 }, 'construction should re-throw the error');
18 }, 'Readable stream: throwing strategy.size getter');
19
20 var test1 = async_test('Readable stream: throwing strategy.size method');
21 test1.step(function() {
yhirano 2015/10/14 10:28:49 Can you use promise_test instead of async_test? Di
domenic 2015/10/14 16:25:30 My intention in importing the tests was to not spe
22 var theError = new Error('a unique string');
23 var rs = new ReadableStream(
24 {
25 start: function(c) {
26 assert_throws(theError, function() { c.enqueue('a'); }, 'enqueue should throw the error');
27 }
28 },
29 {
30 size: function() {
31 throw theError;
32 },
33 highWaterMark: 5
34 }
35 );
36
37 rs.getReader().closed.catch(test1.step_func(function(e) {
38 assert_equals(e, theError, 'closed should reject with the error');
39 test1.done();
40 }))
41 });
42
43 test(function() {
44 var theError = new Error('a unique string');
45
46 assert_throws(theError, function() {
47 new ReadableStream({}, {
48 size: function() {
49 return 1;
50 },
51 get highWaterMark() {
52 throw theError;
53 }
54 });
55 }, 'construction should re-throw the error');
56 }, 'Readable stream: throwing strategy.highWaterMark getter');
57
58 test(function() {
59 for (var highWaterMark of [-1, -Infinity]) {
60 assert_throws(new RangeError(), function() {
61 new ReadableStream({}, {
62 size: function() {
63 return 1;
64 },
65 highWaterMark
66 });
67 }, 'construction should throw a RangeError for ' + highWaterMark);
68 }
69
70 for (var highWaterMark of [NaN, 'foo', {}]) {
71 assert_throws(new TypeError(), function() {
72 new ReadableStream({}, {
73 size: function() {
74 return 1;
75 },
76 highWaterMark
77 });
78 }, 'construction should throw a TypeError for ' + highWaterMark);
79 }
80 }, 'Readable stream: invalid strategy.highWaterMark');
81
82 var test2 = async_test('Readable stream: invalid strategy.size return value');
83 test2.step(function() {
84 var numberOfCalls = 0;
85 var elements = [NaN, -Infinity, +Infinity, -1];
86 var theError = [];
87 for (var i = 0; i < elements.length; i++) {
88 var rs = new ReadableStream({
89 start: function(c) {
90 try {
91 c.enqueue('hi');
92 assert_unreached('enqueue didn\'t throw');
93 } catch (error) {
94 assert_throws(new RangeError(), function() { throw error; }, 'enqueue should throw a RangeError for ' + elements[i]);
yhirano 2015/10/14 10:28:49 assert_equals(error.name, 'RangeError', ...);
domenic 2015/10/14 16:25:30 done
95 theError[i] = error;
96 }
97 }
98 },
99 {
100 size: function() {
101 return elements[i];
102 },
103 highWaterMark: 5
104 });
105
106 var catchFunction = function(i, e) {
107 assert_equals(e, theError[i], 'closed should reject with the error f or ' + elements[i]);
108 if (++numberOfCalls, elements.length) {
109 test2.done();
110 }
111 };
112
113 rs.getReader().closed.catch(test2.step_func(catchFunction.bind(this, i)) );
114 }
115 });
116
117 done();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698