// 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.

check(DateTime expected, String str) {
  DateTime actual = DateTime.parse(str);
  Expect.equals(expected, actual);  // Only checks if they are at the same time.
  Expect.equals(expected.isUtc, actual.isUtc);
}
main() {
  check(new Date(2012, 02, 27, 13, 27), "2012-02-27 13:27:00");
  check(new Date.utc(2012, 02, 27, 13, 27, 0, 123),
        "2012-02-27 13:27:00.123456z");
  check(new Date(2012, 02, 27, 13, 27), "20120227 13:27:00");
  check(new Date(2012, 02, 27, 13, 27), "20120227T132700");
  check(new Date(2012, 02, 27), "20120227");
  check(new Date(2012, 02, 27), "+20120227");
  check(new Date.utc(2012, 02, 27, 14), "2012-02-27T14Z");
  check(new Date.utc(-12345, 1, 1), "-123450101 00:00:00 Z");
}
