test_bezierCanvas.js (2596B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 // Tests the BezierCanvas API in the CubicBezierWidget module 7 8 var { 9 CubicBezier, 10 BezierCanvas, 11 } = require("resource://devtools/client/shared/widgets/CubicBezierWidget.js"); 12 13 function run_test() { 14 const doc = Services.appShell.createWindowlessBrowser(false).document; 15 const canvas = doc.createElement("canvas"); 16 canvas.setAttribute("width", 200); 17 canvas.setAttribute("height", 400); 18 doc.body.appendChild(canvas); 19 20 offsetsGetterReturnsData(canvas); 21 convertsOffsetsToCoordinates(canvas); 22 plotsCanvas(canvas); 23 } 24 25 function offsetsGetterReturnsData(canvas) { 26 info("offsets getter returns an array of 2 offset objects"); 27 28 let b = new BezierCanvas(canvas, getCubicBezier(), [0.25, 0]); 29 let offsets = b.offsets; 30 31 Assert.equal(offsets.length, 2); 32 33 Assert.ok("top" in offsets[0]); 34 Assert.ok("left" in offsets[0]); 35 Assert.ok("top" in offsets[1]); 36 Assert.ok("left" in offsets[1]); 37 38 Assert.equal(offsets[0].top, "300px"); 39 Assert.equal(offsets[0].left, "0px"); 40 Assert.equal(offsets[1].top, "100px"); 41 Assert.equal(offsets[1].left, "200px"); 42 43 info("offsets getter returns data according to current padding"); 44 45 b = new BezierCanvas(canvas, getCubicBezier(), [0, 0]); 46 offsets = b.offsets; 47 48 Assert.equal(offsets[0].top, "400px"); 49 Assert.equal(offsets[0].left, "0px"); 50 Assert.equal(offsets[1].top, "0px"); 51 Assert.equal(offsets[1].left, "200px"); 52 } 53 54 function convertsOffsetsToCoordinates(canvas) { 55 info("Converts offsets to coordinates"); 56 57 const b = new BezierCanvas(canvas, getCubicBezier(), [0.25, 0]); 58 59 let coordinates = b.offsetsToCoordinates({ 60 style: { 61 left: "0px", 62 top: "0px", 63 }, 64 }); 65 Assert.equal(coordinates.length, 2); 66 Assert.equal(coordinates[0], 0); 67 Assert.equal(coordinates[1], 1.5); 68 69 coordinates = b.offsetsToCoordinates({ 70 style: { 71 left: "0px", 72 top: "300px", 73 }, 74 }); 75 Assert.equal(coordinates[0], 0); 76 Assert.equal(coordinates[1], 0); 77 78 coordinates = b.offsetsToCoordinates({ 79 style: { 80 left: "200px", 81 top: "100px", 82 }, 83 }); 84 Assert.equal(coordinates[0], 1); 85 Assert.equal(coordinates[1], 1); 86 } 87 88 function plotsCanvas(canvas) { 89 info("Plots the curve to the canvas"); 90 91 let hasDrawnCurve = false; 92 const b = new BezierCanvas(canvas, getCubicBezier(), [0.25, 0]); 93 b.ctx.bezierCurveTo = () => { 94 hasDrawnCurve = true; 95 }; 96 b.plot(); 97 98 Assert.ok(hasDrawnCurve); 99 } 100 101 function getCubicBezier() { 102 return new CubicBezier([0, 0, 1, 1]); 103 }