MIRROR: javascript for 馃悳's, a tiny runtime with big ambitions
1console.log('=== Numeric Separator Tests ===\n');
2
3// Test 1: Decimal separators
4console.log('Test 1: Decimal separators');
5console.log('1_000:', 1_000);
6console.log('1_000_000:', 1_000_000);
7console.log('86_400_000:', 86_400_000);
8console.log('1_000 === 1000:', 1_000 === 1000 ? 'PASS' : 'FAIL');
9console.log('1_000_000 === 1000000:', 1_000_000 === 1000000 ? 'PASS' : 'FAIL');
10console.log('86_400_000 === 86400000:', 86_400_000 === 86400000 ? 'PASS' : 'FAIL');
11
12// Test 2: Hexadecimal separators
13console.log('\nTest 2: Hexadecimal separators');
14console.log('0xFF_FF:', 0xFF_FF);
15console.log('0xDE_AD_BE_EF:', 0xDE_AD_BE_EF);
16console.log('0xFF_AA_BB:', 0xFF_AA_BB);
17console.log('0xFF_FF === 65535:', 0xFF_FF === 65535 ? 'PASS' : 'FAIL');
18console.log('0xDE_AD_BE_EF === 3735928559:', 0xDE_AD_BE_EF === 3735928559 ? 'PASS' : 'FAIL');
19
20// Test 3: Binary separators
21console.log('\nTest 3: Binary separators');
22console.log('0b1010_1010:', 0b1010_1010);
23console.log('0b1111_0000_1111_0000:', 0b1111_0000_1111_0000);
24console.log('0b1010_1010 === 170:', 0b1010_1010 === 170 ? 'PASS' : 'FAIL');
25console.log('0b1111_0000_1111_0000 === 61680:', 0b1111_0000_1111_0000 === 61680 ? 'PASS' : 'FAIL');
26
27// Test 4: Octal separators
28console.log('\nTest 4: Octal separators');
29console.log('0o77_00:', 0o77_00);
30console.log('0o123_456:', 0o123_456);
31console.log('0o77_00 === 4032:', 0o77_00 === 4032 ? 'PASS' : 'FAIL');
32console.log('0o123_456 === 42798:', 0o123_456 === 42798 ? 'PASS' : 'FAIL');
33
34// Test 5: Floating point separators
35console.log('\nTest 5: Floating point separators');
36console.log('1_000.5:', 1_000.5);
37console.log('1_000.123_456:', 1_000.123_456);
38console.log('1_000.5 === 1000.5:', 1_000.5 === 1000.5 ? 'PASS' : 'FAIL');
39console.log('1_000.123_456 === 1000.123456:', 1_000.123_456 === 1000.123456 ? 'PASS' : 'FAIL');
40
41// Test 6: Mixed expressions
42console.log('\nTest 6: Mixed expressions');
43const sum = 1_000 + 2_000 + 3_000;
44console.log('1_000 + 2_000 + 3_000 =', sum);
45console.log('Sum === 6000:', sum === 6000 ? 'PASS' : 'FAIL');
46
47const product = 10_00 * 10_0;
48console.log('10_00 * 10_0 =', product);
49console.log('Product === 100000:', product === 100000 ? 'PASS' : 'FAIL');
50
51// Test 7: Comparison with regular literals
52console.log('\nTest 7: Comparison with regular literals');
53console.log('1_2_3_4_5 === 12345:', 1_2_3_4_5 === 12345 ? 'PASS' : 'FAIL');
54console.log('0xA_B_C === 0xABC:', 0xA_B_C === 0xABC ? 'PASS' : 'FAIL');
55console.log('0b1_0_1_0 === 0b1010:', 0b1_0_1_0 === 0b1010 ? 'PASS' : 'FAIL');
56console.log('0o7_7_7 === 0o777:', 0o7_7_7 === 0o777 ? 'PASS' : 'FAIL');
57
58console.log('\n=== All numeric separator tests completed ===');