diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /testing/web-platform/tests/html/semantics/forms/the-input-element/input-valueasnumber-stepping.html | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/html/semantics/forms/the-input-element/input-valueasnumber-stepping.html')
-rw-r--r-- | testing/web-platform/tests/html/semantics/forms/the-input-element/input-valueasnumber-stepping.html | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/forms/the-input-element/input-valueasnumber-stepping.html b/testing/web-platform/tests/html/semantics/forms/the-input-element/input-valueasnumber-stepping.html new file mode 100644 index 0000000000..c93c25b23f --- /dev/null +++ b/testing/web-platform/tests/html/semantics/forms/the-input-element/input-valueasnumber-stepping.html @@ -0,0 +1,94 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>valueAsNumber stepping</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p> + <h3>input_valueAsNumber_stepping</h3> + <!-- This test verifies that valueAsNumber reads and writes number values, + that those values step by the correct default step, and that the values + represent the correct milliseconds/months. + --> + </p> + + <hr> + + <div id="log"></div> + + <form method="post" + enctype="application/x-www-form-urlencoded" + action="" + name="input_form"> + <p><input type='date' id='input_date'></p> + <p><input type='time' id='input_time'></p> + <p><input type='week' id='input_week'></p> + <p><input type='month' id='input_month'></p> + <p><input type='datetime-local' id='input_datetime-local'></p> + <p><input type='range' id='input_range'></p> + <p><input type='number' id='input_number'></p> + </form> + + <script> + function test_stepping(inputType, stringValue, steppedString, baseNumber, stepAmount) { + test(function() { + // put number in + input = document.getElementById("input_" + inputType); + input.valueAsNumber = baseNumber + + // get string out + // startsWith is here to allow for optional seconds and milliseconds. + // the replace("T", " ") fallback is for https://github.com/web-platform-tests/wpt/issues/20994 + var sanitizedStr = input.value; + assert_true(sanitizedStr.startsWith(stringValue) || sanitizedStr.startsWith(stringValue.replace("T", " ")), + "The input value [" + sanitizedStr + "] must resemble [" + stringValue + "]"); + + // get number out + var sanitized = input.valueAsNumber; + assert_equals(sanitized, baseNumber, "The input valueAsNumber must equal the original number.") + + // step up, get new date out + input.stepUp() + var steppedNumber = input.valueAsNumber; + assert_equals(steppedNumber, baseNumber + stepAmount, "Stepping must be by the correct amount") + + // get new string out + var steppedStrOut = input.value; + assert_true(steppedStrOut.startsWith(steppedString) || steppedStrOut.startsWith(steppedString.replace("T", " ")), + "The changed input value [" + steppedStrOut + "] must resemble [" + steppedString + "]"); + + // step back down, get first date out again + input.stepDown() + var backDown = input.valueAsNumber; + assert_equals(backDown, baseNumber, "Stepping back down must return the number to its original value"); + + }, inputType + " should step correctly"); + } + + var millis_per_day = 24 * 60 * 60 * 1000; + + // jan 1 midnight, step 1 day to jan 2 + test_stepping("date", "1970-01-01", "1970-01-02", 0, millis_per_day); + + // jan 1 midnight, step 1 minute to 00:01:00 + test_stepping("time", "00:00", "00:01", 0, 60 * 1000); + + // jan 1 midnight, step 1 month (not counting by milliseconds) to feb 1 + test_stepping("month", "1970-01", "1970-02", 0, 1); + + // monday jan 5 1970 midnight, step 7 days to jan 12 + // (this has to start on a monday for stepping up and down to return) + test_stepping("week", "1970-W02", "1970-W03", 4 * millis_per_day, 7 * millis_per_day); + + // jan 1 midnight, step 1 minute to 00:01:00 + test_stepping("datetime-local", "1970-01-01T00:00", "1970-01-01T00:01", 0, 60 * 1000); + + // numbers, for which the default step is 1 + test_stepping("range", "22", "23", 22, 1); + test_stepping("number", "24", "25", 24, 1); + </script> + + </body> +</html> |