summaryrefslogtreecommitdiffstats
path: root/testing/marionette/test_assert.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/marionette/test_assert.js')
-rw-r--r--testing/marionette/test_assert.js126
1 files changed, 126 insertions, 0 deletions
diff --git a/testing/marionette/test_assert.js b/testing/marionette/test_assert.js
new file mode 100644
index 000000000..c14f2852e
--- /dev/null
+++ b/testing/marionette/test_assert.js
@@ -0,0 +1,126 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+const {utils: Cu} = Components;
+
+Cu.import("chrome://marionette/content/assert.js");
+Cu.import("chrome://marionette/content/error.js");
+
+add_test(function test_session() {
+ assert.session({sessionId: "foo"});
+ for (let typ of [null, undefined, ""]) {
+ Assert.throws(() => assert.session({sessionId: typ}), InvalidSessionIDError);
+ }
+
+ run_next_test();
+});
+
+add_test(function test_platforms() {
+ // at least one will fail
+ let raised;
+ for (let fn of [assert.firefox, assert.fennec, assert.b2g, assert.mobile]) {
+ try {
+ fn();
+ } catch (e) {
+ raised = e;
+ }
+ }
+ ok(raised instanceof UnsupportedOperationError);
+
+ run_next_test();
+});
+
+add_test(function test_defined() {
+ assert.defined({});
+ Assert.throws(() => assert.defined(undefined), InvalidArgumentError);
+
+ run_next_test();
+});
+
+add_test(function test_number() {
+ assert.number(1);
+ assert.number(0);
+ assert.number(-1);
+ assert.number(1.2);
+ for (let i of ["foo", "1", {}, [], NaN, Infinity, undefined]) {
+ Assert.throws(() => assert.number(i), InvalidArgumentError);
+ }
+ run_next_test();
+});
+
+add_test(function test_integer() {
+ assert.integer(1);
+ assert.integer(0);
+ assert.integer(-1);
+ Assert.throws(() => assert.integer("foo"), InvalidArgumentError);
+ Assert.throws(() => assert.integer(1.2), InvalidArgumentError);
+
+ run_next_test();
+});
+
+add_test(function test_positiveInteger() {
+ assert.positiveInteger(1);
+ assert.positiveInteger(0);
+ Assert.throws(() => assert.positiveInteger(-1), InvalidArgumentError);
+ Assert.throws(() => assert.positiveInteger("foo"), InvalidArgumentError);
+
+ run_next_test();
+});
+
+add_test(function test_boolean() {
+ assert.boolean(true);
+ assert.boolean(false);
+ Assert.throws(() => assert.boolean("false"), InvalidArgumentError);
+ Assert.throws(() => assert.boolean(undefined), InvalidArgumentError);
+
+ run_next_test();
+});
+
+add_test(function test_string() {
+ assert.string("foo");
+ assert.string(`bar`);
+ Assert.throws(() => assert.string(42), InvalidArgumentError);
+
+ run_next_test();
+});
+
+add_test(function test_object() {
+ assert.object({});
+ assert.object(new Object());
+ for (let typ of [42, "foo", true, null, undefined]) {
+ Assert.throws(() => assert.object(typ), InvalidArgumentError);
+ }
+
+ run_next_test();
+});
+
+add_test(function test_in() {
+ assert.in("foo", {foo: 42});
+ for (let typ of [{}, 42, true, null, undefined]) {
+ Assert.throws(() => assert.in("foo", typ), InvalidArgumentError);
+ }
+
+ run_next_test();
+});
+
+add_test(function test_array() {
+ assert.array([]);
+ assert.array(new Array());
+ Assert.throws(() => assert.array(42), InvalidArgumentError);
+ Assert.throws(() => assert.array({}), InvalidArgumentError);
+
+ run_next_test();
+});
+
+add_test(function test_that() {
+ equal(1, assert.that(n => n + 1)(1));
+ Assert.throws(() => assert.that(() => false)());
+ Assert.throws(() => assert.that(val => val)(false));
+ Assert.throws(() => assert.that(val => val, "foo", SessionNotCreatedError)(false),
+ SessionNotCreatedError);
+
+ run_next_test();
+});