Bug 912121 - Migrate major DevTools directories. rs=devtools
Move major DevTools files to new directories using the following steps: hg mv browser/devtools devtools/client hg mv toolkit/devtools/server devtools/server hg mv toolkit/devtools devtools/shared No other changes are made.
This commit is contained in:
85
devtools/client/shared/test/browser_observableobject.js
Normal file
85
devtools/client/shared/test/browser_observableobject.js
Normal file
@@ -0,0 +1,85 @@
|
||||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
function test() {
|
||||
let {require} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
|
||||
let ObservableObject = require("devtools/shared/observable-object");
|
||||
|
||||
let rawObject = {};
|
||||
let oe = new ObservableObject(rawObject);
|
||||
|
||||
function str(o) {
|
||||
return JSON.stringify(o);
|
||||
}
|
||||
|
||||
function areObjectsSynced() {
|
||||
is(str(rawObject), str(oe.object), "Objects are synced");
|
||||
}
|
||||
|
||||
areObjectsSynced();
|
||||
|
||||
let index = 0;
|
||||
let expected = [
|
||||
{type: "set", path: "foo", value: 4},
|
||||
{type: "get", path: "foo", value: 4},
|
||||
{type: "get", path: "foo", value: 4},
|
||||
{type: "get", path: "bar", value: undefined},
|
||||
{type: "get", path: "bar", value: undefined},
|
||||
{type: "set", path: "bar", value: {}},
|
||||
{type: "get", path: "bar", value: {}},
|
||||
{type: "get", path: "bar", value: {}},
|
||||
{type: "set", path: "bar.a", value: [1,2,3,4]},
|
||||
{type: "get", path: "bar", value: {a:[1,2,3,4]}},
|
||||
{type: "set", path: "bar.mop", value: 1},
|
||||
{type: "set", path: "bar", value: {}},
|
||||
{type: "set", path: "foo", value: [{a:42}]},
|
||||
{type: "get", path: "foo", value: [{a:42}]},
|
||||
{type: "get", path: "foo.0", value: {a:42}},
|
||||
{type: "get", path: "foo.0.a", value: 42},
|
||||
{type: "get", path: "foo", value: [{a:42}]},
|
||||
{type: "get", path: "foo.0", value: {a:42}},
|
||||
{type: "set", path: "foo.0.a", value: 2},
|
||||
{type: "get", path: "foo", value: [{a:2}]},
|
||||
{type: "get", path: "bar", value: {}},
|
||||
{type: "set", path: "foo.1", value: {}},
|
||||
];
|
||||
|
||||
function callback(event, path, value) {
|
||||
oe.off("get", callback);
|
||||
ok(event, "event defined");
|
||||
ok(path, "path defined");
|
||||
if (index >= expected.length) {
|
||||
return;
|
||||
}
|
||||
let e = expected[index];
|
||||
is(event, e.type, "[" + index + "] Right event received");
|
||||
is(path.join("."), e.path, "[" + index + "] Path valid");
|
||||
is(str(value), str(e.value), "[" + index + "] Value valid");
|
||||
index++;
|
||||
areObjectsSynced();
|
||||
oe.on("get", callback);
|
||||
}
|
||||
|
||||
oe.on("set", callback);
|
||||
oe.on("get", callback);
|
||||
|
||||
oe.object.foo = 4;
|
||||
oe.object.foo;
|
||||
Object.getOwnPropertyDescriptor(oe.object, "foo")
|
||||
oe.object["bar"];
|
||||
oe.object.bar;
|
||||
oe.object.bar = {};
|
||||
oe.object.bar;
|
||||
oe.object.bar.a = [1,2,3,4];
|
||||
Object.defineProperty(oe.object.bar, "mop", {value:1});
|
||||
oe.object.bar = {};
|
||||
oe.object.foo = [{a:42}];
|
||||
oe.object.foo[0].a;
|
||||
oe.object.foo[0].a = 2;
|
||||
oe.object.foo[1] = oe.object.bar;
|
||||
|
||||
is(index, expected.length, "Event count is right");
|
||||
is(oe.object.bar, oe.object.bar, "Object attributes are wrapped only once");
|
||||
|
||||
finish();
|
||||
}
|
||||
Reference in New Issue
Block a user