// Copyright (c) 2011, 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.

/// @assertion factory DateTime(int year, [int month = 1, int day = 1, int
/// hour = 0, int minute = 0, int second = 0, int millisecond = 0])
/// Constructs a DateTime instance based on the individual parts.
/// The date is in the local time zone. month and day are one-based. 
/// @description Tries to pass null for each argument.
/// @author hlodvig

import "../../../Utils/expect.dart";

void check(y, m, d, h, min, sec, ms, field) {
  try {
    new DateTime(y, m, d, h, min, sec, ms);
    Expect.fail("Error expected with the passed null value of the $field");
  } on Error catch(ok) {}
}

main(){
  check(null, 1, 1, 1, 1, 1, 1, "year");
  check(1, null, 1, 1, 1, 1, 1, "month");
  check(1, 1, null, 1, 1, 1, 1, "day");
  check(1, 1, 1, null, 1, 1, 1, "hours");
  check(1, 1, 1, 1, null, 1, 1, "minutes");
  check(1, 1, 1, 1, 1, null, 1, "seconds");
  check(1, 1, 1, 1, 1, 1, null, "milliseconds");
}
