122 lines
2.8 KiB
JavaScript
122 lines
2.8 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
// Tests the BezierCanvas API in the CubicBezierWidget module
|
|
|
|
var {
|
|
CubicBezier,
|
|
BezierCanvas,
|
|
} = require("resource://devtools/client/shared/widgets/CubicBezierWidget.js");
|
|
|
|
function run_test() {
|
|
offsetsGetterReturnsData();
|
|
convertsOffsetsToCoordinates();
|
|
plotsCanvas();
|
|
}
|
|
|
|
function offsetsGetterReturnsData() {
|
|
info("offsets getter returns an array of 2 offset objects");
|
|
|
|
let b = new BezierCanvas(getCanvasMock(), getCubicBezier(), [0.25, 0]);
|
|
let offsets = b.offsets;
|
|
|
|
Assert.equal(offsets.length, 2);
|
|
|
|
Assert.ok("top" in offsets[0]);
|
|
Assert.ok("left" in offsets[0]);
|
|
Assert.ok("top" in offsets[1]);
|
|
Assert.ok("left" in offsets[1]);
|
|
|
|
Assert.equal(offsets[0].top, "300px");
|
|
Assert.equal(offsets[0].left, "0px");
|
|
Assert.equal(offsets[1].top, "100px");
|
|
Assert.equal(offsets[1].left, "200px");
|
|
|
|
info("offsets getter returns data according to current padding");
|
|
|
|
b = new BezierCanvas(getCanvasMock(), getCubicBezier(), [0, 0]);
|
|
offsets = b.offsets;
|
|
|
|
Assert.equal(offsets[0].top, "400px");
|
|
Assert.equal(offsets[0].left, "0px");
|
|
Assert.equal(offsets[1].top, "0px");
|
|
Assert.equal(offsets[1].left, "200px");
|
|
}
|
|
|
|
function convertsOffsetsToCoordinates() {
|
|
info("Converts offsets to coordinates");
|
|
|
|
const b = new BezierCanvas(getCanvasMock(), getCubicBezier(), [0.25, 0]);
|
|
|
|
let coordinates = b.offsetsToCoordinates({
|
|
style: {
|
|
left: "0px",
|
|
top: "0px",
|
|
},
|
|
});
|
|
Assert.equal(coordinates.length, 2);
|
|
Assert.equal(coordinates[0], 0);
|
|
Assert.equal(coordinates[1], 1.5);
|
|
|
|
coordinates = b.offsetsToCoordinates({
|
|
style: {
|
|
left: "0px",
|
|
top: "300px",
|
|
},
|
|
});
|
|
Assert.equal(coordinates[0], 0);
|
|
Assert.equal(coordinates[1], 0);
|
|
|
|
coordinates = b.offsetsToCoordinates({
|
|
style: {
|
|
left: "200px",
|
|
top: "100px",
|
|
},
|
|
});
|
|
Assert.equal(coordinates[0], 1);
|
|
Assert.equal(coordinates[1], 1);
|
|
}
|
|
|
|
function plotsCanvas() {
|
|
info("Plots the curve to the canvas");
|
|
|
|
let hasDrawnCurve = false;
|
|
const b = new BezierCanvas(getCanvasMock(), getCubicBezier(), [0.25, 0]);
|
|
b.ctx.bezierCurveTo = () => {
|
|
hasDrawnCurve = true;
|
|
};
|
|
b.plot();
|
|
|
|
Assert.ok(hasDrawnCurve);
|
|
}
|
|
|
|
function getCubicBezier() {
|
|
return new CubicBezier([0, 0, 1, 1]);
|
|
}
|
|
|
|
function getCanvasMock(w = 200, h = 400) {
|
|
return {
|
|
getContext() {
|
|
return {
|
|
scale: () => {},
|
|
translate: () => {},
|
|
clearRect: () => {},
|
|
beginPath: () => {},
|
|
closePath: () => {},
|
|
moveTo: () => {},
|
|
lineTo: () => {},
|
|
stroke: () => {},
|
|
arc: () => {},
|
|
fill: () => {},
|
|
bezierCurveTo: () => {},
|
|
save: () => {},
|
|
restore: () => {},
|
|
setTransform: () => {},
|
|
};
|
|
},
|
|
width: w,
|
|
height: h,
|
|
};
|
|
}
|