property-modification.js (795B)
1 function getLogString(obj) { 2 let log = getWatchtowerLog(); 3 return log.map(item => { 4 assertEq(item.object, obj); 5 if (typeof item.extra === "symbol") { 6 item.extra = "<symbol>"; 7 } 8 return item.kind + (item.extra ? ": " + item.extra : ""); 9 }).join("\n"); 10 } 11 12 function testBasic() { 13 let o = { a: 10 }; 14 addWatchtowerTarget(o); 15 16 // change-prop-value: a 17 o.a = 12; 18 let p = { a: 15 }; 19 20 // change-prop-value: a 21 Object.assign(o, p); 22 23 // change-prop-value: a 24 Object.defineProperty(o, "a", { value: 19 }); 25 let log = getLogString(o); 26 27 assertEq(log, 28 `change-prop-value: a 29 change-prop-value: a 30 change-prop-value: a`); 31 } 32 33 for (var i = 0; i < 20; i++) { 34 console.log(`Iteration ${i}`); 35 testBasic(); 36 }