| // Any copyright is dedicated to the Public Domain. |
| // http://creativecommons.org/licenses/publicdomain/ |
| |
| var watcherCount, setterCount; |
| function watcher(id, oldval, newval) { watcherCount++; return newval; } |
| function setter(newval) { setterCount++; } |
| |
| var p = { set x(v) { setter(v); } }; |
| p.watch('x', watcher); |
| |
| watcherCount = setterCount = 0; |
| p.x = 2; |
| assertEq(setterCount, 1); |
| assertEq(watcherCount, 1); |
| |
| var o = Object.defineProperty({}, 'x', { set:setter, enumerable:true, configurable:true }); |
| o.watch('x', watcher); |
| |
| watcherCount = setterCount = 0; |
| o.x = 2; |
| assertEq(setterCount, 1); |
| assertEq(watcherCount, 1); |
| |
| reportCompare(0, 0, 'ok'); |