MIRROR: javascript for 馃悳's, a tiny runtime with big ambitions
1function test1() {
2 let obj = {};
3 obj.x = 10;
4 obj.y = 20;
5 return obj.x + obj.y;
6}
7for (let i = 0; i < 110; i++) test1();
8console.log('[test1] object put/get field:', test1(), 'ok:', test1() === 30);
9
10function test2() {
11 let obj = {};
12 let key = 'hello';
13 obj[key] = 42;
14 return obj[key];
15}
16for (let i = 0; i < 110; i++) test2();
17console.log('[test2] computed prop access:', test2(), 'ok:', test2() === 42);
18
19function test3(a, b, c) {
20 let arr = [a, b, c];
21 return arr[0] + arr[1] + arr[2];
22}
23for (let i = 0; i < 110; i++) test3(1, 2, 3);
24console.log('[test3] array literal:', test3(10, 20, 30), 'ok:', test3(10, 20, 30) === 60);
25
26var globalVal = 0;
27function test4(n) {
28 globalVal = n;
29 return globalVal;
30}
31for (let i = 0; i < 110; i++) test4(i);
32console.log('[test4] put global:', test4(99), 'ok:', test4(99) === 99);
33
34function test5(n) {
35 let obj = {};
36 for (let i = 0; i < n; i++) {
37 obj['k' + i] = i;
38 }
39 return obj.k0 + obj.k1 + obj.k2;
40}
41for (let i = 0; i < 110; i++) test5(5);
42console.log('[test5] loop object build:', test5(5), 'ok:', test5(5) === 3);
43
44function test6(n) {
45 let sum = 0;
46 for (let i = 0; i < n; i++) {
47 let pair = [i, i + 1];
48 sum = sum + pair[0] + pair[1];
49 }
50 return sum;
51}
52for (let i = 0; i < 110; i++) test6(10);
53let r6 = test6(100);
54console.log('[test6] array in loop:', r6, 'ok:', r6 === 10000);
55
56function test7() {
57 let arr = [0, 0, 0];
58 arr[0] = 10;
59 arr[1] = 20;
60 arr[2] = 30;
61 return arr[0] + arr[1] + arr[2];
62}
63for (let i = 0; i < 110; i++) test7();
64console.log('[test7] put_elem numeric:', test7(), 'ok:', test7() === 60);
65
66function test8() {
67 let arr = [];
68 return arr.length;
69}
70for (let i = 0; i < 110; i++) test8();
71console.log('[test8] empty array:', test8(), 'ok:', test8() === 0);
72
73function test9() {
74 let outer = {};
75 outer.inner = {};
76 outer.inner.val = 42;
77 return outer.inner.val;
78}
79for (let i = 0; i < 110; i++) test9();
80console.log('[test9] nested objects:', test9(), 'ok:', test9() === 42);
81
82function reader(obj) {
83 return obj.a + obj.b;
84}
85function test10() {
86 let o = {};
87 o.a = 3;
88 o.b = 7;
89 return reader(o);
90}
91for (let i = 0; i < 110; i++) test10();
92console.log('[test10] obj as arg:', test10(), 'ok:', test10() === 10);