// Copyright 2009 the Sputnik authors.  All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
info: |
    The [[Value]] property of the newly constructed object
    with supplied "undefined" argument should be NaN
esid: sec-date-year-month-date-hours-minutes-seconds-ms
description: 4 arguments, (year, month, date, hours)
---*/

function DateValue(year, month, date, hours, minutes, seconds, ms) {
  return new Date(year, month, date, hours, minutes, seconds, ms).valueOf();
}

var x;
x = DateValue(1899, 11, 31, 23);
assert.sameValue(x, NaN, "(1899, 11, 31, 23)");

x = DateValue(1899, 12, 1, 0);
assert.sameValue(x, NaN, "(1899, 12, 1, 0)");

x = DateValue(1900, 0, 1, 0);
assert.sameValue(x, NaN, "(1900, 0, 1, 0)");

x = DateValue(1969, 11, 31, 23);
assert.sameValue(x, NaN, "(1969, 11, 31, 23)");

x = DateValue(1969, 12, 1, 0);
assert.sameValue(x, NaN, "(1969, 12, 1, 0)");

x = DateValue(1970, 0, 1, 0);
assert.sameValue(x, NaN, "(1970, 0, 1, 0)");

x = DateValue(1999, 11, 31, 23);
assert.sameValue(x, NaN, "(1999, 11, 31, 23)");

x = DateValue(1999, 12, 1, 0);
assert.sameValue(x, NaN, "(1999, 12, 1, 0)");

x = DateValue(2000, 0, 1, 0);
assert.sameValue(x, NaN, "(2000, 0, 1, 0)");

x = DateValue(2099, 11, 31, 23);
assert.sameValue(x, NaN, "(2099, 11, 31, 23)");

x = DateValue(2099, 12, 1, 0);
assert.sameValue(x, NaN, "(2099, 12, 1, 0)");

x = DateValue(2100, 0, 1, 0);
assert.sameValue(x, NaN, "(2100, 0, 1, 0)");
