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

// Test Date constructor with optional arguments.

main() {
  var d = new Date(2012);
  Expect.equals(2012, d.year);
  Expect.equals(1, d.month);
  Expect.equals(1, d.day);
  Expect.equals(0, d.hour);
  Expect.equals(0, d.minute);
  Expect.equals(0, d.second);
  Expect.equals(0, d.millisecond);

  d = new Date(2012, day: 28);
  Expect.equals(2012, d.year);
  Expect.equals(1, d.month);
  Expect.equals(28, d.day);
  Expect.equals(0, d.hour);
  Expect.equals(0, d.minute);
  Expect.equals(0, d.second);
  Expect.equals(0, d.millisecond);

  d = new Date(1970, 3);
  Expect.equals(1970, d.year);
  Expect.equals(3, d.month);
  Expect.equals(1, d.day);
  Expect.equals(0, d.hour);
  Expect.equals(0, d.minute);
  Expect.equals(0, d.second);
  Expect.equals(0, d.millisecond);

  d = new Date(1970, 3, hour: 11);
  Expect.equals(1970, d.year);
  Expect.equals(3, d.month);
  Expect.equals(1, d.day);
  Expect.equals(11, d.hour);
  Expect.equals(0, d.minute);
  Expect.equals(0, d.second);
  Expect.equals(0, d.millisecond);

  d = new Date(0, 12, 24, minute: 12);
  Expect.equals(0, d.year);
  Expect.equals(12, d.month);
  Expect.equals(24, d.day);
  Expect.equals(0, d.hour);
  Expect.equals(12, d.minute);
  Expect.equals(0, d.second);
  Expect.equals(0, d.millisecond);

  d = new Date(-1, 2, 2, 3, millisecond: 4);
  Expect.equals(-1, d.year);
  Expect.equals(2, d.month);
  Expect.equals(2, d.day);
  Expect.equals(3, d.hour);
  Expect.equals(0, d.minute);
  Expect.equals(0, d.second);
  Expect.equals(4, d.millisecond);

  d = new Date(-1, 2, 2, 3, second: 4);
  Expect.equals(-1, d.year);
  Expect.equals(2, d.month);
  Expect.equals(2, d.day);
  Expect.equals(3, d.hour);
  Expect.equals(0, d.minute);
  Expect.equals(4, d.second);
  Expect.equals(0, d.millisecond);

  d = new Date(2012, month: 5, day: 15,
               hour: 13, minute: 21, second: 33, millisecond: 12);
  Expect.equals(2012, d.year);
  Expect.equals(5, d.month);
  Expect.equals(15, d.day);
  Expect.equals(13, d.hour);
  Expect.equals(21, d.minute);
  Expect.equals(33, d.second);
  Expect.equals(12, d.millisecond);
}
