Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test gets skipped with pattern: os == 'android'
- Manifest: devtools/client/memory/test/xpcshell/xpcshell.toml
/* Any copyright is dedicated to the Public Domain.
"use strict";
const {
drawText,
} = require("resource://devtools/client/memory/components/tree-map/draw.js");
add_task(async function () {
// Mock out the Canvas2dContext
const ctx = {
fillText: (...args) => fillTextValues.push(args),
measureText: text => {
const width = text ? text.length * 10 : 0;
return { width };
},
};
const node = {
x: 20,
y: 30,
dx: 500,
dy: 70,
name: "Example Node",
totalBytes: 1200,
totalCount: 100,
};
const ratio = 0;
const borderWidth = () => 1;
const dragZoom = {
offsetX: 0,
offsetY: 0,
zoom: 0,
};
let fillTextValues = [];
const padding = [10, 10];
drawText(ctx, node, borderWidth, ratio, dragZoom, padding);
deepEqual(
fillTextValues[0],
["Example Node", 11.5, 21.5],
"Fills in the full node name"
);
deepEqual(
fillTextValues[1],
["1KiB 100 count", 141.5, 21.5],
"Includes the full byte and count information"
);
fillTextValues = [];
node.dx = 250;
drawText(ctx, node, borderWidth, ratio, dragZoom, padding);
deepEqual(
fillTextValues[0],
["Example Node", 11.5, 21.5],
"Fills in the full node name"
);
deepEqual(
fillTextValues[1],
undefined,
"Drops off the byte and count information if not enough room"
);
fillTextValues = [];
node.dx = 100;
drawText(ctx, node, borderWidth, ratio, dragZoom, padding);
deepEqual(
fillTextValues[0],
["Exampl...", 11.5, 21.5],
"Cuts the name with ellipsis"
);
deepEqual(
fillTextValues[1],
undefined,
"Drops off the byte and count information if not enough room"
);
fillTextValues = [];
node.dx = 40;
drawText(ctx, node, borderWidth, ratio, dragZoom, padding);
deepEqual(
fillTextValues[0],
["...", 11.5, 21.5],
"Shows only ellipsis when smaller"
);
deepEqual(
fillTextValues[1],
undefined,
"Drops off the byte and count information if not enough room"
);
fillTextValues = [];
node.dx = 20;
drawText(ctx, node, borderWidth, ratio, dragZoom, padding);
deepEqual(fillTextValues[0], undefined, "Draw nothing when not enough room");
deepEqual(
fillTextValues[1],
undefined,
"Drops off the byte and count information if not enough room"
);
});