MIRROR: javascript for 馃悳's, a tiny runtime with big ambitions
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at master 131 lines 4.2 kB view raw
1// Test dynamic object property assignment 2 3console.log("=== Dynamic Object Assignment Tests ===\n"); 4 5// Test 1: Basic dynamic property assignment using bracket notation 6console.log("Test 1: Basic bracket notation assignment"); 7let obj1 = {}; 8obj1["name"] = "Alice"; 9obj1["age"] = 30; 10obj1["active"] = true; 11console.log(" obj1.name:", obj1["name"]); 12console.log(" obj1.age:", obj1["age"]); 13console.log(" obj1.active:", obj1["active"]); 14 15// Test 2: Dynamic property assignment with variable keys 16console.log("\nTest 2: Variable keys"); 17let obj2 = {}; 18let key1 = "firstName"; 19let key2 = "lastName"; 20let key3 = "email"; 21obj2[key1] = "Bob"; 22obj2[key2] = "Smith"; 23obj2[key3] = "bob@example.com"; 24console.log(" obj2[key1]:", obj2[key1]); 25console.log(" obj2[key2]:", obj2[key2]); 26console.log(" obj2[key3]:", obj2[key3]); 27 28// Test 3: Numeric keys (array-like object) 29console.log("\nTest 3: Numeric keys"); 30let obj3 = {}; 31obj3[0] = "first"; 32obj3[1] = "second"; 33obj3[2] = "third"; 34console.log(" obj3[0]:", obj3[0]); 35console.log(" obj3[1]:", obj3[1]); 36console.log(" obj3[2]:", obj3[2]); 37 38// Test 4: Dynamic property assignment in loop 39console.log("\nTest 4: Loop assignment"); 40let obj4 = {}; 41for (let i = 0; i < 5; i++) { 42 obj4[i] = i * 10; 43} 44console.log(" obj4[0]:", obj4[0]); 45console.log(" obj4[2]:", obj4[2]); 46console.log(" obj4[4]:", obj4[4]); 47 48// Test 5: Mix of dot notation and bracket notation 49console.log("\nTest 5: Mixed notation"); 50let obj5 = {}; 51obj5.static = "dot notation"; 52obj5["dynamic"] = "bracket notation"; 53let propName = "computed"; 54obj5[propName] = "variable key"; 55console.log(" obj5.static:", obj5.static); 56console.log(" obj5['dynamic']:", obj5["dynamic"]); 57console.log(" obj5[propName]:", obj5[propName]); 58 59// Test 6: Overwriting existing properties 60console.log("\nTest 6: Overwrite properties"); 61let obj6 = { name: "Original" }; 62console.log(" Before:", obj6.name); 63obj6["name"] = "Updated"; 64console.log(" After:", obj6["name"]); 65 66// Test 7: Dynamic keys with string concatenation 67console.log("\nTest 7: Concatenated keys"); 68let obj7 = {}; 69let prefix = "prop"; 70obj7[prefix + "1"] = "value1"; 71obj7[prefix + "2"] = "value2"; 72obj7[prefix + "3"] = "value3"; 73console.log(" obj7['prop1']:", obj7["prop1"]); 74console.log(" obj7['prop2']:", obj7["prop2"]); 75console.log(" obj7['prop3']:", obj7["prop3"]); 76 77// Test 8: Building object dynamically from arrays 78console.log("\nTest 8: Build from arrays"); 79let keys = ["x", "y", "z"]; 80let values = [100, 200, 300]; 81let obj8 = {}; 82for (let i = 0; i < keys.length; i++) { 83 obj8[keys[i]] = values[i]; 84} 85console.log(" obj8.x:", obj8["x"]); 86console.log(" obj8.y:", obj8["y"]); 87console.log(" obj8.z:", obj8["z"]); 88 89// Test 9: Nested dynamic assignment 90console.log("\nTest 9: Nested objects"); 91let obj9 = {}; 92obj9["user"] = {}; 93obj9["user"]["name"] = "Charlie"; 94obj9["user"]["age"] = 25; 95console.log(" obj9.user.name:", obj9["user"]["name"]); 96console.log(" obj9.user.age:", obj9["user"]["age"]); 97 98// Test 10: Reading undefined dynamic properties 99console.log("\nTest 10: Undefined properties"); 100let obj10 = { a: 1 }; 101console.log(" obj10['a']:", obj10["a"]); 102console.log(" obj10['b'] (undefined):", obj10["b"]); 103 104// Test 10a: Dynamic access with literal strings 105console.log("\nTest 10a: Literal string keys"); 106let cat = { meow: "purr", sound: "meow meow", age: 3 }; 107console.log(" cat['meow']:", cat["meow"]); 108console.log(" cat['sound']:", cat["sound"]); 109console.log(" cat['age']:", cat["age"]); 110let key = "meow"; 111console.log(" cat[key] where key='meow':", cat[key]); 112 113// Test 11: Dynamic property assignment with expressions 114console.log("\nTest 11: Expression keys"); 115let obj11 = {}; 116obj11[1 + 1] = "two"; 117obj11[2 + 2] = "four"; 118console.log(" obj11[2]:", obj11[2]); 119console.log(" obj11[4]:", obj11[4]); 120 121// Test 12: Creating a map-like structure 122console.log("\nTest 12: Map-like usage"); 123let map = {}; 124map["key1"] = { value: 10, type: "number" }; 125map["key2"] = { value: "hello", type: "string" }; 126map["key3"] = { value: true, type: "boolean" }; 127console.log(" map['key1'].value:", map["key1"]["value"]); 128console.log(" map['key2'].value:", map["key2"]["value"]); 129console.log(" map['key3'].value:", map["key3"]["value"]); 130 131console.log("\n=== All tests completed ===");