/* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ /* global getPropertyValue */ "use strict"; // Unit test for math behind conversion of units for letter-spacing. const TEST_URI = `
LETTER SPACING
`; add_task(async function () { const URI = "data:text/html;charset=utf-8," + encodeURIComponent(TEST_URI); const { inspector, view } = await openFontInspectorForURL(URI); const viewDoc = view.document; const property = "letter-spacing"; const UNITS = { px: 32, pt: 24, rem: 2, em: 1, }; await selectNode("div", inspector); info("Check that font editor shows letter-spacing value in original units"); const letterSpacing = getPropertyValue(viewDoc, property); is( letterSpacing.value + letterSpacing.unit, "1em", "Original letter spacing is 1em" ); // Starting value and unit for conversion. let prevValue = letterSpacing.value; let prevUnit = letterSpacing.unit; for (const unit in UNITS) { const value = UNITS[unit]; info(`Convert letter-spacing from ${prevValue}${prevUnit} to ${unit}`); const convertedValue = await view.convertUnits( property, prevValue, prevUnit, unit ); is( convertedValue, value, `Converting to ${unit} returns transformed value.` ); // Store current unit and value to use in conversion on the next iteration. prevUnit = unit; prevValue = value; } info(`Check that conversion to fake unit returns 1-to-1 mapping`); const valueToFakeUnit = await view.convertUnits(property, 1, "px", "fake"); is(valueToFakeUnit, 1, `Converting to fake unit returns same value.`); });