| // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file | 
 | // for details. All rights reserved. Use of this source code is governed by a | 
 | // BSD-style license that can be found in the LICENSE file. | 
 |  | 
 | import "dart:io"; | 
 | import "package:expect/expect.dart"; | 
 |  | 
 | void testHEAD(int totalConnections) { | 
 |   HttpServer.bind("127.0.0.1", 0).then((server) { | 
 |     server.listen((request) { | 
 |       var response = request.response; | 
 |       if (request.uri.path == "/test100") { | 
 |         response.contentLength = 100; | 
 |         response.close(); | 
 |       } else if (request.uri.path == "/test200") { | 
 |         response.contentLength = 200; | 
 |         List<int> data = new List<int>.filled(200, 0); | 
 |         response.add(data); | 
 |         response.close(); | 
 |       } else if (request.uri.path == "/testChunked100") { | 
 |         List<int> data = new List<int>.filled(100, 0); | 
 |         response.add(data); | 
 |         response.close(); | 
 |       } else if (request.uri.path == "/testChunked200") { | 
 |         List<int> data = new List<int>.filled(200, 0); | 
 |         response.add(data); | 
 |         response.close(); | 
 |       } else { | 
 |         assert(false); | 
 |       } | 
 |     }); | 
 |  | 
 |     HttpClient client = new HttpClient(); | 
 |  | 
 |     int count = 0; | 
 |  | 
 |     requestDone() { | 
 |       count++; | 
 |       if (count == totalConnections * 2) { | 
 |         client.close(); | 
 |         server.close(); | 
 |       } | 
 |     } | 
 |  | 
 |     for (int i = 0; i < totalConnections; i++) { | 
 |       int len = (i % 2 == 0) ? 100 : 200; | 
 |       client | 
 |           .open("HEAD", "127.0.0.1", server.port, "/test$len") | 
 |           .then((request) => request.close()) | 
 |           .then((HttpClientResponse response) { | 
 |         Expect.equals(len, response.contentLength); | 
 |         response.listen((_) => Expect.fail("Data from HEAD request"), | 
 |             onDone: requestDone); | 
 |       }); | 
 |  | 
 |       client | 
 |           .open("HEAD", "127.0.0.1", server.port, "/testChunked$len") | 
 |           .then((request) => request.close()) | 
 |           .then((HttpClientResponse response) { | 
 |         Expect.equals(-1, response.contentLength); | 
 |         response.listen((_) => Expect.fail("Data from HEAD request"), | 
 |             onDone: requestDone); | 
 |       }); | 
 |     } | 
 |   }); | 
 | } | 
 |  | 
 | void main() { | 
 |   testHEAD(4); | 
 | } |