<!doctype html>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../assert_selection.js"></script>
<script>
function assertMarkedText(tagName, compositionText, expected) {
  assert_selection(
    `<${tagName} contenteditable id="sample">^X|</${tagName}>`,
    selection => {
      selection.document.execCommand('delete');
      textInputController.setMarkedText(compositionText, 0,
                                        compositionText.length);
      const sample = selection.document.getElementById('sample');
      assert_equals(sample.firstChild.textContent, expected);
      textInputController.unmarkText();
    },
    `<${tagName} contenteditable id="sample">^${expected}|</${tagName}>`);
}

test(() => {
 assert_exists(window, 'textInputController',
               'this test requires window.textInputController.');

  assertMarkedText('div', 'AB', 'AB');
  assertMarkedText('div', 'A B', 'A B');
  assertMarkedText('div', 'A  B', 'A\xA0 B');
  assertMarkedText('div', 'A   B', 'A\xA0 \xA0B');
  assertMarkedText('div', 'A    B', 'A\xA0 \xA0 B');

  assertMarkedText('div', ' AB', '\xA0AB');
  assertMarkedText('div', '  AB', '\xA0 AB');
  assertMarkedText('div', '   AB', '\xA0 \xA0AB');
  assertMarkedText('div', '    AB', '\xA0 \xA0 AB');
  assertMarkedText('div', '     AB', '\xA0 \xA0 \xA0AB');
  assertMarkedText('div', '      AB', '\xA0 \xA0 \xA0 AB');
  assertMarkedText('div', '       AB', '\xA0 \xA0 \xA0 \xA0AB');
  assertMarkedText('div', 'AB  ', 'AB\xA0\xA0');
  assertMarkedText('div', 'AB   ', 'AB\xA0 \xA0');
  assertMarkedText('div', 'AB    ', 'AB\xA0 \xA0\xA0');
  assertMarkedText('div', 'AB     ', 'AB\xA0 \xA0 \xA0');
  assertMarkedText('div', 'AB      ', 'AB\xA0 \xA0 \xA0\xA0');
  assertMarkedText('div', 'AB       ', 'AB\xA0 \xA0 \xA0 \xA0');

  assertMarkedText('div', '  A  B  ', '\xA0 A\xA0 B\xA0\xA0');
  assertMarkedText('div', '\t\tA\t\tB\t\t', '\xA0 A\xA0 B\xA0\xA0');

  assertMarkedText('div', ' ', '\xA0');
  assertMarkedText('div', '  ', '\xA0\xA0');
  assertMarkedText('div', '   ', '\xA0 \xA0');

  assertMarkedText('pre', 'AB', 'AB');
  assertMarkedText('pre', 'A B', 'A B');
  assertMarkedText('pre', 'A  B', 'A  B');
  assertMarkedText('pre', 'A   B', 'A   B');
  assertMarkedText('pre', 'A    B', 'A    B');
  assertMarkedText('pre', 'AB  ', 'AB  ');
  assertMarkedText('pre', 'AB   ', 'AB   ');
  assertMarkedText('pre', 'AB    ', 'AB    ');
  assertMarkedText('pre', 'AB     ', 'AB     ');
  assertMarkedText('pre', 'AB      ', 'AB      ');
  assertMarkedText('pre', 'AB       ', 'AB       ');
  assertMarkedText('pre', '  AB', '  AB');
  assertMarkedText('pre', '   AB', '   AB');
  assertMarkedText('pre', '    AB', '    AB');
  assertMarkedText('pre', '     AB', '     AB');
  assertMarkedText('pre', '      AB', '      AB');
  assertMarkedText('pre', '       AB', '       AB');

  assertMarkedText('pre', '  A  B  ', '  A  B  ');
  assertMarkedText('pre', '\t\tA\t\tB\t\t', '\t\tA\t\tB\t\t');
  assertMarkedText('pre', ' ', ' ');
  assertMarkedText('pre', '  ', '  ');
  assertMarkedText('pre', '   ', '   ');
}, 'Insert space and TAB via TextInputController');
</script>
</body>
</html>
