tor-browser

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

test_lengthParsing.html (2237B)


      1 <!doctype html>
      2 <html>
      3 <!--
      4 https://bugzilla.mozilla.org/show_bug.cgi?id=946529
      5 -->
      6 <head>
      7  <meta charset="utf-8">
      8  <title>Test transform parsing</title>
      9  <script src="/tests/SimpleTest/SimpleTest.js"></script>
     10  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
     11 </head>
     12 <body>
     13 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=946529">Mozilla Bug 946529</a>
     14 <p id="display"></p>
     15 <div id="content" style="display: none">
     16  <svg width="100%" height="1" id="svg">
     17    <rect id="rect"/>
     18  </svg>
     19 </div>
     20 <pre id="test">
     21 <script class="testbody" type="text/javascript">
     22 // Test cases
     23 checkParseOk("", 0);
     24 checkParseOk("-.1", -0.1);
     25 checkParseOk("1e1", 10);
     26 checkParseOk("1em", 1, "em");
     27 checkParseOk("1ex", 1, "ex");
     28 checkParseOk("1e1em", 10, "em");
     29 checkParseOk("1E+2", 100);
     30 checkParseOk(".1e-2", 0.001);
     31 checkParseOk("   10", 10);
     32 checkParseOk("10  ", 10);
     33 checkParseOk("  10  ", 10);
     34 checkParseOk("  10em  ", 10, "em");
     35 
     36 // Fail cases
     37 checkParseFail("1e");
     38 checkParseFail("1 e");
     39 checkParseFail("1 em");
     40 checkParseFail("1ee");
     41 checkParseFail(" 10 20");
     42 
     43 function checkParseOk(spec, valueInUnits, units) {
     44  var rect = document.getElementById("rect");
     45 
     46  // Clear previous value
     47  rect.removeAttribute("x");
     48  rect.setAttribute("x", spec);
     49 
     50  // Check number part
     51  const tolerance = 1 / 65535;
     52  var actual = rect.x.baseVal.valueInSpecifiedUnits;
     53  ok(Math.abs(actual - valueInUnits) < tolerance,
     54     spec + " (value) - got " + actual + ", expected " + valueInUnits);
     55 
     56  // Check unit part
     57  var unitMapping = {
     58    "unknown": SVGLength.SVG_LENGTHTYPE_UNKNOWN,
     59    "": SVGLength.SVG_LENGTHTYPE_NUMBER,
     60    "%": SVGLength.SVG_LENGTHTYPE_PERCENTAGE,
     61    "em": SVGLength.SVG_LENGTHTYPE_EMS,
     62    "ex": SVGLength.SVG_LENGTHTYPE_EXS,
     63    "px": SVGLength.SVG_LENGTHTYPE_PX,
     64    "cm": SVGLength.SVG_LENGTHTYPE_CM,
     65    "mm": SVGLength.SVG_LENGTHTYPE_MM,
     66    "in": SVGLength.SVG_LENGTHTYPE_IN,
     67    "pt": SVGLength.SVG_LENGTHTYPE_PT,
     68    "pc": SVGLength.SVG_LENGTHTYPE_PC,
     69  };
     70  if (typeof units == "undefined") {
     71    units = "";
     72  }
     73  is(rect.x.baseVal.unitType, unitMapping[units], spec + " (unit)");
     74 }
     75 
     76 function checkParseFail(spec) {
     77  checkParseOk(spec, 0);
     78 }
     79 </script>
     80 </pre>
     81 </body>
     82 </html>