/* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ "use strict"; /* eslint-disable no-tabs */ const { RemoteAgentError, UnknownMethodError, UnsupportedError } = ChromeUtils.importESModule("chrome://remote/content/cdp/Error.sys.mjs"); add_task(function test_RemoteAgentError_ctor() { const e1 = new RemoteAgentError(); equal(e1.name, "RemoteAgentError"); equal(e1.message, ""); equal(e1.cause, e1.message); const e2 = new RemoteAgentError("message"); equal(e2.message, "message"); equal(e2.cause, e2.message); const e3 = new RemoteAgentError("message", "cause"); equal(e3.message, "message"); equal(e3.cause, "cause"); }); add_task(function test_RemoteAgentError_notify() { // nothing much we can test, except test that it doesn't throw new RemoteAgentError().notify(); }); add_task(function test_RemoteAgentError_toString() { const e = new RemoteAgentError("message"); equal(e.toString(), RemoteAgentError.format(e)); equal( e.toString({ stack: true }), RemoteAgentError.format(e, { stack: true }) ); }); add_task(function test_RemoteAgentError_format() { const { format } = RemoteAgentError; equal(format({ name: "HippoError" }), "HippoError"); equal(format({ name: "HorseError", message: "neigh" }), "HorseError: neigh"); const dog = { name: "DogError", message: "woof", stack: " one\ntwo\nthree ", }; equal(format(dog), "DogError: woof"); equal( format(dog, { stack: true }), `DogError: woof: one two three` ); const cat = { name: "CatError", message: "meow", stack: "four\nfive\nsix", cause: dog, }; equal(format(cat), "CatError: meow"); equal( format(cat, { stack: true }), `CatError: meow: four five six caused by: DogError: woof: one two three` ); }); add_task(function test_RemoteAgentError_fromJSON() { const cdpErr = { message: `TypeError: foo: bar baz`, }; const err = RemoteAgentError.fromJSON(cdpErr); equal(err.message, "TypeError: foo"); equal(err.stack, "bar\nbaz"); equal(err.cause, null); }); add_task(function test_UnsupportedError() { ok(new UnsupportedError() instanceof RemoteAgentError); }); add_task(function test_UnknownMethodError() { ok(new UnknownMethodError() instanceof RemoteAgentError); ok(new UnknownMethodError("domain").message.endsWith("domain")); ok( new UnknownMethodError("domain", "command").message.endsWith( "domain.command" ) ); });