gecko/editor/libeditor/html/tests/test_bug480647.html

142 lines
3.9 KiB
HTML

<!DOCTYPE html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=480647
-->
<title>Test for Bug 480647</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=480647">Mozilla Bug 480647</a>
<div contenteditable></div>
<script>
/** Test for Bug 480647 **/
var div = document.querySelector("div");
function parseFontSize(input, expected) {
parseFontSizeInner(input, expected, is);
}
function parseFontSizeTodo(input, expected) {
parseFontSizeInner(input, expected, todo_is);
}
function parseFontSizeInner(input, expected, fn) {
// First test non-CSS
document.execCommand("styleWithCSS", false, false);
div.innerHTML = "foo";
getSelection().selectAllChildren(div);
document.execCommand("fontSize", false, input);
if (expected === null) {
fn(div.innerHTML, "foo",
'execCommand("fontSize", false, "' + input + '") should be no-op ' +
'(non-CSS)');
} else {
fn(div.innerHTML, '<font size="' + expected + '">foo</font>',
'execCommand("fontSize", false, "' + input + '") should parse to ' +
expected + ' (non-CSS)');
}
// Now test CSS
document.execCommand("styleWithCSS", false, true);
div.innerHTML = "foo";
getSelection().selectAllChildren(div);
document.execCommand("fontSize", false, input);
if (expected === null) {
fn(div.innerHTML, "foo",
'execCommand("fontSize", false, "' + input + '") should be no-op ' +
'(CSS)');
} else if (expected === 7) {
// No CSS support for <font size=7>
fn(div.innerHTML, '<font size="' + expected + '">foo</font>',
'execCommand("fontSize", false, "' + input + '") should parse to ' +
expected + ' (CSS)');
} else {
var cssVal = {
1: "x-small",
2: "small",
3: "medium",
4: "large",
5: "x-large",
6: "xx-large",
}[expected];
fn(div.innerHTML, '<span style="font-size: ' + cssVal + ';">foo</span>',
'execCommand("fontSize", false, "' + input + '") should parse to ' +
expected + ' (CSS)');
}
}
// Parse errors
parseFontSize("", null);
parseFontSize("abc", null);
parseFontSize("larger", null);
parseFontSize("smaller", null);
parseFontSize("xx-small", null);
parseFontSize("x-small", null);
parseFontSize("small", null);
parseFontSize("medium", null);
parseFontSize("large", null);
parseFontSize("x-large", null);
parseFontSize("xx-large", null);
parseFontSize("xxx-large", null);
// Bug 747879
parseFontSizeTodo("1.2em", null);
parseFontSizeTodo("8px", null);
parseFontSizeTodo("-1.2em", null);
parseFontSizeTodo("-8px", null);
parseFontSizeTodo("+1.2em", null);
parseFontSizeTodo("+8px", null);
// Numbers
parseFontSize("0", 1);
parseFontSize("1", 1);
parseFontSize("2", 2);
parseFontSize("3", 3);
parseFontSize("4", 4);
parseFontSize("5", 5);
parseFontSize("6", 6);
parseFontSize("7", 7);
parseFontSize("8", 7);
parseFontSize("9", 7);
parseFontSize("10", 7);
parseFontSize("1000000000000000000000", 7);
parseFontSize("2.72", 2);
parseFontSize("2.72e9", 2);
// Minus sign
parseFontSize("-0", 3);
parseFontSize("-1", 2);
parseFontSize("-2", 1);
parseFontSize("-3", 1);
parseFontSize("-4", 1);
parseFontSize("-5", 1);
parseFontSize("-6", 1);
parseFontSize("-7", 1);
parseFontSize("-8", 1);
parseFontSize("-9", 1);
parseFontSize("-10", 1);
parseFontSize("-1000000000000000000000", 1);
parseFontSize("-1.72", 2);
parseFontSize("-1.72e9", 2);
// Plus sign
parseFontSize("+0", 3);
parseFontSize("+1", 4);
parseFontSize("+2", 5);
parseFontSize("+3", 6);
parseFontSize("+4", 7);
parseFontSize("+5", 7);
parseFontSize("+6", 7);
parseFontSize("+7", 7);
parseFontSize("+8", 7);
parseFontSize("+9", 7);
parseFontSize("+10", 7);
parseFontSize("+1000000000000000000000", 7);
parseFontSize("+1.72", 4);
parseFontSize("+1.72e9", 4);
// Whitespace
parseFontSize(" \t\n\r\f5 \t\n\r\f", 5);
parseFontSize("\u00a05", null);
parseFontSize("\b5", null);
</script>