blob: b2a6761317cc617bda235d672ecc7a02912dc230 [file] [log] [blame]
<!doctype html>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../assert_selection.js"></script>
<div id="sample"></div>
<script>
function assemble(seleciton, source) {
let sample = seleciton.document.body;
let expectedEnd;
let expectedStart;
let sampleText = '';
let offset = 0;
let textNode = sample.appendChild(document.createTextNode(''));
let startNode;
let startOffset;
let endNode;
let endOffset;
for (var i = 0; i < source.length; ++i) {
let ch = source[i];
switch (ch) {
case '^':
expectedStart = offset;
startNode = textNode;
startOffset = textNode.length;
break;
case '|':
expectedEnd = offset;
endNode = textNode;
endOffset = textNode.length;
break;
case ' ':
textNode = sample.appendChild(document.createTextNode(''));
break;
default:
++offset;
sampleText += ch;
textNode.textContent += ch;
break;
}
}
seleciton.collapse(startNode, startOffset);
seleciton.extend(endNode, endOffset);
sample.normalize();
}
function test_text_normalize(inputText, expectedText) {
test(() => {
assert_equals(expectedText.indexOf(' '), -1,
'expectedText should not have split marker.');
assert_selection(
'',
selection => assemble(selection, inputText),
expectedText);
}, inputText);
}
// Note: ' ' denotes end of Text node.
test_text_normalize('^foo| bar baz', '^foo|barbaz');
test_text_normalize('foo ^bar| baz', 'foo^bar|baz');
test_text_normalize('foo bar ^baz|', 'foobar^baz|');
test_text_normalize('f^oo ba|r baz', 'f^ooba|rbaz');
test_text_normalize('f^oo bar ba|z', 'f^oobarba|z');
test_text_normalize('foo b^ar ba|z', 'foob^arba|z');
test_text_normalize('f^oo ba|z', 'f^ooba|z');
test_text_normalize('^foo | baz', '^foo|baz');
test_text_normalize('^foo baz|', '^foobaz|');
test_text_normalize('foo ^ baz|', 'foo^baz|');
test_text_normalize('foo ^bar |', 'foo^bar|');
</script>