gecko-dev/testing/marionette/test/unit/test_sync.js
Andreas Tolfsen 67fe97531f Bug 1453381 - Move Marionette xpcshell tests to subdirectory. r=whimboo
In order to more easily facilitate linting of xpcshell unit tests,
this patch moves the tests to the test/unit subdirectory.

MozReview-Commit-ID: K1rtmreFWRL

--HG--
rename : testing/marionette/test_action.js => testing/marionette/test/unit/test_action.js
rename : testing/marionette/test_assert.js => testing/marionette/test/unit/test_assert.js
rename : testing/marionette/test_browser.js => testing/marionette/test/unit/test_browser.js
rename : testing/marionette/test_cookie.js => testing/marionette/test/unit/test_cookie.js
rename : testing/marionette/test_dom.js => testing/marionette/test/unit/test_dom.js
rename : testing/marionette/test_element.js => testing/marionette/test/unit/test_element.js
rename : testing/marionette/test_error.js => testing/marionette/test/unit/test_error.js
rename : testing/marionette/test_evaluate.js => testing/marionette/test/unit/test_evaluate.js
rename : testing/marionette/test_format.js => testing/marionette/test/unit/test_format.js
rename : testing/marionette/test_message.js => testing/marionette/test/unit/test_message.js
rename : testing/marionette/test_navigate.js => testing/marionette/test/unit/test_navigate.js
rename : testing/marionette/test_session.js => testing/marionette/test/unit/test_session.js
rename : testing/marionette/test_sync.js => testing/marionette/test/unit/test_sync.js
rename : testing/marionette/unit.ini => testing/marionette/test/unit/xpcshell.ini
extra : rebase_source : b77cdb754ddc90d1c4ff0e2f6a8dead5168677fe
2018-04-11 19:54:42 +01:00

75 lines
1.9 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/. */
const {PollPromise} = ChromeUtils.import("chrome://marionette/content/sync.js", {});
const DEFAULT_TIMEOUT = 2000;
add_task(async function test_PollPromise_types() {
for (let typ of [true, false, "foo", 42, [], {}]) {
strictEqual(typ, await new PollPromise(resolve => resolve(typ)));
}
});
add_task(async function test_PollPromise_timeoutElapse() {
let nevals = 0;
let start = new Date().getTime();
await new PollPromise((resolve, reject) => {
++nevals;
reject();
});
let end = new Date().getTime();
greaterOrEqual((end - start), DEFAULT_TIMEOUT);
greaterOrEqual(nevals, 15);
});
add_task(async function test_PollPromise_rethrowError() {
let nevals = 0;
let err;
try {
await PollPromise(() => {
++nevals;
throw new Error();
});
} catch (e) {
err = e;
}
equal(1, nevals);
ok(err instanceof Error);
});
add_task(async function test_PollPromise_noTimeout() {
// run at least once when timeout is 0
let nevals = 0;
let start = new Date().getTime();
await new PollPromise((resolve, reject) => {
++nevals;
reject();
}, {timeout: 0});
let end = new Date().getTime();
equal(1, nevals);
less((end - start), DEFAULT_TIMEOUT);
});
add_task(async function test_PollPromise_timeout() {
let nevals = 0;
let start = new Date().getTime();
await new PollPromise((resolve, reject) => {
++nevals;
reject();
}, {timeout: 100});
let end = new Date().getTime();
greater(nevals, 1);
greaterOrEqual((end - start), 100);
});
add_task(async function test_PollPromise_interval() {
let nevals = 0;
await new PollPromise((resolve, reject) => {
++nevals;
reject();
}, {timeout: 100, interval: 100});
equal(2, nevals);
});