зеркало из https://github.com/mozilla/gecko-dev.git
128 строки
2.6 KiB
JavaScript
128 строки
2.6 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
const { Domain } = ChromeUtils.import(
|
|
"chrome://remote/content/domains/Domain.jsm"
|
|
);
|
|
const { DomainCache } = ChromeUtils.import(
|
|
"chrome://remote/content/domains/DomainCache.jsm"
|
|
);
|
|
|
|
class MockSession {
|
|
onEvent() {}
|
|
}
|
|
|
|
const noopSession = new MockSession();
|
|
|
|
add_test(function test_DomainCache_constructor() {
|
|
new DomainCache(noopSession, {});
|
|
|
|
run_next_test();
|
|
});
|
|
|
|
add_test(function test_DomainCache_domainSupportsMethod() {
|
|
const modules = {
|
|
Foo: class extends Domain {
|
|
bar() {}
|
|
},
|
|
};
|
|
const domains = new DomainCache(noopSession, modules);
|
|
|
|
ok(domains.domainSupportsMethod("Foo", "bar"));
|
|
ok(!domains.domainSupportsMethod("Foo", "baz"));
|
|
ok(!domains.domainSupportsMethod("foo", "bar"));
|
|
|
|
run_next_test();
|
|
});
|
|
|
|
add_test(function test_DomainCache_get_invalidModule() {
|
|
Assert.throws(() => {
|
|
const domains = new DomainCache(noopSession, { Foo: undefined });
|
|
domains.get("Foo");
|
|
}, /UnknownMethodError/);
|
|
|
|
run_next_test();
|
|
});
|
|
|
|
add_test(function test_DomainCache_get_missingConstructor() {
|
|
Assert.throws(() => {
|
|
const domains = new DomainCache(noopSession, { Foo: {} });
|
|
domains.get("Foo");
|
|
}, /TypeError/);
|
|
|
|
run_next_test();
|
|
});
|
|
|
|
add_test(function test_DomainCache_get_superClassNotDomain() {
|
|
Assert.throws(() => {
|
|
const domains = new DomainCache(noopSession, { Foo: class {} });
|
|
domains.get("Foo");
|
|
}, /TypeError/);
|
|
|
|
run_next_test();
|
|
});
|
|
|
|
add_test(function test_DomainCache_get_constructs() {
|
|
let eventFired;
|
|
class Session {
|
|
onEvent(event) {
|
|
eventFired = event;
|
|
}
|
|
}
|
|
|
|
let constructed = false;
|
|
class Foo extends Domain {
|
|
constructor() {
|
|
super();
|
|
constructed = true;
|
|
}
|
|
}
|
|
|
|
const session = new Session();
|
|
const domains = new DomainCache(session, { Foo });
|
|
|
|
const foo = domains.get("Foo");
|
|
ok(constructed);
|
|
ok(foo instanceof Foo);
|
|
|
|
const event = {};
|
|
foo.emit(event);
|
|
equal(event, eventFired);
|
|
|
|
run_next_test();
|
|
});
|
|
|
|
add_test(function test_DomainCache_size() {
|
|
class Foo extends Domain {}
|
|
const domains = new DomainCache(noopSession, { Foo });
|
|
|
|
equal(domains.size, 0);
|
|
domains.get("Foo");
|
|
equal(domains.size, 1);
|
|
|
|
run_next_test();
|
|
});
|
|
|
|
add_test(function test_DomainCache_clear() {
|
|
let dtorCalled = false;
|
|
class Foo extends Domain {
|
|
destructor() {
|
|
dtorCalled = true;
|
|
}
|
|
}
|
|
|
|
const domains = new DomainCache(noopSession, { Foo });
|
|
|
|
equal(domains.size, 0);
|
|
domains.get("Foo");
|
|
equal(domains.size, 1);
|
|
|
|
domains.clear();
|
|
equal(domains.size, 0);
|
|
ok(dtorCalled);
|
|
|
|
run_next_test();
|
|
});
|