<!doctype html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=745685
-->
<title>Test for Bug 745685</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=745685">Mozilla Bug 745685</a>
<font>Test text</font>
<font size=1>1</font>
<font size=2>2</font>
<font size=3>3</font>
<font size=4>4</font>
<font size=5>5</font>
<font size=6>6</font>
<font size=7>7</font>
<script>
/** Test for Bug 745685 **/

var referenceSizes = {};
for (var i = 1; i <= 7; i++) {
  referenceSizes[i] =
    getComputedStyle(document.querySelector('[size="' + i + '"]'))
    .fontSize;
  if (i > 1) {
    isnot(referenceSizes[i], referenceSizes[i - 1],
          "Sanity check: different <font size>s give different .fontSize");
  }
}

function testFontSize(input, expected) {
  var font = document.querySelector("font");
  font.setAttribute("size", input);
  is(font.getAttribute("size"), input,
     "Setting doesn't round-trip (.getAttribute)");
  is(font.size, input,
     "Setting doesn't round-trip (.size)");
  is(getComputedStyle(font).fontSize, referenceSizes[expected],
     'Incorrect size for "' + input + '" : expected the same as ' + expected);
}

function testFontSizes(input, expected) {
  testFontSize(input, expected);
  // Leading whitespace
  testFontSize(" " + input, expected);
  testFontSize("\t" + input, expected);
  testFontSize("\n" + input, expected);
  testFontSize("\f" + input, expected);
  testFontSize("\r" + input, expected);
  // Trailing garbage
  testFontSize(input + "abcd", expected);
  testFontSize(input + ".5", expected);
  testFontSize(input + "e2", expected);
}

// Parse error
testFontSizes("", 3);

// No sign
testFontSizes("0", 1);
testFontSizes("1", 1);
testFontSizes("2", 2);
testFontSizes("3", 3);
testFontSizes("4", 4);
testFontSizes("5", 5);
testFontSizes("6", 6);
testFontSizes("7", 7);
testFontSizes("8", 7);
testFontSizes("9", 7);
testFontSizes("10", 7);
testFontSizes("10000000000000000000000", 7);

// Minus sign
testFontSizes("-0", 3);
testFontSizes("-1", 2);
testFontSizes("-2", 1);
testFontSizes("-3", 1);
testFontSizes("-4", 1);
testFontSizes("-5", 1);
testFontSizes("-6", 1);
testFontSizes("-7", 1);
testFontSizes("-8", 1);
testFontSizes("-9", 1);
testFontSizes("-10", 1);
testFontSizes("-10000000000000000000000", 1);

// Plus sign
testFontSizes("+0", 3);
testFontSizes("+1", 4);
testFontSizes("+2", 5);
testFontSizes("+3", 6);
testFontSizes("+4", 7);
testFontSizes("+5", 7);
testFontSizes("+6", 7);
testFontSizes("+7", 7);
testFontSizes("+8", 7);
testFontSizes("+9", 7);
testFontSizes("+10", 7);
testFontSizes("+10000000000000000000000", 7);

// Non-HTML5 whitespace
testFontSize("\b1", 3);
testFontSize("\v1", 3);
testFontSize("\0u00a01", 3);
</script>
