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.
153 lines
3.5 KiB
153 lines
3.5 KiB
var ms_day = 24 * 60 * 60 * 1000;
|
|
|
|
/*===
|
|
time value basic tests
|
|
1970-01-01T00:00:00.000Z
|
|
1970-01-01T00:00:01.000Z
|
|
1970-01-01T00:00:01.123Z
|
|
1970-01-01T01:00:00.000Z
|
|
1970-01-02T00:00:00.000Z
|
|
===*/
|
|
|
|
print('time value basic tests');
|
|
|
|
try {
|
|
print(new Date(0).toISOString());
|
|
print(new Date(1000).toISOString());
|
|
print(new Date(1123).toISOString());
|
|
print(new Date(3600e3).toISOString());
|
|
print(new Date(86400e3).toISOString());
|
|
} catch (e) {
|
|
print(e.name);
|
|
}
|
|
|
|
/*===
|
|
leap year tests
|
|
1903 1 28
|
|
1903 2 1
|
|
1904 1 28
|
|
1904 1 29
|
|
1904 2 1
|
|
1900 1 28
|
|
1900 2 1
|
|
2000 1 28
|
|
2000 1 29
|
|
2000 2 1
|
|
===*/
|
|
|
|
print('leap year tests');
|
|
|
|
function leapYearTests() {
|
|
var d;
|
|
|
|
// 1903 is not a leap year
|
|
d = new Date(Date.UTC(1903, 1, 28)); // Feb 28, 1903
|
|
print(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate());
|
|
d = new Date(Date.UTC(1903, 1, 29)); // wraps to Mar 1, 1903
|
|
print(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate());
|
|
|
|
// 1904 is a leap year (4-year rule)
|
|
d = new Date(Date.UTC(1904, 1, 28)); // Feb 28, 1904
|
|
print(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate());
|
|
d = new Date(Date.UTC(1904, 1, 29)); // Feb 29, 1904
|
|
print(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate());
|
|
d = new Date(Date.UTC(1904, 1, 30)); // wraps to Mar 1, 1904
|
|
print(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate());
|
|
|
|
// 1900 is not a leap year (100-year rule)
|
|
d = new Date(Date.UTC(1900, 1, 28)); // Feb 28, 1900
|
|
print(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate());
|
|
d = new Date(Date.UTC(1900, 1, 29)); // wraps to Mar 1, 1900
|
|
print(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate());
|
|
|
|
// 2000 is a leap year (400-year rule)
|
|
d = new Date(Date.UTC(2000, 1, 28)); // Feb 28, 2000
|
|
print(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate());
|
|
d = new Date(Date.UTC(2000, 1, 29)); // Feb 29, 2000
|
|
print(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate());
|
|
d = new Date(Date.UTC(2000, 1, 30)); // wraps to Mar 1, 2000
|
|
print(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate());
|
|
}
|
|
|
|
try {
|
|
leapYearTests();
|
|
} catch (e) {
|
|
print(e.name);
|
|
}
|
|
|
|
/*===
|
|
month day counts
|
|
1903 31 28 31 30 31 30 31 31 30 31 30 31
|
|
1904 31 29 31 30 31 30 31 31 30 31 30 31
|
|
1900 31 28 31 30 31 30 31 31 30 31 30 31
|
|
2000 31 29 31 30 31 30 31 31 30 31 30 31
|
|
===*/
|
|
|
|
print('month day counts');
|
|
|
|
function getMonthDayCount(year, month) {
|
|
var dt;
|
|
var res = 0;
|
|
|
|
dt = new Date(Date.UTC(year, month, 1));
|
|
|
|
while (dt.getUTCMonth() === month) {
|
|
res++;
|
|
dt = new Date(dt.getTime() + ms_day);
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
function testMonthDays() {
|
|
var years = [ 1903 /* non-leap */, 1904 /* leap */, 1900 /* non-leap */, 2000 /* leap */ ];
|
|
var year;
|
|
var month;
|
|
var i;
|
|
var tmp;
|
|
|
|
for (i = 0; i < years.length; i++) {
|
|
year = years[i];
|
|
tmp = [];
|
|
for (month = 0; month < 12; month++) {
|
|
tmp.push(getMonthDayCount(year, month));
|
|
}
|
|
print(year, tmp.join(' '));
|
|
}
|
|
}
|
|
|
|
try {
|
|
testMonthDays();
|
|
} catch (e) {
|
|
print(e.name);
|
|
}
|
|
|
|
/*===
|
|
week day tests
|
|
4
|
|
5 6 0 1 2 3 4 5 6 0
|
|
===*/
|
|
|
|
print('week day tests');
|
|
|
|
function testWeekDays() {
|
|
var dt;
|
|
var i;
|
|
var tmp = [];
|
|
|
|
dt = new Date(0); // Jan 1, 1970 is a thursday (= 4)
|
|
print(dt.getUTCDay());
|
|
|
|
for (i = 0; i < 10; i++) {
|
|
dt = new Date(dt.getTime() + ms_day);
|
|
tmp.push(dt.getUTCDay());
|
|
}
|
|
|
|
print(tmp.join(' '));
|
|
}
|
|
|
|
try {
|
|
testWeekDays();
|
|
} catch (e) {
|
|
print(e.name);
|
|
}
|
|
|