<!DOCTYPE HTML>
<html>
<head>
<style>
body {
font-family: sans-serif;
font-size: 0.8em;
}
code {
font-family: workaround, monospace;
}
.heading {
background: #eee;
font-weight: bold;
}
</style>
</head>
<body>
<p>For each input on the left, this table lists what happens when you
pass it into a CSS property and retrieve its value back. The third column
indicates whether the value was round-tripped faithfully.</p>
<div id='test'></div>
<table id='table'>
</table>
<script>
if (window.testRunner)
testRunner.dumpAsText();
var table = document.getElementById('table');
var div = document.getElementById('test');
function heading(text) {
var tr = document.createElement('tr');
tr.className = 'heading';
var td = document.createElement('td');
td.colSpan = 3;
td.align = 'center'
td.appendChild(document.createTextNode(text));
tr.appendChild(td);
table.appendChild(tr);
}
function evaluate(code) {
var result = eval(code);
var tr = document.createElement('tr');
var td = document.createElement('td');
var text = document.createElement('code');
text.appendChild(document.createTextNode(code));
td.appendChild(text);
tr.appendChild(td);
div.style.opacity = eval(code);
var td = document.createElement('td');
var text = document.createElement('code');
text.appendChild(document.createTextNode(div.style.opacity));
td.appendChild(text);
tr.appendChild(td);
var outValue = div.style.opacity;
// Test round-tripping
div.style.opacity = 0;
div.style.opacity = outValue;
var td = document.createElement('td');
var text = document.createElement('span');
text.appendChild(document.createTextNode(outValue == div.style.opacity ? "pass" : "fail"));
td.appendChild(text);
tr.appendChild(td);
table.appendChild(tr);
}
heading("Basic floats");
evaluate("'0.0001'");
evaluate("0.0001");
evaluate("'123456.123456'");
evaluate("'1234567.1234567'");
evaluate("'12345678.12345678'");
heading("Trailing zeros");
evaluate("'0.00100000'");
evaluate("'0.001000001'");
evaluate("'0.12345000001'");
evaluate("'0.12304567'");
evaluate("'0.12340567'");
evaluate("'0.12345067'");
evaluate("'0.12345607'");
evaluate("'0.12345670'");
heading("Repeating decimals");
evaluate("1/3");
evaluate("123 + 1/3");
evaluate("13/99");
evaluate("123 + 13/99");
evaluate("100/999");
evaluate("123 + 100/999");
heading("Large numbers");
evaluate("12345678");
evaluate("123456789");
evaluate("1234567890");
evaluate("12345678901");
evaluate("123456789012");
evaluate("1234567890123");
evaluate("12345678901234");
evaluate("123456789012345");
evaluate("1234567890123456");
evaluate("12345678901234567");
heading("Weird numbers");
evaluate("Number.NaN");
evaluate("1/0");
evaluate("Math.sqrt(-1)");
evaluate("1/0.9999");
evaluate("1/0.99999");
evaluate("1/0.999999");
evaluate("1/0.9999999");
evaluate("1/0.99999999");
</script>
</body>
</html>