// For the original (development) tests, we want to make a bunch of changes to
// the page as it loads. We don't want this for the conformance tests, so let
// them opt out.
if (
typeof testsJsLibraryOnly ==
"undefined" || !testsJsLibraryOnly) {
// Alert the reader of egregious Opera bug that will make the specced
// implementation horribly buggy
//@{
(
function () {
var div = document.createElement(
"div" );
div.appendChild(document.createElement(
"br" ));
document.body.insertBefore(div, document.body.firstChild);
var range = document.createRange();
range.setStart(div, 1);
div.insertBefore(document.createElement(
"p" ), div.firstChild);
if (range.startOffset > range.startContainer.childNodes.length) {
var warningDiv = document.createElement(
"p" );
document.body.insertBefore(warningDiv, document.body.firstChild);
warningDiv.style.fontWeight =
"bold" ;
warningDiv.style.fontSize =
"2em" ;
warningDiv.style.color =
"red" ;
warningDiv.innerHTML =
'Your browser suffers from an egregious bug in range mutation that will give incorrect results for the spec columns in many cases. To ensure that the spec column contains the output actually required by the spec, use a different browser.';
}
div.parentNode.removeChild(div);
})();
//@}
// Insert the toolbar thingie as soon as the script file is loaded
//@{
(
function () {
var toolbarDiv = document.createElement(
"div" );
toolbarDiv.id =
"toolbar" ;
// Note: this is completely not a hack at all.
toolbarDiv.innerHTML =
""
+
" Display rows without spec a lerts "
+
" "] = event.target.checked'> Run b rowser tests as well as spec tests " ;
document.body.appendChild(toolbarDiv);
})();
//@}
// Confusingly, we're storing a string here, not a boolean.
document.querySelector(
"#alert-checkbox" ).checked = localStorage[
"display-alerts" ]
!= "false" ;
document.querySelector("#browser-checkbox" ).checked = localStorage["display-browser-tests" ] != "false" ;
function updateAlertRowStyle() {
//@{
var checked = document.querySelector("#alert-checkbox" ).checked;
document.querySelector("#alerts" ).disabled = checked;
localStorage["display-alerts" ] = checked;
}
//@}
updateAlertRowStyle();
// Feature-test whether the browser wraps at <wbr> or not, and set word-wrap:
// break-word where necessary if not. (IE and Opera don't wrap, Gecko and
// WebKit do.) word-wrap: break-word will break anywhere at all, so it looks
// significantly uglier.
//@{
(function () {
var wordWrapTestDiv = document.createElement("div" );
wordWrapTestDiv.style.width = "5em" ;
document.body.appendChild(wordWrapTestDiv);
wordWrapTestDiv.innerHTML = "abc" ;
var height1 = getComputedStyle(wordWrapTestDiv).height;
wordWrapTestDiv.innerHTML = "abcabcabcabcabcabc" ;
var height2 = getComputedStyle(wordWrapTestDiv).height;
document.body.removeChild(wordWrapTestDiv);
if (height1 == height2) {
document.body.className = (document.body.className + " wbr-workaround" ).trim();
}
})();
//@}
}
// Now for the meat of the file.
var tests = {
backcolor: [
//@{ Same as hilitecolor (set below)
],
//@}
bold: [
//@{
'foo[]bar' ,
'[foo
bar]
' ,
'[foo bar] ' ,
'[foo
bar
baz]
' ,
'[foo
bar]'
,
'foo[]bar ' ,
'foo[]bar ' ,
'foo {}bar ' ,
'foo[ ]bar ' ,
'foo[bar]baz' ,
'foo[barbaz]qoz quz' ,
'foo[barbaz]qoz quz' ,
'{
foo
}' ,
'foo[bar] baz' ,
'fo[obar b]az' ,
'fooba[r b]az' ,
'fo[ob]ar baz' ,
'fo[o bar b ]az' ,
'foo[bar] baz ' ,
'fo[obar b]az ' ,
'fooba[r b]az ' ,
'fo[ob]ar baz ' ,
'fo[obar b ]az ' ,
'' ,
'' ,
'' ,
'' ,
'' ,
'{}' ,
'foo[bar] baz' ,
'foo[bar] baz' ,
'foobar [baz]' ,
'[foo]bar baz' ,
'foo [bar]baz ' ,
'foobar [baz]' ,
'[foo]bar baz' ,
'foo [bar]baz ' ,
'foo [bar]baz ' ,
'foo [bar]baz ' ,
'foo[bar ]baz' ,
'foo[bar] baz' ,
'foo[bar ]baz' ,
'foo{ }baz' ,
'foo{ }baz' ,
'foo{ }baz' ,
'foo{ }baz' ,
'foo[bar] baz' ,
'foo[bar ]baz' ,
'foo[bar] baz' ,
'foo[bar ]baz' ,
'foo[bar ]baz' ,
'foo[bar] baz' ,
'foo[bar ]baz' ,
'{ foo
bar
}baz
' ,
'foo[bar }
baz
' ,
'foo [bar baz] qoz quz sic' ,
'foo bar baz [qoz quz] sic' ,
'bar [baz] qoz ' ,
'foo[bar] baz' ,
'foo[bar] baz' ,
'foo[bar] baz' ,
'foo[bar] baz' ,
'foo[bar] baz' ,
'foo[bar] baz' ,
'foo[bar] baz' ,
'foo[bar] baz' ,
'foo[bar] baz' ,
'foo[bar ]baz' ,
'foo[bar ]baz' ,
'foo[bar] baz' ,
'foo[bar] baz' ,
'foo[bar ]baz' ,
'foo[bar ]baz' ,
'foo[bar]baz ' ,
'foo[bar]baz ' ,
'foo[bar]baz ' ,
'foo[bar]baz ' ,
'{foobar]baz ' ,
'{foobar]baz ' ,
'{foobar]baz ' ,
'{foobar]baz ' ,
'foo[barbaz }' ,
'foo[barbaz }' ,
'foo[barbaz }' ,
'foo[barbaz }' ,
'foo[bar]baz ' ,
'{foobar]baz ' ,
'foo[barbaz }' ,
'[foobarbaz] ' ,
'{foobarbaz] ' ,
'[foobarbaz }' ,
'{foobarbaz }' ,
'foobar[baz] quz qoz ' ,
'foo[bar] baz ' ,
'{foo bar }' ,
'{foo bar }' ,
'foo [bar]baz ' ,
'foo [bar]baz ' ,
'foo [bar]baz ' ,
'foo [bar]' ,
'foo{bar} baz' ,
'[foobar baz]' ,
'[foo] ' ,
'foo[bar]baz ' ,
'foo[bar]baz
' ,
// Tests for queryCommandIndeterm() and queryCommandState()
'fo[ob]ar baz' ,
'fooba[r b]az' ,
'fo[obar b]az' ,
'foo[b]ar baz' ,
'fooba[r ]baz' ,
'foo{bar }baz' ,
'fo[ob]ar baz' ,
'fo[o b]ar ' ,
'fo[o b]ar ' ,
'fo[o b]ar ' ,
'fo[o b]ar ' ,
'fo[o b]ar ' ,
'fo[o b]ar ' ,
'fo[o b]ar ' ,
'fo[o b]ar ' ,
],
//@}
createlink: [
//@{
'foo[]bar' ,
'[foo
bar]
' ,
'[foo bar] ' ,
'[foo
bar
baz]
' ,
'[foo
bar]'
,
'foo[]bar ' ,
'foo[]bar ' ,
'foo {}bar ' ,
'foo[ ]bar ' ,
'foo[bar]baz' ,
'foo[barbaz]qoz quz' ,
'foo[barbaz]qoz quz' ,
'{
foo
}' ,
'' ,
'' ,
'' ,
'' ,
'' ,
'{}' ,
'http://www.google.com/ >foo[bar]baz',
'http://www.google.com/ >foo[barbaz}',
'{http://www.google.com/ >foobar]baz',
'{http://www.google.com/ >foobarbaz}',
'http://www.google.com/ >[foobarbaz]',
'foohttp://www.google.com/ >[bar]baz',
'[foo]http://www.google.com/ >barbaz',
'foohttp://www.google.com/ >bar[baz]',
'foo[http://www.google.com/ >bar]baz',
'foohttp://www.google.com/ >[barbaz]',
'[foohttp://www.google.com/ >bar]baz',
'[foohttp://www.google.com/ >barbaz]',
'foo[bar]baz ' ,
'foo[barbaz }' ,
'{foobar]baz ' ,
'{foobarbaz }' ,
'[foobarbaz] ' ,
'foo[bar] baz' ,
'foo[bar ]baz' ,
'foo[bar baz]' ,
'[foobar] baz' ,
'[foobar baz]' ,
'foo[bar]baz ' ,
'foo[barbaz }' ,
'{foobar]baz ' ,
'[foobarbaz] ' ,
'foo[bar]baz ' ,
'foo[bar]baz ' ,
['' , 'foo[bar]baz' ],
],
//@}
// Opera requires this to be quoted, contrary to ES5 11.1.5 which allows
// PropertyName to be any IdentifierName, and see 7.6 which defines
// IdentifierName to include ReservedWord; Identifier excludes it.
"delete" : [
//@{
// Collapsed selection
//
// These three commented-out test call Firefox 5.0a2 to blow up, not
// just throwing exceptions on the tests themselves but on many
// subsequent tests too.
//'[]foo',
//'<span>[]foo</span>',
//'<p>[]foo</p>',
'foo[]bar' ,
'foo {}bar ' ,
'foo[ ]bar ' ,
'foobar []baz' ,
'foo[]baz' ,
'foö[]bar' ,
'foö[]bar' ,
'foö̧[]bar' ,
'ö[]bar' ,
'ö[]bar' ,
'ö̧[]bar' ,
'שָׁ[]לוֹם' ,
'שָׁלוֹ[]ם' ,
'foo
[]bar
' ,
'foo
[]bar' ,
'foo[]bar
' ,
'foo
[]bar
' ,
'foo
[]bar' ,
'foo[]bar
' ,
'foo
[]bar
' ,
'foo
[]bar' ,
'foo[]bar
' ,
'[]bar
' ,
'foo
' ,
'' ,
'[]bar' ,
'foo' ,
'foo
[]bar
' ,
'foo []bar' ,
'foo []bar' ,
'foo[]bar ' ,
'foo []bar' ,
'foo
[]bar'
,
'foo
[]bar
' ,
'foo
[]bar
' ,
'foo
[]bar'
,
'foo []bar' ,
'foo []bar' ,
'foo []bar' ,
'foo []bar' ,
'foo []bar' ,
'foo []bar' ,
'foo []bar' ,
'foo []bar' ,
'foo []bar' ,
'foo[]bar ' ,
'foo[]bar ' ,
'foo[]bar ' ,
'foo[]bar ' ,
'foo []' ,
' [] foo' ,
'foo []bar' ,
'foo []bar' ,
'foo []bar' ,
'foo []bar' ,
'foo [] bar' ,
'foo [] bar' ,
'foo []bar' ,
'foo [] bar' ,
'foo [] bar' ,
'foo []bar' ,
'foo []bar' ,
'foo []bar' ,
'foo []bar' ,
'foo []bar' ,
'foo
[] bar
' ,
'foo [] ' ,
' [] foo ' ,
'foo []bar ' ,
'foo []bar ' ,
'foo []bar ' ,
'foo []
' ,
' [] foo
' ,
'foo []bar
' ,
'foo []bar
' ,
'foo []bar
' ,
'foo []
' ,
' [] foo
' ,
'foo []bar
' ,
'foo []bar
' ,
'foo []bar
' ,
'foo []
' ,
' [] foo
' ,
'foo []bar
' ,
'foo []bar
' ,
'foo []bar
' ,
'foo []
' ,
' [] foo
' ,
'foo []bar
' ,
'foo []bar
' ,
'foo []bar
' ,
// Tables with collapsed selection
'foobaz' ,
'foo[]baz' ,
'foo
baz'
,
'foo
[]baz'
,
'' ,
'' ,
'foo baz' ,
'foo[]baz' ,
'foo
baz'
,
'foo
[]baz'
,
'' ,
'' ,
'foo baz' ,
'foo[]baz' ,
'foo
baz'
,
'foo
[]baz'
,
'' ,
'' ,
'foo baz' ,
'foo[]baz' ,
'' ,
'' ,
// Lists with collapsed selection
'foo[]bar baz ' ,
'foo[]bar baz ' ,
'foo[]bar baz ' ,
'foo []bar ' ,
'foo []bar ' ,
'foo []bar ' ,
'foo []bar baz ' ,
'foo bar []baz ' ,
'foo
{}bar ' ,
'foo
[]bar ' ,
'foo []bar
' ,
'foo
[]bar
' ,
'foo ' ,
'foo[]bar ' ,
'foo' ,
'foo[]bar baz ' ,
'foo[]bar ' ,
'foo []bar ' ,
'foo[]bar baz ' ,
'foo bar[]baz ' ,
'foo []bar' ,
'foo []bar' ,
'foo []bar' ,
' []bar' ,
'foo []bar' ,
'foo []bar'
,
'foo []bar'
,
'foo []bar'
,
'[]bar'
,
'foo []bar'
,
'foo {} ' ,
'foo {} ' ,
'foo {} ' ,
' {} ' ,
'foo {} ' ,
'foo {} '
,
'foo {} '
,
'foo {} '
,
'{} '
,
'foo {} '
,
// Indented stuff with collapsed selection
'foo[]bar ' ,
'foo[]bar ' ,
'foo[]bar
' ,
'foo[]bar ' ,
'foo[]bar
baz
' ,
'foo ' ,
'foo[]bar
baz
' ,
'foo[]bar
baz
' ,
'foo[]bar
baz
' ,
'foo[]bar
baz
' ,
'foo[]bar extra'
,
'foobar[]baz quz extra'
,
'foobar []baz quz extra'
,
// Invisible stuff with collapsed selection
'foo []bar' ,
'foo []bar' ,
'foo []bar' ,
'foo []bar' ,
'foo []bar' ,
'foo[]bar ' ,
'foo' ,
'foo' ,
'foo' ,
'foo' ,
'foo' ,
'[]bar' ,
'[]bar' ,
'[]bar' ,
'[]bar' ,
'[]bar' ,
'' ,
'' ,
'' ,
'' ,
'' ,
'' ,
'' ,
'' ,
// Styled stuff with collapsed selection
'foo
[]bar'
,
'foo
[]bar'
,
'foo
[]bar'
,
'foo
[]bar'
,
'foo
[]bar'
,
'foo
[]bar'
,
'foo
[]bar '
,
'foo
[]bar '
,
'foo[]bar'
,
'foo[]bar' ,
'foo
[]bar' ,
'foo
[]bar'
,
'foo
[]bar'
,
'foo
[]bar'
,
'foo[]bar'
,
'foo[]bar' ,
'foo
[]bar' ,
'foo
[]bar'
,
'foo
[]bar'
,
'foo
[]bar'
,
'foo
[]bar'
,
'foo
[]bar '
,
'foo
[]bar '
,
'foo
[]bar' ,
'foo[]bar'
,
'[]bar' ,
'[]bar'
,
'foo
[]bar',
// Uncollapsed selection
'foo[bar]baz' ,
'foo[bar] baz'
,
'foo{bar} baz'
,
'foo{bar }baz'
,
'[foobar] baz'
,
'{foobar} baz'
,
'foo[bar baz]'
,
'foo{bar baz}'
,
'foo[bar baz] quz'
,
'foo[bar] baz' ,
'foo{bar} baz' ,
'foo{bar }baz' ,
'foo[bar] baz' ,
'foo{bar} baz' ,
'foo{bar }baz' ,
'foo[bar baz]quz ' ,
'foo
[bar]
baz
' ,
'foo
{bar}
baz
' ,
'foo
{bar
}baz
' ,
'foo
{bar}
baz
' ,
'foo
{bar
}baz
' ,
'foo[bar
baz]quz'
,
'foo[bar
baz]quz
' ,
'foo[bar
baz]quz ' ,
'foo[bar
baz]quz'
,
'foo[bar baz]quz ' ,
'foo[bar
baz]quz'
,
'baz]quz'
,
'foo[bar
baz]quz
qoz
,
'foo[bar
baz]quz'
,
'foo[bar
baz]quz '
,
'' ,
'foo[ ]bar' ,
'foo[
]bar
' ,
'foo[
]bar baz
' ,
'foo[]bar
' ,
'foo{}bar
' ,
'foo[]bar baz
' ,
'foo[]bar
baz' ,
'foo{bar
}baz' ,
'foo{bar
}baz' ,
'foo{bar}
baz' ,
'foo[
]bar' ,
'foo{
}bar' ,
'foo[
]bar baz' ,
'foo[
]barbaz
' ,
'foo[' ,
']bar' ,
'foo[' ,
'foo[' ,
']baz' ,
']baz' ,
'foo {
]bar' ,
'foo {
]bar' ,
'foo {]bar
' ,
'foo {]bar
' ,
'foo {
}bar
' ,
'foo {
}bar
' ,
'' ,
'' ,
'' ,
'' ,
'' ,
'' ,
'{}' ,
'' ,
'fo[o
baz'
,
'foo
b]az'
,
'fo[o
b]az'
,
'foo
ba[r b]az quz'
,
'foo
bar [baz] quz'
,
'fo[o
b]ar baz quz'
,
'foo
bar ba[z q]uz'
,
'fo[o
bar b]az quz'
,
'fo[o
bar baz q]uz'
,
'fo[o b]ar ' ,
'fo[o ' ,
'foo[]bar ' ,
'foo[ ]bar ' ,
'foo[]bar baz ' ,
'foo[]bar ' ,
'foo[ ]bar ' ,
'foo[]bar baz ' ,
'foo bar[]baz ' ,
'foo [ bar]' ,
'foo [ bar] ' ,
'[foo ] bar' ,
'[foo ] bar ' ,
// Do we merge based on element names or the display property?
'fo[o
b]ar'
,
'fo[o b]ar ' ,
'fo[o b]ar ' ,
'fo[o b]ar ' ,
'fo[o b]ar ' ,
'fo[o b]ar ' ,
// https://bugs.webkit.org/show_bug.cgi?id=35281
// http://www.w3.org/Bugs/Public/show_bug.cgi?id=13976
'foo {}bar ' ,
'foo {}
bar ' ,
'foo
{}
bar ' ,
'foo {}bar ' ,
'foo {}bar ' ,
'foo {}bar ' ,
'foo {}bar ' ,
// Broken test: http://www.w3.org/Bugs/Public/show_bug.cgi?id=14727
'!foo {}bar ' ,
'foo {} bar ' ,
'foo[ bar]baz ' ,
'foo[ bar]
baz ' ,
'foo[
bar]
baz ' ,
'foo[] bar ' ,
'foo [bar]baz ' ,
'foo [bar
]baz ' ,
'foo [bar
]baz
' ,
'foo b[]ar ' ,
'foo[ bar baz]quz ' ,
'{} ' ,
'{}
' ,
'foo[ bar] baz quz ' ,
'foo {} ' ,
'foo {}
' ,
'{}bar ' ,
'{}
bar ' ,
// http://www.w3.org/Bugs/Public/show_bug.cgi?id=13831
'[foo] '
,
'[foo] '
,
'[foo] '
,
'{foo} '
,
'{foo }'
,
'f[] '
,
'[foo] ' ,
'[foo]
' ,
],
//@}
fontname: [
//@{
'foo[]bar' ,
'[foo
bar]
' ,
'[foo bar] ' ,
'[foo
bar
baz]
' ,
'[foo
bar]'
,
'foo[]bar ' ,
'foo[]bar ' ,
'foo {}bar ' ,
'foo[ ]bar ' ,
'foo[bar]baz' ,
'foo[barbaz]qoz quz' ,
'foo[barbaz]qoz quz' ,
'{
foo
}' ,
'' ,
'' ,
'' ,
'' ,
'' ,
'{}' ,
'foo[bar]baz' ,
'foo[bar] baz' ,
'foo[bar] baz' ,
'foo[bar] baz' ,
'foo[bar] baz' ,
'foo[bar] baz' ,
'foob[a]rbaz' ,
'foob[a]r baz' ,
'foob[a]r baz' ,
'foob[a]r baz' ,
'foob[a]r baz' ,
'foob[a]r baz' ,
'[foobarbaz]' ,
'[foobar baz]' ,
'[foobar baz]' ,
'[foobar baz]' ,
'[foobar baz]' ,
'[foobar baz]' ,
'[fooba]rbaz' ,
'[fooba]r baz' ,
'[fooba]r baz' ,
'[fooba]r baz' ,
'[fooba]r baz' ,
'[fooba]r baz' ,
'foob[arbaz]' ,
'foob[ar baz]' ,
'foob[ar baz]' ,
'foob[ar baz]' ,
'foob[ar baz]' ,
'foob[ar baz]' ,
'foo[bar] baz' ,
'foob[a]r baz' ,
'foo[bar] baz' ,
'foob[a]r baz' ,
'fooba[r b]az' ,
'fo[ob]ar baz' ,
'foo{} bar' ,
'foo{ }bar' ,
'foo{ b]ar' ,
// Tests for queryCommandIndeterm() and queryCommandState()
'fo[ob]ar baz' ,
'fooba[r b]az' ,
'fo[obar b]az' ,
'foo[b]ar baz' ,
'fooba[r ]baz' ,
'foo[bar ]baz' ,
'foo[bar] baz' ,
'foo{bar }baz' ,
'fo[ob]ar' ,
'fo[ob]ar ' ,
'fo[ob]ar ' ,
'fo[ob]ar ' ,
'fo[ob]ar ' ,
'fo[ob]ar ' ,
'fo[o b]ar' ,
'fo[o b]ar ' ,
'fo[o b]ar ' ,
],
//@}
fontsize: [
//@{
'foo[]bar' ,
'[foo
bar]
' ,
'[foo bar] ' ,
'[foo
bar
baz]
' ,
'[foo
bar]'
,
'foo[]bar ' ,
'foo[]bar ' ,
'foo {}bar ' ,
'foo[ ]bar ' ,
'foo[bar]baz' ,
'foo[barbaz]qoz quz' ,
'foo[barbaz]qoz quz' ,
'{
foo
}' ,
["1" , 'foo[bar]baz' ],
["0" , 'foo[bar]baz' ],
["-5" , 'foo[bar]baz' ],
["6" , 'foo[bar]baz' ],
["7" , 'foo[bar]baz' ],
["8" , 'foo[bar]baz' ],
["100" , 'foo[bar]baz' ],
["2em" , 'foo[bar]baz' ],
["20pt" , 'foo[bar]baz' ],
["xx-large" , 'foo[bar]baz' ],
[" 1 " , 'foo[bar]baz' ],
["1." , 'foo[bar]baz' ],
["1.0" , 'foo[bar]baz' ],
["1.0e2" , 'foo[bar]baz' ],
["1.1" , 'foo[bar]baz' ],
["1.9" , 'foo[bar]baz' ],
["+0" , 'foo[bar]baz' ],
["+1" , 'foo[bar]baz' ],
["+9" , 'foo[bar]baz' ],
["-0" , 'foo[bar]baz' ],
["-1" , 'foo[bar]baz' ],
["-9" , 'foo[bar]baz' ],
["" , 'foo[bar]baz' ],
'' ,
'' ,
'' ,
'' ,
'' ,
'{}' ,
'foo[bar] baz' ,
'foo[bar]baz ' ,
'foo[bar] baz' ,
'foo[bar]baz ' ,
'foo[bar] baz' ,
'foo[bar]baz ' ,
'foo[bar] baz' ,
'foo[bar]baz ' ,
'foob[a]r baz ' ,
'foo[bar] baz' ,
'foo[bar]baz ' ,
'foo[bar] baz' ,
'foo[bar]baz ' ,
'foo[bar] baz' ,
'foo[bar]baz ' ,
'foob[a]r baz ' ,
'foo[bar] baz' ,
'foo[bar]baz ' ,
'foo[bar]baz
' ,
'foo[bar]baz
' ,
'foo[bar]baz
' ,
'foo[bar]baz
' ,
["3" , 'foo[bar]baz
' ],
["3" , 'foo[bar]baz
' ],
["3" , 'foo[bar]baz
' ],
["3" , 'foo[bar]baz
' ],
// Minor algorithm bug: this changes the size of the "b" and "r" in
// "bar" when we pull down styles
["3" , 'foo b[a]r baz ' ],
["3" , 'foo[bar] baz' ],
["3" , 'foob[a]r baz' ],
["3" , 'foo[bar] baz' ],
["3" , 'foob[a]r baz' ],
// Tests for queryCommandIndeterm() and queryCommandState()
'fo[ob]ar baz' ,
'fooba[r b]az' ,
'fo[obar b]az' ,
'foo[b]ar baz' ,
'fooba[r ]baz' ,
'foo[bar ]baz' ,
'foo[bar] baz' ,
'foo{bar }baz' ,
'fo[o b]ar ' ,
'fo[o b]ar ' ,
'fo[o b]ar ' ,
'fo[o b]ar ' ,
'fo[o b]ar ' ,
'fo[o b]ar ' ,
// http://www.w3.org/Bugs/Public/show_bug.cgi?id=13829
["!6" , '[foo] ' ],
["!6" , 'foo[bar]baz ' ],
["!6" , '[foobar baz]' ],
],
//@}
forecolor: [
//@{
'foo[]bar' ,
'[foo
bar]
' ,
'[foo bar] ' ,
'[foo
bar
baz]
' ,
'[foo
bar]'
,
'foo[]bar ' ,
'foo[]bar ' ,
'foo {}bar ' ,
'foo[ ]bar ' ,
'foo[bar]baz' ,
'foo[barbaz]qoz quz' ,
'foo[barbaz]qoz quz' ,
'{
foo
}' ,
['blue' , 'foo[bar]baz' ],
['f' , 'foo[bar]baz' ],
['#f' , 'foo[bar]baz' ],
['00f' , 'foo[bar]baz' ],
['#00f' , 'foo[bar]baz' ],
['0000ff' , 'foo[bar]baz' ],
['#0000ff' , 'foo[bar]baz' ],
['000000fff' , 'foo[bar]baz' ],
['#000000fff' , 'foo[bar]baz' ],
['rgb(0, 0, 255)' , 'foo[bar]baz' ],
['rgb(0%, 0%, 100%)' , 'foo[bar]baz' ],
['rgb( 0 ,0 ,255)' , 'foo[bar]baz' ],
['rgba(0, 0, 255, 0.0)' , 'foo[bar]baz' ],
['rgb(15, -10, 375)' , 'foo[bar]baz' ],
['rgba(0, 0, 0, 1)' , 'foo[bar]baz' ],
['rgba(255, 255, 255, 1)' , 'foo[bar]baz' ],
['rgba(0, 0, 255, 0.5)' , 'foo[bar]baz' ],
['hsl(240, 100%, 50%)' , 'foo[bar]baz' ],
['cornsilk' , 'foo[bar]baz' ],
['potato quiche' , 'foo[bar]baz' ],
['transparent' , 'foo[bar]baz' ],
['currentColor' , 'foo[bar]baz' ],
'' ,
'' ,
'' ,
'' ,
'' ,
'{}' ,
'foo[bar] baz' ,
'foo{bar }baz' ,
'foo[bar] baz ' ,
'foo[bar] baz ' ,
'foo[bar] baz ' ,
'foo[bar] baz ' ,
'foo[bar] baz ' ,
'foob[ar] baz ' ,
'fooba[r ba]z' ,
'foob[a]r baz ' ,
['blue' , 'http://www.google.com >foo[bar]baz'],
['#0000ff' , 'http://www.google.com >foo[bar]baz'],
['rgb(0,0,255)' , 'http://www.google.com >foo[bar]baz'],
// Tests for queryCommandValue()
'[foo] ' ,
'[foo] ' ,
'[foo] ' ,
'[foo] ' ,
'[foo] ' ,
'[foo] ' ,
'[foo] ' ,
'[foo] ' ,
'[foo] ' ,
'[foo] ' ,
'[foo] ' ,
'[foo] ' ,
'[foo] ' ,
'[foo] ' ,
'[foo] ' ,
'[foo] ' ,
'[foo] ' ,
// Tests for queryCommandIndeterm() and queryCommandState()
'fo[ob]ar baz' ,
'fooba[r b]az' ,
'fo[obar b]az' ,
'foo[b]ar baz' ,
'fooba[r ]baz' ,
'foo[bar ]baz' ,
'foo[bar] baz' ,
'foo{bar }baz' ,
'fo[o b]ar ' ,
'fo[o b]ar ' ,
],
//@}
formatblock: [
//@{
'foo[]barextra'
,
'foo {}bar extra'
,
'foo[ ]bar extra'
,
'foo[bar]bazextra'
,
'foo]bar[bazextra'
,
'{
foo
}' ,
'foo[barbaz]qoz quzextra'
,
'' ,
'' ,
'' ,
'' ,
'' ,
'{}' ,
'[foobar]
' ,
'[foobar]
' ,
'[foobar] ' ,
'[foobar] ' ,
'[foobar] ' ,
'[foobar] ' ,
'[foobar] ' ,
'[foobar] ' ,
'[foobar] ' ,
'[foo] bar ' ,
'foo [bar] ' ,
'[foo bar] ' ,
'[foobar] ' ,
'' ,
'[foobar] ' ,
'[foobar] ' ,
'[foobar] ' ,
'[foobar] ' ,
'[foobar]' ,
'[foobar] ' ,
'[foobar] ' ,
[''
, 'foo[]barextra'
],
[''
, 'foo {}bar extra'
],
[''
, 'foo[ ]bar extra'
],
[''
, 'foo[bar]bazextra'
],
[''
, 'foo]bar[bazextra'
],
[''
, '{
foo
}' ],
[''
, 'foo[barbaz]qoz quzextra'
],
[''
, '' ],
[''
, '' ],
[''
, '' ],
[''
, '' ],
[''
, '' ],
[''
, '{}' ],
[''
, '[foobar]
' ],
[''
, '[foobar]
' ],
[''
, '[foobar] ' ],
[''
, '[foobar] ' ],
[''
, '[foobar] ' ],
[''
, '[foobar] ' ],
[''
, '[foobar] ' ],
[''
, '[foobar] ' ],
[''
, '[foobar] ' ],
[''
, '[foo] bar ' ],
[''
, 'foo [bar] ' ],
[''
, '[foo bar] ' ],
[''
, '[foobar] ' ],
[''
, '' ],
[''
, '[foobar] ' ],
[''
, '[foobar] ' ],
[''
, '[foobar] ' ],
[''
, '[foobar] ' ],
[''
, '[foobar] ' ],
[''
, '[foobar] ' ],
[''
, '[foobar]' ],
[''
, '[foobar] ' ],
[''
, '[foobar] ' ],
['' , '[foo] extra'
],
['' , '[foo]
bar
extra'
],
['' , '[foo]bar extra'
],
['' , '[foo
bar]
baz'
],
['' , '' ],
['' , '' ],
['' , '' ],
['' , '' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
[' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
[' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
[' , '[foobar]
' ],
[' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
[' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
[' ' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
[' , '[foobar]
' ],
[' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foobar]
' ],
['' , '[foo
bar]'
],
['' , '[foo
bar]'
],
[' , '[foo
bar]'
],
['' , '[foo
bar]'
],
['' , '[foo
bar]'
],
['' , '[foo
bar]'
],
['' , '[foo
bar]'
],
['' , '[foo
bar]'
],
['' , '[foo
bar]'
],
['',
'[foo
bar]'
],
[
'' ,
'[foo
bar]'
],
[
'' ,
'[foo
bar]'
],
[
'' ,
'[foo
bar]'
],
[
'' ,
'[foo
bar]'
],
[
'' ,
'[foo
bar]'
],
[
' ,
'[foo
bar]'
],
[
' ,
'[foo
bar]'
],
[
'' ,
'[foo
bar]'
],
[
'' ,
'[foo
bar]'
],
[
'' ,
'[foo
bar]'
],
[
'' ,
'[foo
bar]'
],
[
'' ,
'[foo
bar]'
],
[
'' ,
'[foo
bar]'
],
[
' ,
'[foo
bar]'
],
[
'' ,
'[foo
bar]'
],
[
'' ,
'[foo
bar]'
],
[
' ' ,
'[foo
bar]'
],
[
'' ,
'[foo
bar]'
],
[
'' ,
'[foo
bar]'
],
[
'' ,
'[foo
bar]'
],
[
'' ,
'[foo
bar]'
],
[
'' ,
'[foo
bar]'
],
[
'' ,
'[foo
bar]'
],
[
'' ,
'[foo
bar]'
],
[
''
,
'[foo
bar]'
],
[
'' ,
'[foo
bar]'
],
[
'' ,
'[foo
bar]'
],
[
' ,
'[foo
bar]'
],
[
' ,
'[foo
bar]'
],
[
'' ,
'[foo
bar]'
],
[
'' ,
'[foo
bar]'
],
[
'p' ,
'[foobar]
' ],
'[foo] bar ' ,
[
''
,
'[foo] bar ' ],
[
''
,
'foo [bar] ' ],
[
''
,
'[foo bar] ' ],
[
'' ,
'[foo] bar ' ],
[
'' ,
'foo [bar] ' ],
[
'' ,
'[foo bar] ' ],
[
'' ,
'[foo] bar ' ],
[
'' ,
'foo [bar] ' ],
[
'' ,
'[foo bar] ' ],
[
'' ,
'[foo] bar ' ],
[
'' ,
'foo [bar] ' ],
[
'' ,
'[foo bar] ' ],
[
'' ,
'[foo] bar
' ],
[
'' ,
'foo [bar]
' ],
[
'' ,
'[foo bar]
' ],
[
'' ,
'[foo] bar
' ],
[
'' ,
'foo [bar]
' ],
[
'' ,
'[foo bar]
' ],
[
'' ,
'[foo] bar
' ],
[
'' ,
'foo [bar]
' ],
[
'' ,
'[foo bar]
' ],
[
''
,
'[foo] bar ' ],
[
''
,
'foo [bar] ' ],
[
''
,
'[foo bar] ' ],
[
'' ,
'[foo] bar ' ],
[
'' ,
'foo [bar] ' ],
[
'' ,
'[foo bar] ' ],
[
'' ,
'[foo] bar ' ],
[
'' ,
'foo [bar] ' ],
[
'' ,
'[foo bar] ' ],
[
''
,
'[foo] bar ' ],
[
''
,
'foo [bar] ' ],
[
''
,
'[foo bar] ' ],
[
'' ,
'[foo] bar ' ],
[
'' ,
'foo [bar] ' ],
[
'' ,
'[foo bar] ' ],
[
'' ,
'[foo] bar ' ],
[
'' ,
'foo [bar] ' ],
[
'' ,
'[foo bar] ' ],
[
'' ,
'[foo
bar]' ],
[
'' ,
'[foobar]
' ],
[
''
,
'' ],
[
''
,
'[foo] ' ],
[
'',
'[foo] ' ],
'' ,
'' ,
'[foo
bar] ' ,
'[foo bar] ' ,
'[foo
bar]' ,
// https://bugs.webkit.org/show_bug.cgi?id=47054
[
''
,
'[foo]
' ],
// https://bugs.webkit.org/show_bug.cgi?id=47574
[
'' ,
'{foo
ba]r' ],
[
'' ,
'
[foobar]
' ],
// From https://bugs.webkit.org/show_bug.cgi?id=47300
// http://www.w3.org/Bugs/Public/show_bug.cgi?id=14009
[
'!'
,
'{
foo
bar
}' ],
],
//@}
forwarddelete: [
//@{
// Collapsed selection
'foo[]' ,
'foo[] ' ,
'foo[]
' ,
'foo[]bar' ,
'foo {}bar ' ,
'foo[ ]bar ' ,
'foo[]bar baz' ,
'foo[]baz' ,
'fo[]öbar' ,
'fo[]öbar' ,
'fo[]ö̧bar' ,
'[]öbar' ,
'[]öbar' ,
'[]ö̧bar' ,
'[]שָׁלוֹם' ,
'שָׁל[]וֹם' ,
'foo[]
bar
' ,
'foo[]
bar' ,
'foo[]bar
' ,
'foo[]
bar
' ,
'foo[]
bar' ,
'foo[]bar
' ,
'{}
foo' ,
'{}
foo' ,
'foo{} '
,
'foo{} '
,
'foo{} '
,
'foo{} '
,
'foo{} '
,
'foo{} '
,
'foo{}'
,
'foo' ,
'foo' ,
'foo' ,
'bar
' ,
'foo[]
' ,
'' ,
'bar' ,
'foo[]' ,
'foo[]
bar
' ,
'foo[] bar' ,
'foo[] bar' ,
'foo[] bar' ,
'foo[] bar' ,
'foo[]
bar'
,
'foo[]
bar
' ,
'foo[]
bar
' ,
'foo[]
bar'
,
'foo[] bar' ,
'foo[]bar ' ,
'foo[]bar ' ,
'foo[]bar ' ,
'foo[]bar ' ,
'foo[]bar ' ,
'foo[]bar ' ,
'foo[]bar ' ,
'foo[]bar ' ,
'foo[] bar' ,
'foo[] bar' ,
'foo[] bar' ,
'foo[] bar' ,
'foo [] ' ,
'[] foo' ,
'foo[] bar' ,
'foo[] bar' ,
'foo[] bar' ,
'foo[] bar' ,
'foo[] bar' ,
'foo [] bar' ,
'foo [] bar' ,
'foo[] bar' ,
'foo [] bar' ,
'foo [] bar' ,
'foo[] bar' ,
'foo[] bar' ,
'foo[] bar' ,
'foo[] bar' ,
'foo [] ' ,
'[] foo ' ,
'foo[] bar ' ,
'foo[] bar ' ,
'foo[] bar ' ,
'foo []
' ,
'[] foo
' ,
'foo[] bar
' ,
'foo[] bar
' ,
'foo[] bar
' ,
'foo []
' ,
'[] foo
' ,
'foo[] bar
' ,
'foo[] bar
' ,
'foo[] bar
' ,
'foo []
' ,
'[] foo
' ,
'foo[] bar
' ,
'foo[] bar
' ,
'foo[] bar
' ,
'foo []
' ,
'[] foo
' ,
'foo[] bar
' ,
'foo[] bar
' ,
'foo[] bar
' ,
// Tables with collapsed selection
'foo[]baz' ,
'foobaz' ,
'foo[]
baz'
,
'' ,
'' ,
'foo[] baz' ,
'foobaz' ,
'foo[]
baz'
,
'foo
baz'
,
'' ,
'' ,
'foo baz' ,
'foo[]baz' ,
'' ,
'' ,
// Lists with collapsed selection
'foo[]bar baz ' ,
'foo[]bar baz ' ,
'foo[] bar ' ,
'foo[] bar ' ,
'foo[] bar baz ' ,
'foo[]
bar ' ,
'foo[] bar
' ,
'foo[]
bar
' ,
'foo[] ' ,
'foo[]bar ' ,
'foo[]' ,
'foo[]bar baz ' ,
'foo[]bar ' ,
'foo[] bar ' ,
'foo[]bar baz ' ,
'foo bar[]baz ' ,
'foo[] bar' ,
'foo[] bar' ,
'{} bar' ,
'foo {} bar' ,
'foo[] bar'
,
'foo[] bar'
,
'{} bar'
,
'foo {} bar'
,
'foo[] ' ,
'foo[] ' ,
'{} ' ,
'foo {} ' ,
'foo[] '
,
'foo[] '
,
'{} '
,
'foo {} '
,
// Indented stuff with collapsed selection
'foo[]bar ' ,
'foo[]bar ' ,
'foo[]bar
' ,
'foo[]bar ' ,
'foo[]bar
baz
' ,
'foo[] ' ,
'foo[]bar
baz
' ,
'foo[]bar
baz
' ,
'foo[]bar
baz
' ,
'foo[]bar
baz
' ,
'foo[]bar extra'
,
'foo[]barbaz quz extra'
,
'foobar[] baz quz extra'
,
// Invisible stuff with collapsed selection
'foo[] bar' ,
'foo[] bar' ,
'foo[] bar' ,
'foo[] bar' ,
'foo[] bar' ,
'foo[]bar ' ,
'foo[]' ,
'foo[]' ,
'foo[]' ,
'foo[]' ,
'foo[]' ,
'bar' ,
'bar' ,
'bar' ,
'bar' ,
'bar' ,
'' ,
'' ,
'' ,
'' ,
'' ,
'' ,
'' ,
'' ,
// Styled stuff with collapsed selection
'foo[]
bar'
,
'foo[]
bar'
,
'foo[]
bar'
,
'foo[]
bar'
,
'foo[]
bar '
,
'foo[]
bar '
,
'foo[]bar'
,
'foo[]bar' ,
'foo[]
bar' ,
'foo[]
bar'
,
'foo[]
bar'
,
'foo[]
bar'
,
'foo[]bar'
,
'foo[]bar' ,
'foo[]
bar' ,
'foo[]
bar'
,
'foo[]
bar'
,
'foo[]
bar'
,
'foo[]
bar'
,
'foo[]
bar '
,
'foo[]
bar '
,
'foo[]
bar' ,
'foo[]bar'
,
'bar' ,
'bar'
,
'foo[]
bar',
// Uncollapsed selection (should be same as delete command)
'foo[bar]baz' ,
'foo[bar] baz'
,
'foo{bar} baz'
,
'foo{bar }baz'
,
'[foobar] baz'
,
'{foobar} baz'
,
'foo[bar baz]'
,
'foo{bar baz}'
,
'foo[bar baz] quz'
,
'foo[bar] baz' ,
'foo{bar} baz' ,
'foo{bar }baz' ,
'foo[bar] baz' ,
'foo{bar} baz' ,
'foo{bar }baz' ,
'foo[bar baz]quz ' ,
'foo
[bar]
baz
' ,
'foo
{bar}
baz
' ,
'foo
{bar
}baz
' ,
--> --------------------
--> maximum size reached
--> --------------------
Messung V0.5 C=95 H=100 G=97
¤ Dauer der Verarbeitung: 0.23 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland