Index: LayoutTests/fast/forms/number/number-setrangetext.html |
diff --git a/LayoutTests/fast/forms/number/number-setrangetext.html b/LayoutTests/fast/forms/number/number-setrangetext.html |
index 6afdebacd8ed4713a86828e7012273bb5ed6684b..0d614af48d5857599742956b82f82b5bd4e78ea1 100644 |
--- a/LayoutTests/fast/forms/number/number-setrangetext.html |
+++ b/LayoutTests/fast/forms/number/number-setrangetext.html |
@@ -6,9 +6,143 @@ |
<script src="../resources/common-setrangetext.js"></script> |
</head> |
<body> |
+<input type="number" id="number"> |
<script> |
-description("Test setRangeText() method is not available in number inputs."); |
-runTestsShouldFail("input", { type: "number" }); |
+description("Test selection API on input type number."); |
+var element = document.getElementById('number'); |
+debug("setRangeText() with only one parameter."); |
+ |
+evalAndLog("element.value = '0123456789'"); |
+evalAndLog("element.setSelectionRange(2, 5)"); |
+evalAndLog("element.setRangeText('432')"); |
+shouldBeEqualToString("element.value", "0143256789"); |
+shouldBe("element.selectionStart", "2"); |
+shouldBe("element.selectionEnd", "5"); |
+evalAndLog("element.setRangeText('4321')"); |
+shouldBeEqualToString("element.value", "01432156789"); |
+shouldBe("element.selectionStart", "2"); |
+shouldBe("element.selectionEnd", "6"); |
+evalAndLog("element.setRangeText('43')"); |
+shouldBeEqualToString("element.value", "014356789"); |
+shouldBe("element.selectionStart", "2"); |
+shouldBe("element.selectionEnd", "4"); |
+evalAndLog("element.setRangeText('')"); |
+shouldBeEqualToString("element.value", "0156789"); |
+shouldBe("element.selectionStart", "2"); |
+shouldBe("element.selectionEnd", "2"); |
+ |
+debug("\nsetRangeText() with 'select' as the selectMode."); |
+evalAndLog("element.value = '0123456789'"); |
+evalAndLog("element.setSelectionRange(0, 0)"); |
+evalAndLog("element.setRangeText('432', 2, 5, 'select')"); |
+shouldBeEqualToString("element.value", "0143256789"); |
+shouldBe("element.selectionStart", "2"); |
+shouldBe("element.selectionEnd", "5"); |
+ |
+evalAndLog("element.value = '0123456789'"); |
+evalAndLog("element.setSelectionRange(0, 0)"); |
+evalAndLog("element.setRangeText('987', 5, 10, 'select')"); |
+shouldBeEqualToString("element.value", "01234987"); |
+shouldBe("element.selectionStart", "5"); |
+shouldBe("element.selectionEnd", "8"); |
+ |
+evalAndLog("element.value = '0123456789'"); |
+evalAndLog("element.setSelectionRange(0, 0)"); |
+evalAndLog("element.setRangeText('987', 1, 2, 'select')"); |
+shouldBeEqualToString("element.value", "098723456789"); |
+shouldBe("element.selectionStart", "1"); |
+shouldBe("element.selectionEnd", "4"); |
+ |
+evalAndLog("element.value = '0123456789'"); |
+evalAndLog("element.setSelectionRange(0, 0)"); |
+evalAndLog("element.setRangeText('', 1, 9, 'select')"); |
+shouldBeEqualToString("element.value", "09"); |
+shouldBe("element.selectionStart", "1"); |
+shouldBe("element.selectionEnd", "1"); |
+ |
+debug("\nsetRangeText() with 'start' as the selectMode."); |
+evalAndLog("element.value = '0123456789'"); |
+evalAndLog("element.setSelectionRange(0, 0)"); |
+evalAndLog("element.setRangeText('432', 2, 6, 'start')"); |
+shouldBeEqualToString("element.value", "014326789"); |
+shouldBe("element.selectionStart", "2"); |
+shouldBe("element.selectionEnd", "2"); |
+ |
+debug("\nsetRangeText() with 'end' as the selectMode."); |
+evalAndLog("element.value = '0123456789'"); |
+evalAndLog("element.setSelectionRange(0, 0)"); |
+evalAndLog("element.setRangeText('123', 10, 10, 'end')"); |
+shouldBeEqualToString("element.value", "0123456789123"); |
+shouldBe("element.selectionStart", "13"); |
+shouldBe("element.selectionEnd", "13"); |
+ |
+debug("\nsetRangeText() with 'preserve' as the selectMode."); |
+evalAndLog("element.value = '0123456789'"); |
+evalAndLog("element.setSelectionRange(6, 9)"); |
+evalAndLog("element.setRangeText('9', 1, 2)"); // selectMode is optional and defaults to preserve. |
+shouldBeEqualToString("element.value", "0923456789"); |
+shouldBe("element.selectionStart", "6"); |
+shouldBe("element.selectionEnd", "9"); |
+ |
+evalAndLog("element.value = '0123456789'"); |
+evalAndLog("element.setSelectionRange(6, 9)"); |
+evalAndLog("element.setRangeText('89', 1, 1, 'invalid')"); // Invalid selectMode values default to preserve. |
+shouldBeEqualToString("element.value", "089123456789"); |
+shouldBe("element.selectionStart", "8"); |
+shouldBe("element.selectionEnd", "11"); |
+ |
+evalAndLog("element.value = '0123456789'"); |
+evalAndLog("element.setSelectionRange(6, 9)"); |
+evalAndLog("element.setRangeText('89', 1, 1, undefined)"); // Undefined selectMode also default to preserve. |
+shouldBeEqualToString("element.value", "089123456789"); |
+shouldBe("element.selectionStart", "8"); |
+shouldBe("element.selectionEnd", "11"); |
+ |
+evalAndLog("element.value = '0123456789'"); |
+evalAndLog("element.setSelectionRange(6, 9)"); |
+evalAndLog("element.setRangeText('9', 1, 3, 'preserve')"); |
+shouldBeEqualToString("element.value", "093456789"); |
+shouldBe("element.selectionStart", "5"); |
+shouldBe("element.selectionEnd", "8"); |
+ |
+evalAndLog("element.value = '0123456789'"); |
+evalAndLog("element.setSelectionRange(2, 6)"); |
+evalAndLog("element.setRangeText('9', 1, 4, 'preserve')"); |
+shouldBeEqualToString("element.value", "09456789"); |
+shouldBe("element.selectionStart", "1"); |
+shouldBe("element.selectionEnd", "4"); |
+ |
+evalAndLog("element.value = '0123456789'"); |
+evalAndLog("element.setSelectionRange(2, 6)"); |
+evalAndLog("element.setRangeText('9', 4, 6, 'preserve')"); |
+shouldBeEqualToString("element.value", "012396789"); |
+shouldBe("element.selectionStart", "2"); |
+shouldBe("element.selectionEnd", "5"); |
+ |
+evalAndLog("element.value = '0123456789'"); |
+evalAndLog("element.setSelectionRange(2, 6)"); |
+evalAndLog("element.setRangeText('956789', 4, 7, 'preserve')"); |
+shouldBeEqualToString("element.value", "0123956789789"); |
+shouldBe("element.selectionStart", "2"); |
+shouldBe("element.selectionEnd", "10"); |
+ |
+debug("\nsetRangeText() with various start/end values."); |
+evalAndLog("element.value = '0123456789'"); |
+evalAndLog("element.setSelectionRange(0, 0)"); |
+evalAndLog("element.setRangeText('1', 100, 100, 'select')"); |
+shouldBeEqualToString("element.value", "01234567891"); |
+shouldBe("element.selectionStart", "10"); |
+shouldBe("element.selectionEnd", "11"); |
+ |
+evalAndLog("element.value = '0123456789'"); |
+evalAndLog("element.setSelectionRange(0, 0)"); |
+evalAndLog("element.setRangeText('1', 8, 100, 'select')"); |
+shouldBeEqualToString("element.value", "012345671"); |
+shouldBe("element.selectionStart", "8"); |
+shouldBe("element.selectionEnd", "9"); |
+ |
+evalAndLog("element.value = '0123456789'"); |
+shouldThrow("element.setRangeText('1', 7, 3)"); |
</script> |
</body> |
</html> |