MIRROR: javascript for 馃悳's, a tiny runtime with big ambitions
1// Test btoa() and atob() Base64 encoding/decoding
2
3console.log("=== Base64 Tests ===\n");
4
5// Test 1: Basic btoa encoding
6console.log("Test 1: Basic btoa encoding");
7let encoded1 = btoa("Hello, World!");
8console.log(" Input: Hello, World!");
9console.log(" Encoded:", encoded1);
10console.log(" Expected: SGVsbG8sIFdvcmxkIQ==");
11console.log(" Pass:", encoded1 === "SGVsbG8sIFdvcmxkIQ==");
12
13// Test 2: Basic atob decoding
14console.log("\nTest 2: Basic atob decoding");
15let decoded2 = atob("SGVsbG8sIFdvcmxkIQ==");
16console.log(" Input: SGVsbG8sIFdvcmxkIQ==");
17console.log(" Decoded:", decoded2);
18console.log(" Expected: Hello, World!");
19console.log(" Pass:", decoded2 === "Hello, World!");
20
21// Test 3: Round-trip test
22console.log("\nTest 3: Round-trip test");
23let original3 = "The quick brown fox jumps over the lazy dog";
24let encoded3 = btoa(original3);
25let decoded3 = atob(encoded3);
26console.log(" Original:", original3);
27console.log(" Encoded:", encoded3);
28console.log(" Decoded:", decoded3);
29console.log(" Pass:", original3 === decoded3);
30
31// Test 4: Empty string
32console.log("\nTest 4: Empty string");
33let encoded4 = btoa("");
34let decoded4 = atob("");
35console.log(" btoa(''):", encoded4);
36console.log(" atob(''):", decoded4);
37console.log(" Pass:", encoded4 === "" && decoded4 === "");
38
39// Test 5: Single character
40console.log("\nTest 5: Single character");
41let encoded5 = btoa("A");
42console.log(" btoa('A'):", encoded5);
43console.log(" Expected: QQ==");
44console.log(" Pass:", encoded5 === "QQ==");
45
46// Test 6: Two characters
47console.log("\nTest 6: Two characters");
48let encoded6 = btoa("AB");
49console.log(" btoa('AB'):", encoded6);
50console.log(" Expected: QUI=");
51console.log(" Pass:", encoded6 === "QUI=");
52
53// Test 7: Three characters (no padding)
54console.log("\nTest 7: Three characters");
55let encoded7 = btoa("ABC");
56console.log(" btoa('ABC'):", encoded7);
57console.log(" Expected: QUJD");
58console.log(" Pass:", encoded7 === "QUJD");
59
60// Test 8: Numbers in string
61console.log("\nTest 8: Numbers in string");
62let encoded8 = btoa("12345");
63console.log(" btoa('12345'):", encoded8);
64let decoded8 = atob(encoded8);
65console.log(" atob result:", decoded8);
66console.log(" Pass:", decoded8 === "12345");
67
68// Test 9: Special characters
69console.log("\nTest 9: Special characters");
70let special = "!@#$%^&*()";
71let encoded9 = btoa(special);
72let decoded9 = atob(encoded9);
73console.log(" Original:", special);
74console.log(" Encoded:", encoded9);
75console.log(" Decoded:", decoded9);
76console.log(" Pass:", special === decoded9);
77
78// Test 10: JSON data
79console.log("\nTest 10: JSON data");
80let jsonData = '{"name":"test","value":123}';
81let encoded10 = btoa(jsonData);
82let decoded10 = atob(encoded10);
83console.log(" JSON:", jsonData);
84console.log(" Encoded:", encoded10);
85console.log(" Decoded:", decoded10);
86console.log(" Pass:", jsonData === decoded10);
87
88console.log("\n=== All Base64 tests completed ===");