mirror of https://github.com/svaarala/duktape.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.1 KiB
45 lines
1.1 KiB
/*===
|
|
setter order test
|
|
NaN
|
|
-8639980560000000
|
|
===*/
|
|
|
|
/* Order of using setters matters -- if any intermediate timestamp goes out
|
|
* of E5 range, the time value will become NaN and won't recover by further
|
|
* setter calls, even if they would bring the timestamp back to valid range.
|
|
*/
|
|
|
|
print('setter order test');
|
|
|
|
function setterOrderTest() {
|
|
var d;
|
|
|
|
d = new Date(0);
|
|
d.setUTCFullYear(-271821); // year=-271821, month=0 is not in valid range -> timeval NaN
|
|
d.setUTCMonth(11); // year=-271821, month=11 *is* in valid range, but we'll remain NaN here
|
|
d.setUTCDate(1);
|
|
d.setUTCHours(0);
|
|
d.setUTCMinutes(0);
|
|
d.setUTCSeconds(0);
|
|
d.setUTCMilliseconds(0);
|
|
|
|
// NaN is required here by the specification.
|
|
print(d.getTime());
|
|
|
|
// This order has no issues
|
|
d = new Date(0);
|
|
d.setUTCMilliseconds(0);
|
|
d.setUTCSeconds(0);
|
|
d.setUTCMinutes(0);
|
|
d.setUTCHours(0);
|
|
d.setUTCDate(1);
|
|
d.setUTCMonth(11);
|
|
d.setUTCFullYear(-271821);
|
|
print(d.getTime());
|
|
}
|
|
|
|
try {
|
|
setterOrderTest();
|
|
} catch (e) {
|
|
print(e.name);
|
|
}
|
|
|