OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 import "package:expect/expect.dart"; | 5 import "package:expect/expect.dart"; |
6 import 'dart:async'; | 6 import 'dart:async'; |
7 import 'dart:math'; | 7 import 'dart:math'; |
8 import 'dart:typed_data'; | 8 import 'dart:typed_data'; |
9 import 'dart:isolate'; | 9 import 'dart:isolate'; |
10 import 'dart:uri'; | 10 import 'dart:uri'; |
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
268 | 268 |
269 // Test parsing the request three times delivering the data in | 269 // Test parsing the request three times delivering the data in |
270 // different chunks. | 270 // different chunks. |
271 List<int> responseData = response.codeUnits; | 271 List<int> responseData = response.codeUnits; |
272 testWrite(responseData); | 272 testWrite(responseData); |
273 testWrite(responseData, 10); | 273 testWrite(responseData, 10); |
274 testWrite(responseData, 1); | 274 testWrite(responseData, 1); |
275 } | 275 } |
276 | 276 |
277 static void _testParseInvalidResponse(String response, [bool close = false]) { | 277 static void _testParseInvalidResponse(String response, [bool close = false]) { |
278 _HttpParser httpParser; | 278 void testWrite(List<int> requestData, [int chunkSize = -1]) { |
279 bool errorCalled; | 279 _HttpParser httpParser = new _HttpParser.responseParser(); |
280 StreamController controller; | 280 StreamController controller = new StreamController(); |
| 281 bool errorCalled = false;; |
281 | 282 |
282 void reset() { | 283 if (chunkSize == -1) chunkSize = requestData.length; |
283 httpParser = new _HttpParser.responseParser(); | 284 |
284 controller = new StreamController(); | |
285 var port = new ReceivePort(); | 285 var port = new ReceivePort(); |
286 controller.stream.pipe(httpParser); | 286 controller.stream.pipe(httpParser); |
287 var subscription = httpParser.listen((incoming) { | 287 var subscription = httpParser.listen((incoming) { |
288 incoming.listen( | 288 incoming.listen( |
289 (data) {}, | 289 (data) {}, |
290 onError: (e) { | 290 onError: (e) { |
291 Expect.isFalse(errorCalled); | 291 Expect.isFalse(errorCalled); |
292 errorCalled = true; | 292 errorCalled = true; |
293 }); | 293 }); |
294 }); | 294 }); |
295 subscription.onError((e) { | 295 subscription.onError((e) { |
296 Expect.isFalse(errorCalled); | 296 Expect.isFalse(errorCalled); |
297 errorCalled = true; | 297 errorCalled = true; |
298 }); | 298 }); |
299 subscription.onDone(() { | 299 subscription.onDone(() { |
300 port.close(); | 300 port.close(); |
301 Expect.isTrue(errorCalled); | 301 Expect.isTrue(errorCalled); |
302 }); | 302 }); |
| 303 |
303 errorCalled = false; | 304 errorCalled = false; |
304 } | |
305 | |
306 void testWrite(List<int> requestData, [int chunkSize = -1]) { | |
307 if (chunkSize == -1) chunkSize = requestData.length; | |
308 reset(); | |
309 for (int pos = 0; | 305 for (int pos = 0; |
310 pos < requestData.length && !errorCalled; | 306 pos < requestData.length && !errorCalled; |
311 pos += chunkSize) { | 307 pos += chunkSize) { |
312 int end = min(requestData.length, pos + chunkSize); | 308 int end = min(requestData.length, pos + chunkSize); |
313 controller.add(requestData.sublist(pos, end)); | 309 controller.add(requestData.sublist(pos, end)); |
314 } | 310 } |
315 controller.close(); | 311 controller.close(); |
316 } | 312 } |
317 | 313 |
318 // Test parsing the request three times delivering the data in | 314 // Test parsing the request three times delivering the data in |
(...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
871 0123456789012345678901234567890\r | 867 0123456789012345678901234567890\r |
872 0\r\n\r\n"""; | 868 0\r\n\r\n"""; |
873 _testParseInvalidResponse(response); | 869 _testParseInvalidResponse(response); |
874 } | 870 } |
875 } | 871 } |
876 | 872 |
877 | 873 |
878 void main() { | 874 void main() { |
879 HttpParserTest.runAllTests(); | 875 HttpParserTest.runAllTests(); |
880 } | 876 } |
OLD | NEW |