gecko-dev/testing/marionette/test_element.js
Andreas Tolfsen 05e86fe521 Bug 1253244 - Correct x,y offset type checks and add tests; r=automatedtester
The xOffset and yOffset arguments to element.coordinates previously
checked loose falsiness.  If a number <= 0 would be given as an argument,
they would not be used and it would return the centre of the element.

This change adds more checks, documentation, and tests.

MozReview-Commit-ID: KmsiVFipzWx

--HG--
extra : rebase_source : 96e6c8c127071356fec029f5eaa4254ae60930b3
2016-03-04 15:34:28 +00:00

45 lines
1.4 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 {utils: Cu} = Components;
Cu.import("chrome://marionette/content/element.js");
let el = {
getBoundingClientRect: function() {
return {
top: 0,
left: 0,
width: 100,
height: 100,
};
}
};
add_test(function test_coordinates() {
let p = element.coordinates(el);
ok(p.hasOwnProperty("x"));
ok(p.hasOwnProperty("y"));
equal("number", typeof p.x);
equal("number", typeof p.y);
deepEqual({x: 50, y: 50}, element.coordinates(el));
deepEqual({x: 10, y: 10}, element.coordinates(el, 10, 10));
deepEqual({x: -5, y: -5}, element.coordinates(el, -5, -5));
Assert.throws(() => element.coordinates(null));
Assert.throws(() => element.coordinates(el, "string", undefined));
Assert.throws(() => element.coordinates(el, undefined, "string"));
Assert.throws(() => element.coordinates(el, "string", "string"));
Assert.throws(() => element.coordinates(el, {}, undefined));
Assert.throws(() => element.coordinates(el, undefined, {}));
Assert.throws(() => element.coordinates(el, {}, {}));
Assert.throws(() => element.coordinates(el, [], undefined));
Assert.throws(() => element.coordinates(el, undefined, []));
Assert.throws(() => element.coordinates(el, [], []));
run_next_test();
});