summaryrefslogtreecommitdiffstats
path: root/remote/test/unit/test_DomainCache.js
diff options
context:
space:
mode:
Diffstat (limited to 'remote/test/unit/test_DomainCache.js')
-rw-r--r--remote/test/unit/test_DomainCache.js127
1 files changed, 127 insertions, 0 deletions
diff --git a/remote/test/unit/test_DomainCache.js b/remote/test/unit/test_DomainCache.js
new file mode 100644
index 0000000000..e54ebbc314
--- /dev/null
+++ b/remote/test/unit/test_DomainCache.js
@@ -0,0 +1,127 @@
+/* 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();
+});