<!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>
