Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

"use strict";
const { types } = require("resource://devtools/shared/protocol.js");
function run_test() {
types.addActorType("myActor1");
types.addActorType("myActor2");
types.addActorType("myActor3");
types.addPolymorphicType("ptype1", ["myActor1", "myActor2"]);
const ptype1 = types.getType("ptype1");
Assert.equal(ptype1.name, "ptype1");
Assert.equal(ptype1.category, "polymorphic");
types.addPolymorphicType("ptype2", ["myActor1", "myActor2", "myActor3"]);
const ptype2 = types.getType("ptype2");
Assert.equal(ptype2.name, "ptype2");
Assert.equal(ptype2.category, "polymorphic");
// Polymorphic types only accept actor types
try {
types.addPolymorphicType("ptype", ["myActor1", "myActor4"]);
Assert.ok(false, "getType should fail");
} catch (ex) {
Assert.equal(ex.toString(), "Error: Unknown type: myActor4");
}
try {
types.addPolymorphicType("ptype", ["myActor1", "string"]);
Assert.ok(false, "getType should fail");
} catch (ex) {
Assert.equal(
ex.toString(),
"Error: In polymorphic type 'myActor1,string', the type 'string' isn't an actor"
);
}
try {
types.addPolymorphicType("ptype", ["myActor1", "boolean"]);
Assert.ok(false, "getType should fail");
} catch (ex) {
Assert.equal(
ex.toString(),
"Error: In polymorphic type 'myActor1,boolean', the type 'boolean' isn't an actor"
);
}
// Polymorphic types are not compatible with array or nullables
try {
types.addPolymorphicType("ptype", ["array:myActor1", "myActor2"]);
Assert.ok(false, "addType should fail");
} catch (ex) {
Assert.equal(
ex.toString(),
"Error: In polymorphic type 'array:myActor1,myActor2', the type 'array:myActor1' isn't an actor"
);
}
try {
types.addPolymorphicType("ptype", ["nullable:myActor1", "myActor2"]);
Assert.ok(false, "addType should fail");
} catch (ex) {
Assert.equal(
ex.toString(),
"Error: In polymorphic type 'nullable:myActor1,myActor2', the type 'nullable:myActor1' isn't an actor"
);
}
}