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