Index: LayoutTests/imported/web-platform-tests/html/semantics/forms/textfieldselection/selection.html |
diff --git a/LayoutTests/imported/web-platform-tests/html/semantics/forms/textfieldselection/selection.html b/LayoutTests/imported/web-platform-tests/html/semantics/forms/textfieldselection/selection.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ea372cacf150be7332448e0340edfa77537062a2 |
--- /dev/null |
+++ b/LayoutTests/imported/web-platform-tests/html/semantics/forms/textfieldselection/selection.html |
@@ -0,0 +1,144 @@ |
+<!DOCTYPE HTML> |
+<title>test if select() API returns correct attributes</title> |
+<meta charset="UTF-8"> |
+<link rel="author" title="Koji Tashiro" href="mailto:koji.tashiro@gmail.com"> |
+<link rel="help" href="https://html.spec.whatwg.org/multipage/multipage/association-of-controls-and-forms.html#textFieldSelection"> |
+<script src="../../../../../../resources/testharness.js"></script> |
+<script src="../../../../../../resources/testharnessreport.js"></script> |
+ |
+<div id="log"></div> |
+ |
+<script> |
+ var body = document.getElementsByTagName("body").item(0); |
+ var dirs = ['forward', 'backward', 'none']; |
+ var sampleText = "0123456789"; |
+ |
+ var createInputElement = function(value) { |
+ var el = document.createElement("input"); |
+ el.type = "text"; |
+ el.value = value; |
+ body.appendChild(el); |
+ return el; |
+ }; |
+ |
+ var createTextareaElement = function(value) { |
+ var el = document.createElement("textarea"); |
+ el.value = value; |
+ body.appendChild(el); |
+ return el; |
+ }; |
+ |
+ |
+ test(function() { |
+ var text = 'a'; |
+ for (var i=0; i<255; i++) { |
+ var el = createInputElement(text); |
+ el.select(); |
+ var selectionText = el.value.substring(el.selectionStart, el.selectionEnd); |
+ assert_equals(selectionText, text, "Selection text mismatched"); |
+ el.parentNode.removeChild(el); |
+ text += 'a'; |
+ } |
+ }, "test if selection text is correct for input"); |
+ |
+ |
+ test(function() { |
+ var text = 'a'; |
+ for (var i=0; i<255; i++) { |
+ var el = createTextareaElement(text); |
+ el.select(); |
+ var selectionText = el.value.substring(el.selectionStart, el.selectionEnd); |
+ assert_equals(selectionText, text, "Selection text mismatched"); |
+ el.parentNode.removeChild(el); |
+ text += 'a'; |
+ } |
+ }, "test if selection text is correct for textarea"); |
+ |
+ |
+ test(function() { |
+ var text = 'あ'; |
+ for (var i=0; i<255; i++) { |
+ var el = createInputElement(text); |
+ el.select(); |
+ var selectionText = el.value.substring(el.selectionStart, el.selectionEnd); |
+ assert_equals(selectionText, text, "Selection text mismatched"); |
+ el.parentNode.removeChild(el); |
+ text += 'あ'; |
+ } |
+ }, "test if non-ascii selection text is correct for input"); |
+ |
+ |
+ test(function() { |
+ var text = 'あ'; |
+ for (var i=0; i<255; i++) { |
+ var el = createTextareaElement(text); |
+ el.select(); |
+ var selectionText = el.value.substring(el.selectionStart, el.selectionEnd); |
+ assert_equals(selectionText, text, "Selection text mismatched"); |
+ el.parentNode.removeChild(el); |
+ text += 'あ'; |
+ } |
+ }, "test if non-ascii selection text is correct for textarea"); |
+ |
+ |
+ test(function() { |
+ var el = createInputElement(sampleText); |
+ // If there is no selection, then it must return the offset(in logical order) |
+ // to the character that immediately follows the text entry cursor. |
+ assert_equals(el.selectionStart, el.value.length, "SelectionStart offset without selection"); |
+ el.select(); |
+ assert_equals(el.selectionStart, 0, "SelectionStart offset"); |
+ el.parentNode.removeChild(el); |
+ }, "test SelectionStart offset for input"); |
+ |
+ |
+ test(function() { |
+ var el = createTextareaElement(sampleText); |
+ // If there is no selection, then it must return the offset(in logical order) |
+ // to the character that immediately follows the text entry cursor. |
+ assert_equals(el.selectionStart, el.value.length, "SelectionStart offset without selection"); |
+ el.select(); |
+ assert_equals(el.selectionStart, 0, "SelectionStart offset"); |
+ el.parentNode.removeChild(el); |
+ }, "test SelectionStart offset for textarea"); |
+ |
+ |
+ test(function() { |
+ var el = createInputElement(sampleText); |
+ // If there is no selection, then it must return the offset(in logical order) |
+ // to the character that immediately follows the text entry cursor. |
+ assert_equals(el.selectionEnd, el.value.length, "SelectionEnd offset without selection"); |
+ el.select(); |
+ assert_equals(el.selectionEnd, el.value.length, "SelectionEnd offset"); |
+ el.parentNode.removeChild(el); |
+ }, "test SelectionEnd offset for input"); |
+ |
+ |
+ test(function() { |
+ var el = createTextareaElement(sampleText); |
+ // If there is no selection, then it must return the offset(in logical order) |
+ // to the character that immediately follows the text entry cursor. |
+ assert_equals(el.selectionEnd, el.value.length, "SelectionEnd offset without selection"); |
+ el.select(); |
+ assert_equals(el.selectionEnd, el.value.length, "SelectionEnd offset"); |
+ el.parentNode.removeChild(el); |
+ }, "test SelectionEnd offset for textarea"); |
+ |
+ |
+ test(function() { |
+ var el = createInputElement(sampleText); |
+ assert_in_array(el.selectionDirection, dirs, "SelectionDirection"); |
+ el.select(); |
+ assert_in_array(el.selectionDirection, dirs, "SelectionDirection"); |
+ el.parentNode.removeChild(el); |
+ }, "test SelectionDirection for input"); |
+ |
+ |
+ test(function() { |
+ var el = createInputElement(sampleText); |
+ assert_in_array(el.selectionDirection, dirs, "SelectionDirection"); |
+ el.select(); |
+ assert_in_array(el.selectionDirection, dirs, "SelectionDirection"); |
+ el.parentNode.removeChild(el); |
+ }, "test SelectionDirection for textarea"); |
+</script> |