description(
'This test case checks that months greater than 11 are handled correctly when passed to the Date constructor and the Date.UTC function. ' +
'The ECMA 262 specification says that months > 11 should be treated as month % 12 and the year as year + floor(month / 12).'
);
var expectedUTC = [1104537600000, 1107216000000, 1109635200000, 1112313600000,
1114905600000, 1117584000000, 1120176000000, 1122854400000,
1125532800000, 1128124800000, 1130803200000, 1133395200000,
1136073600000, 1138752000000, 1141171200000, 1143849600000,
1146441600000, 1149120000000, 1151712000000, 1154390400000,
1157068800000, 1159660800000, 1162339200000, 1164931200000,
1167609600000, 1170288000000, 1172707200000, 1175385600000,
1177977600000, 1180656000000, 1183248000000, 1185926400000,
1188604800000, 1191196800000, 1193875200000, 1196467200000];
for (var i = 0; i < 36; i++) {
var d = new Date(2005, i, 1);
shouldBe('d.getFullYear() + "-" + d.getMonth();', '"' + (2005 + Math.floor(i / 12)) + "-" + (i % 12) + '"');
}
for (var i = 0; i < 36; i++) {
shouldBe('Date.UTC(2005, ' + i + ', 1)', expectedUTC[i].toString());
}