131 lines
2.9 KiB
HTML
131 lines
2.9 KiB
HTML
<!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>
|