tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 }