gecko-dev/layout/style/test/test_units_length.html
Emilio Cobos Álvarez 011d524740 Bug 1646336 - Don't unnecessarily lose precision in nsComputedDOMStyle. r=hiro
We're converting to nscoord in some places unnecessarily, reducing the
precision of the computed value we return.

This makes some tests unnecessarily fail if we change the base of
nscoord.

Differential Revision: https://phabricator.services.mozilla.com/D79996
2020-06-18 00:42:47 +00:00

61 lines
1.6 KiB
HTML

<!DOCTYPE HTML>
<html>
<head>
<title>Test for serialization and equivalence of length units</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=">Mozilla Bug </a>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<pre id="test">
<script type="application/javascript">
/** Test for serialization and equivalence of length units **/
/**
* We test that for each of the following:
* + they reserialize to exactly what is given
* + if a mapping is provided, they compute to the same result as the mapping
*/
var tests = {
"1in": "72pt",
"20mm": "2cm",
"2.54cm": "1in",
"36pt": "0.5in",
"4pc": "48pt",
"1em": null,
"3ex": null,
"57px": null,
"5rem": null
};
var p = document.getElementById("display");
for (var test in tests) {
p.setAttribute("style", "margin-left: " + test);
is(p.style.getPropertyValue("margin-left"), test,
test + " serializes to exactly itself");
var equiv = tests[test];
if (equiv) {
var cm1 = getComputedStyle(p, "").marginLeft;
p.style.marginLeft = equiv;
var cm2 = getComputedStyle(p, "").marginLeft;
ok(Math.abs(parseFloat(cm1, 10) - parseFloat(cm2, 10)) <= 0.0001, test + " should compute to the same as " + equiv + ", modulo floating point math error");
}
}
// Bug 393910
p.setAttribute("style", "margin-left: 0");
is(p.style.getPropertyValue("margin-left"), "0px",
"0 serializes to 0px");
</script>
</pre>
</body>
</html>