blob: 5b21999f9bb4f9060f025b6814eabed7271f41e4 [file] [log] [blame] [edit]
function shouldBe(actual, expected) {
if (!Object.is(actual, expected)) {
throw new Error(`Expected: ${expected}, actual value: ${actual}`);
}
}
for (var i = 0; i < testLoopCount; i++) {
// Date constructor
shouldBe(new Date(1, 1, 1, 1, 1, 1, 1).valueOf(), -2174741938999);
shouldBe(new Date(NaN, 1, 1, 1, 1, 1, 1).valueOf(), NaN);
shouldBe(new Date(1, NaN, 1, 1, 1, 1, 1).valueOf(), NaN);
shouldBe(new Date(1, 1, NaN, 1, 1, 1, 1).valueOf(), NaN);
shouldBe(new Date(1, 1, 1, NaN, 1, 1, 1).valueOf(), NaN);
shouldBe(new Date(1, 1, 1, 1, NaN, 1, 1).valueOf(), NaN);
shouldBe(new Date(1, 1, 1, 1, 1, NaN, 1).valueOf(), NaN);
shouldBe(new Date(1, 1, 1, 1, 1, 1, NaN).valueOf(), NaN);
shouldBe(new Date(1, 1, 1, NaN).valueOf(), NaN);
shouldBe(new Date(1, 1, 1, NaN, 10).valueOf(), NaN);
shouldBe(new Date(1990, 1, 1, 1, 1, 1, 1).valueOf(), 633862861001);
shouldBe(new Date(NaN, 1, 1, 1, 1, 1, 1).valueOf(), NaN);
shouldBe(new Date(1990, NaN, 1, 1, 1, 1, 1).valueOf(), NaN);
shouldBe(new Date(1990, 1, NaN, 1, 1, 1, 1).valueOf(), NaN);
shouldBe(new Date(1990, 1, 1, NaN, 1, 1, 1).valueOf(), NaN);
shouldBe(new Date(1990, 1, 1, 1, NaN, 1, 1).valueOf(), NaN);
shouldBe(new Date(1990, 1, 1, 1, 1, NaN, 1).valueOf(), NaN);
shouldBe(new Date(1990, 1, 1, 1, 1, 1, NaN).valueOf(), NaN);
shouldBe(new Date(Infinity, 1, 1, 1, 1, 1, 1).valueOf(), NaN);
shouldBe(new Date(1990, Infinity, 1, 1, 1, 1, 1).valueOf(), NaN);
shouldBe(new Date(1990, 1, Infinity, 1, 1, 1, 1).valueOf(), NaN);
shouldBe(new Date(1990, 1, 1, Infinity, 1, 1, 1).valueOf(), NaN);
shouldBe(new Date(1990, 1, 1, 1, Infinity, 1, 1).valueOf(), NaN);
shouldBe(new Date(1990, 1, 1, 1, 1, Infinity, 1).valueOf(), NaN);
shouldBe(new Date(1990, 1, 1, 1, 1, 1, Infinity).valueOf(), NaN);
shouldBe(new Date(-Infinity, 1, 1, 1, 1, 1, 1).valueOf(), NaN);
shouldBe(new Date(1990, -Infinity, 1, 1, 1, 1, 1).valueOf(), NaN);
shouldBe(new Date(1990, 1, -Infinity, 1, 1, 1, 1).valueOf(), NaN);
shouldBe(new Date(1990, 1, 1, -Infinity, 1, 1, 1).valueOf(), NaN);
shouldBe(new Date(1990, 1, 1, 1, -Infinity, 1, 1).valueOf(), NaN);
shouldBe(new Date(1990, 1, 1, 1, 1, -Infinity, 1).valueOf(), NaN);
shouldBe(new Date(1990, 1, 1, 1, 1, 1, -Infinity).valueOf(), NaN);
shouldBe(new Date(NaN).valueOf(), NaN);
shouldBe(new Date(Infinity).valueOf(), NaN);
shouldBe(new Date(-Infinity).valueOf(), NaN);
shouldBe(new Date(0).valueOf(), 0);
shouldBe(new Date(-0).valueOf(), 0);
shouldBe(new Date(-10).valueOf(), -10);
shouldBe(new Date("1990", 1, 1, 3, 10, 10).valueOf(), 633870610000);
shouldBe(new Date("1990", 1, "1", 3, NaN, 10).valueOf(), NaN);
shouldBe(new Date("1990", 1, "1", 3, Infinity, 10).valueOf(), NaN);
shouldBe(new Date("1990", 1, "1", 3, "Infinity", 10).valueOf(), NaN);
shouldBe(new Date("1990", 1, "1", 3, "NaN", 10).valueOf(), NaN);
shouldBe(new Date("1990", 1, "1", 3, "random", 10).valueOf(), NaN);
shouldBe(new Date("1990", 1, "1", 3, "", 10).valueOf(), 633870010000);
shouldBe(new Date(1990, 1, "1", 3, "9", 10).valueOf(), 633870550000);
shouldBe(new Date("1990", "1", "1", "3", "9", "10").valueOf(), 633870550000);
// Date.UTC
shouldBe(Date.UTC(1, 1, 1, 1, 10).valueOf(), -2174770200000);
shouldBe(Date.UTC(NaN, 1, 1, 1, 10, 10).valueOf(), NaN);
shouldBe(Date.UTC(1, NaN, 1, 1, 10, 10).valueOf(), NaN);
shouldBe(Date.UTC(1, 1, NaN, 1, 10, 10).valueOf(), NaN);
shouldBe(Date.UTC(1, 1, 1, NaN, 10, 10).valueOf(), NaN);
shouldBe(Date.UTC(1, 1, 1, 1, NaN, 10).valueOf(), NaN);
shouldBe(Date.UTC(1, 1, 1, 1, 10, NaN).valueOf(), NaN);
shouldBe(Date.UTC(1990, 1, 1, 3, 10, 10, 10).valueOf(), 633841810010);
shouldBe(Date.UTC(NaN, 1, 1, 3, 10, 10, 10).valueOf(), NaN);
shouldBe(Date.UTC(1990, NaN, 1, 3, 10, 10, 10).valueOf(), NaN);
shouldBe(Date.UTC(1990, 1, NaN, 3, 10, 10, 10).valueOf(), NaN);
shouldBe(Date.UTC(1990, 1, 1, NaN, 10, 10, 10).valueOf(), NaN);
shouldBe(Date.UTC(1990, 1, 1, 3, NaN, 10, 10).valueOf(), NaN);
shouldBe(Date.UTC(1990, 1, 1, 3, 10, NaN, 10).valueOf(), NaN);
shouldBe(Date.UTC(1990, 1, 1, 3, 10, 10, NaN).valueOf(), NaN);
shouldBe(Date.UTC(Infinity, 1, 1, 3, 10, 10, 10).valueOf(), NaN);
shouldBe(Date.UTC(1990, Infinity, 1, 3, 10, 10, 10).valueOf(), NaN);
shouldBe(Date.UTC(1990, 1, Infinity, 3, 10, 10, 10).valueOf(), NaN);
shouldBe(Date.UTC(1990, 1, 1, Infinity, 10, 10, 10).valueOf(), NaN);
shouldBe(Date.UTC(1990, 1, 1, 3, Infinity, 10, 10).valueOf(), NaN);
shouldBe(Date.UTC(1990, 1, 1, 3, 10, Infinity, 10).valueOf(), NaN);
shouldBe(Date.UTC(1990, 1, 1, 3, 10, 10, Infinity).valueOf(), NaN);
shouldBe(Date.UTC(1990, 1, 1, 3, 10, 10, Infinity).valueOf(), NaN);
shouldBe(Date.UTC(-Infinity, 1, 1, 3, 10, 10, 10).valueOf(), NaN);
shouldBe(Date.UTC(1990, -Infinity, 1, 3, 10, 10, 10).valueOf(), NaN);
shouldBe(Date.UTC(1990, 1, -Infinity, 3, 10, 10, 10).valueOf(), NaN);
shouldBe(Date.UTC(1990, 1, 1, -Infinity, 10, 10, 10).valueOf(), NaN);
shouldBe(Date.UTC(1990, 1, 1, 3, -Infinity, 10, 10).valueOf(), NaN);
shouldBe(Date.UTC(1990, 1, 1, 3, 10, -Infinity, 10).valueOf(), NaN);
shouldBe(Date.UTC(1990, 1, 1, 3, 10, 10, -Infinity).valueOf(), NaN);
shouldBe(Date.UTC(NaN).valueOf(), NaN);
shouldBe(Date.UTC(Infinity).valueOf(), NaN);
shouldBe(Date.UTC(-Infinity).valueOf(), NaN);
shouldBe(Date.UTC(0).valueOf(), -2208988800000);
shouldBe(Date.UTC(-0).valueOf(), -2208988800000);
shouldBe(Date.UTC(-10).valueOf(), -62482752000000);
shouldBe(Date.UTC("1990", 1, 1, 3, 10, 10).valueOf(), 633841810000);
shouldBe(Date.UTC("1990", 1, "1", 3, NaN, 10).valueOf(), NaN);
shouldBe(Date.UTC("1990", 1, "1", 3, Infinity, 10).valueOf(), NaN);
shouldBe(Date.UTC("1990", 1, "1", 3, "Infinity", 10).valueOf(), NaN);
shouldBe(Date.UTC("1990", 1, "1", 3, "NaN", 10).valueOf(), NaN);
shouldBe(Date.UTC("1990", 1, "1", 3, "random", 10).valueOf(), NaN);
shouldBe(Date.UTC("1990", 1, "1", 3, "", 10).valueOf(), 633841210000);
shouldBe(Date.UTC(1990, 1, "1", 3, "9", 10).valueOf(), 633841750000);
shouldBe(Date.UTC("1990", "1", "1", "3", "9", "10").valueOf(), 633841750000);
// valueOf
var mutable = 0;
function generateObj(value) {
return {
valueOf: () => {
mutable += 10;
return value;
},
};
}
shouldBe(Date.UTC(generateObj(1)).valueOf(), -2177452800000);
shouldBe(mutable, 10);
shouldBe(Date.UTC(generateObj(1990)).valueOf(), 631152000000);
shouldBe(mutable, 20);
shouldBe(Date.UTC(generateObj(NaN)).valueOf(), NaN);
shouldBe(mutable, 30);
shouldBe(Date.UTC(generateObj(Infinity)).valueOf(), NaN);
shouldBe(mutable, 40);
shouldBe(Date.UTC(generateObj(-Infinity)).valueOf(), NaN);
shouldBe(mutable, 50);
shouldBe(Date.UTC(1990, NaN, generateObj(1)).valueOf(), NaN);
shouldBe(mutable, 60);
shouldBe(Date.UTC(1990, Infinity, generateObj(1)).valueOf(), NaN);
shouldBe(mutable, 70);
shouldBe(Date.UTC(1990, -Infinity, generateObj(1)).valueOf(), NaN);
shouldBe(mutable, 80);
shouldBe(new Date(generateObj(1)).valueOf(), 1);
shouldBe(mutable, 90);
shouldBe(new Date(generateObj(1990)).valueOf(), 1990);
shouldBe(mutable, 100);
shouldBe(new Date(generateObj(NaN)).valueOf(), NaN);
shouldBe(mutable, 110);
shouldBe(new Date(1990, NaN, generateObj(1)).valueOf(), NaN);
shouldBe(mutable, 120);
shouldBe(new Date(1990, Infinity, generateObj(1)).valueOf(), NaN);
shouldBe(mutable, 130);
shouldBe(new Date(1990, -Infinity, generateObj(1)).valueOf(), NaN);
shouldBe(mutable, 140);
shouldBe(new Date(generateObj(1990), generateObj(1), generateObj(1)).valueOf(), 633859200000);
shouldBe(mutable, 170);
shouldBe(new Date(generateObj(1990), generateObj(NaN), generateObj(1)).valueOf(), NaN);
shouldBe(mutable, 200);
shouldBe(new Date(generateObj(NaN), generateObj(1), generateObj(1)).valueOf(), NaN);
shouldBe(mutable, 230);
shouldBe(new Date(generateObj(NaN), 1, 1).valueOf(), NaN);
shouldBe(mutable, 240);
}