gecko-dev/testing/marionette/test_assert.js
Andreas Tolfsen e5010028a2 Bug 1313865 - Centralise common Marionette assertions; r=automatedtester,maja_zf
Many tests that result in throwing errors, amongst those many type-
and platform checks, are repeated throughout the Marionette code base.
This patch centralises the most common of these, typically reducing
consumer calls from three to one line.

Example usage:

	assert.defined(cmd.parameters.value);
	assert.postiveInteger(cmd.parameters.value,
	    error.pprint`Expected 'value' (${value}) to be a signed integer`);
	// InvalidArgumentError: Expected 'value' ([object Object] {"foo": "bar"}) to be a positive integer

MozReview-Commit-ID: BHOaDazeGer

--HG--
extra : rebase_source : 1d35c10e29d4fd536829e9714ae65bcd14ad21f8
2016-10-31 22:00:21 +00:00

86 lines
2.1 KiB
JavaScript

/* 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_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_integer() {
assert.integer(1);
assert.integer(0);
assert.integer(-1);
Assert.throws(() => assert.integer("foo"), 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());
Assert.throws(() => assert.object(42), 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();
});