MIRROR: javascript for 馃悳's, a tiny runtime with big ambitions
1// Test Date builtin functionality
2
3// Test 1: Date.now() returns a number
4console.log('Test 1: Date.now() returns a number');
5const now1 = Date.now();
6console.log('Date.now() =', now1);
7console.log('typeof Date.now() =', typeof now1);
8
9// Test 2: Date.now() returns milliseconds since epoch
10console.log('\nTest 2: Date.now() returns reasonable timestamp');
11const now2 = Date.now();
12// Should be a large number (milliseconds since 1970)
13console.log('Date.now() > 1000000000000 ?', now2 > 1000000000000);
14
15// Test 3: new Date() creates an object
16console.log('\nTest 3: new Date() creates an object');
17const d1 = new Date();
18console.log('typeof new Date() =', typeof d1);
19console.log('new Date() =', d1);
20
21// Test 4: new Date(timestamp) works
22console.log('\nTest 4: new Date(timestamp)');
23const d2 = new Date(1234567890000);
24console.log('new Date(1234567890000) =', d2);
25
26// Test 5: Date.now() is monotonic (or at least consistent)
27console.log('\nTest 5: Date.now() consistency');
28const t1 = Date.now();
29const t2 = Date.now();
30console.log('t1 =', t1);
31console.log('t2 =', t2);
32console.log('t2 >= t1 ?', t2 >= t1);
33
34// Test 6: Multiple calls to Date.now() return numbers
35console.log('\nTest 6: Multiple Date.now() calls');
36const times = [];
37for (let i = 0; i < 3; i++) {
38 times.push(Date.now());
39}
40console.log('Times:', times);
41console.log('All are numbers?', times.every(t => typeof t === 'number'));
42
43// Test 7: Date constructor with no args vs Date.now()
44console.log('\nTest 7: Compare new Date() and Date.now()');
45const dateObj = new Date();
46const nowTime = Date.now();
47console.log('new Date() created:', dateObj);
48console.log('Date.now() =', nowTime);
49
50console.log('\nAll Date tests completed!');