Index: tests/standalone/src/io/HttpDateTest.dart |
diff --git a/tests/standalone/src/io/HttpDateTest.dart b/tests/standalone/src/io/HttpDateTest.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..0b02ca7fa27e981fe1fdbb90533d1970f4d1dd41 |
--- /dev/null |
+++ b/tests/standalone/src/io/HttpDateTest.dart |
@@ -0,0 +1,91 @@ |
+// Copyright (c) 2012, 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. |
+ |
+#source("../../../../runtime/bin/http_utils.dart"); |
+ |
+class HttpException implements Exception { |
+ const HttpException([String this.message = ""]); |
+ String toString() => "HttpException: $message"; |
+ final String message; |
+} |
+ |
+void testParseHttpDate() { |
+ TimeZone utc = new TimeZone.utc(); |
+ Date date; |
+ date = new Date.withTimeZone(1999, Date.JUN, 11, 18, 46, 53, 0, utc); |
+ Expect.equals(date, _HttpUtils.parseDate("Fri, 11 Jun 1999 18:46:53 GMT")); |
+ Expect.equals(date, _HttpUtils.parseDate("Friday, 11-Jun-1999 18:46:53 GMT")); |
+ Expect.equals(date, _HttpUtils.parseDate("Fri Jun 11 18:46:53 1999")); |
+ |
+ date = new Date.withTimeZone(1970, Date.JAN, 1, 0, 0, 0, 0, utc); |
+ Expect.equals(date, _HttpUtils.parseDate("Thu, 1 Jan 1970 00:00:00 GMT")); |
+ Expect.equals(date, |
+ _HttpUtils.parseDate("Thursday, 1-Jan-1970 00:00:00 GMT")); |
+ Expect.equals(date, _HttpUtils.parseDate("Thu Jan 1 00:00:00 1970")); |
+ |
+ date = new Date.withTimeZone(2012, Date.MAR, 5, 23, 59, 59, 0, utc); |
+ Expect.equals(date, _HttpUtils.parseDate("Mon, 5 Mar 2012 23:59:59 GMT")); |
+ Expect.equals(date, _HttpUtils.parseDate("Monday, 5-Mar-2012 23:59:59 GMT")); |
+ Expect.equals(date, _HttpUtils.parseDate("Mon Mar 5 23:59:59 2012")); |
+} |
+ |
+void testFormatParseHttpDate() { |
+ test(int year, |
+ int month, |
+ int day, |
+ int hours, |
+ int minutes, |
+ int seconds, |
+ String expectedFormatted) { |
+ TimeZone utc = new TimeZone.utc(); |
+ Date date; |
+ String formatted; |
+ date = new Date.withTimeZone( |
+ year, month, day, hours, minutes, seconds, 0, utc); |
+ formatted = _HttpUtils.formatDate(date); |
+ Expect.equals(expectedFormatted, formatted); |
+ Expect.equals(date, _HttpUtils.parseDate(formatted)); |
+ } |
+ |
+ test(1999, Date.JUN, 11, 18, 46, 53, "Fri, 11 Jun 1999 18:46:53 GMT"); |
+ test(1970, Date.JAN, 1, 0, 0, 0, "Thu, 1 Jan 1970 00:00:00 GMT"); |
+ test(2012, Date.MAR, 5, 23, 59, 59, "Mon, 5 Mar 2012 23:59:59 GMT"); |
+} |
+ |
+void testParseHttpDateFailures() { |
+ Expect.throws(() { |
+ _HttpUtils.parseDate(""); |
+ }); |
+ String valid = "Mon, 5 Mar 2012 23:59:59 GMT"; |
+ for (int i = 1; i < valid.length - 1; i++) { |
+ String tmp = valid.substring(0, i); |
+ Expect.throws(() { |
+ _HttpUtils.parseDate(tmp); |
+ }); |
+ Expect.throws(() { |
+ _HttpUtils.parseDate(" $tmp"); |
+ }); |
+ Expect.throws(() { |
+ _HttpUtils.parseDate(" $tmp "); |
+ }); |
+ Expect.throws(() { |
+ _HttpUtils.parseDate("$tmp "); |
+ }); |
+ } |
+ Expect.throws(() { |
+ _HttpUtils.parseDate(" $valid"); |
+ }); |
+ Expect.throws(() { |
+ _HttpUtils.parseDate(" $valid "); |
+ }); |
+ Expect.throws(() { |
+ _HttpUtils.parseDate("$valid "); |
+ }); |
+} |
+ |
+void main() { |
+ testParseHttpDate(); |
+ testFormatParseHttpDate(); |
+ testParseHttpDateFailures(); |
+} |