mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-22 12:35:14 +00:00
Tests/LibWeb: Import <input> valueAsNumber WPT test
This speculatively includes the changes for the not-yet merged wpt#50592 merge request.
This commit is contained in:
parent
a706d0ebf4
commit
ea880ec8b5
Notes:
github-actions[bot]
2025-02-22 19:11:09 +00:00
Author: https://github.com/shannonbooth Commit: https://github.com/LadybirdBrowser/ladybird/commit/ea880ec8b5b Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/3485 Reviewed-by: https://github.com/AtkinsSJ ✅ Reviewed-by: https://github.com/gmta Reviewed-by: https://github.com/trflynn89
2 changed files with 223 additions and 0 deletions
|
@ -0,0 +1,66 @@
|
|||
Harness status: OK
|
||||
|
||||
Found 60 tests
|
||||
|
||||
34 Pass
|
||||
26 Fail
|
||||
Pass valueAsNumber getter on type date (actual value: , expected valueAsNumber: NaN)
|
||||
Pass valueAsNumber getter on type date (actual value: 0000-12-10, expected valueAsNumber: NaN)
|
||||
Pass valueAsNumber getter on type date (actual value: 2019-00-12, expected valueAsNumber: NaN)
|
||||
Pass valueAsNumber getter on type date (actual value: 2019-12-00, expected valueAsNumber: NaN)
|
||||
Pass valueAsNumber getter on type date (actual value: 2019-13-10, expected valueAsNumber: NaN)
|
||||
Pass valueAsNumber getter on type date (actual value: 2019-02-29, expected valueAsNumber: NaN)
|
||||
Fail valueAsNumber getter on type date (actual value: 2019-12-10, expected valueAsNumber: 1575936000000)
|
||||
Fail valueAsNumber getter on type date (actual value: 2016-02-29, expected valueAsNumber: 1456704000000)
|
||||
Fail valueAsNumber setter on type date (actual valueAsNumber: 0, expected value: 1970-01-01)
|
||||
Fail valueAsNumber setter on type date (actual valueAsNumber: 1575936000000, expected value: 2019-12-10)
|
||||
Fail valueAsNumber setter on type date (actual valueAsNumber: 1456704000000, expected value: 2016-02-29)
|
||||
Pass valueAsNumber getter on type month (actual value: , expected valueAsNumber: NaN)
|
||||
Pass valueAsNumber getter on type month (actual value: 0000-12, expected valueAsNumber: NaN)
|
||||
Pass valueAsNumber getter on type month (actual value: 2019-00, expected valueAsNumber: NaN)
|
||||
Fail valueAsNumber getter on type month (actual value: 2019-12, expected valueAsNumber: 599)
|
||||
Fail valueAsNumber getter on type month (actual value: 1969-12, expected valueAsNumber: -1)
|
||||
Fail valueAsNumber setter on type month (actual valueAsNumber: 599, expected value: 2019-12)
|
||||
Fail valueAsNumber setter on type month (actual valueAsNumber: -1, expected value: 1969-12)
|
||||
Pass valueAsNumber getter on type week (actual value: , expected valueAsNumber: NaN)
|
||||
Pass valueAsNumber getter on type week (actual value: 0000-W50, expected valueAsNumber: NaN)
|
||||
Pass valueAsNumber getter on type week (actual value: 2019-W00, expected valueAsNumber: NaN)
|
||||
Pass valueAsNumber getter on type week (actual value: 2019-W60, expected valueAsNumber: NaN)
|
||||
Fail valueAsNumber getter on type week (actual value: 2019-W50, expected valueAsNumber: 1575849600000)
|
||||
Fail valueAsNumber getter on type week (actual value: 1969-W20, expected valueAsNumber: -20217600000)
|
||||
Fail valueAsNumber setter on type week (actual valueAsNumber: 0, expected value: 1970-W01)
|
||||
Fail valueAsNumber setter on type week (actual valueAsNumber: 1575849600000, expected value: 2019-W50)
|
||||
Fail valueAsNumber setter on type week (actual valueAsNumber: -20217600000, expected value: 1969-W20)
|
||||
Pass valueAsNumber getter on type time (actual value: , expected valueAsNumber: NaN)
|
||||
Pass valueAsNumber getter on type time (actual value: 24:00, expected valueAsNumber: NaN)
|
||||
Pass valueAsNumber getter on type time (actual value: 00:60, expected valueAsNumber: NaN)
|
||||
Fail valueAsNumber getter on type time (actual value: 00:00, expected valueAsNumber: 0)
|
||||
Fail valueAsNumber getter on type time (actual value: 12:00, expected valueAsNumber: 43200000)
|
||||
Fail valueAsNumber getter on type time (actual value: 23:59, expected valueAsNumber: 86340000)
|
||||
Fail valueAsNumber setter on type time (actual valueAsNumber: 0, expected value: 00:00)
|
||||
Fail valueAsNumber setter on type time (actual valueAsNumber: 43200000, expected value: 12:00)
|
||||
Fail valueAsNumber setter on type time (actual valueAsNumber: 86340000, expected value: 23:59)
|
||||
Pass valueAsNumber getter on type datetime-local (actual value: , expected valueAsNumber: NaN)
|
||||
Fail valueAsNumber getter on type datetime-local (actual value: 2019-12-10T00:00, expected valueAsNumber: 1575936000000)
|
||||
Fail valueAsNumber getter on type datetime-local (actual value: 2019-12-10T12:00, expected valueAsNumber: 1575979200000)
|
||||
Fail valueAsNumber setter on type datetime-local (actual valueAsNumber: 1575936000000, expected value: 2019-12-10T00:00)
|
||||
Fail valueAsNumber setter on type datetime-local (actual valueAsNumber: 1575979200000, expected value: 2019-12-10T12:00)
|
||||
Pass valueAsNumber getter on type number (actual value: , expected valueAsNumber: NaN)
|
||||
Pass valueAsNumber getter on type number (actual value: 123, expected valueAsNumber: 123)
|
||||
Pass valueAsNumber getter on type number (actual value: 123.456, expected valueAsNumber: 123.456)
|
||||
Pass valueAsNumber getter on type number (actual value: 1e3, expected valueAsNumber: 1000)
|
||||
Pass valueAsNumber getter on type number (actual value: 1e, expected valueAsNumber: NaN)
|
||||
Pass valueAsNumber getter on type number (actual value: -123, expected valueAsNumber: -123)
|
||||
Pass valueAsNumber setter on type number (actual valueAsNumber: 123, expected value: 123)
|
||||
Pass valueAsNumber setter on type number (actual valueAsNumber: 123.456, expected value: 123.456)
|
||||
Pass valueAsNumber setter on type number (actual valueAsNumber: 1000, expected value: 1000)
|
||||
Pass valueAsNumber setter on type number (actual valueAsNumber: -123, expected value: -123)
|
||||
Pass valueAsNumber getter on type range (actual value: , expected valueAsNumber: 50)
|
||||
Pass valueAsNumber getter on type range (actual value: 0, expected valueAsNumber: 0)
|
||||
Pass valueAsNumber getter on type range (actual value: 50, expected valueAsNumber: 50)
|
||||
Pass valueAsNumber getter on type range (actual value: 100, expected valueAsNumber: 100)
|
||||
Fail valueAsNumber getter on type range (actual value: -10, expected valueAsNumber: 0)
|
||||
Fail valueAsNumber getter on type range (actual value: 110, expected valueAsNumber: 100)
|
||||
Pass valueAsNumber setter on type range (actual valueAsNumber: 0, expected value: 0)
|
||||
Pass valueAsNumber setter on type range (actual valueAsNumber: 50, expected value: 50)
|
||||
Pass valueAsNumber setter on type range (actual valueAsNumber: 100, expected value: 100)
|
|
@ -0,0 +1,157 @@
|
|||
<!DOCTYPE HTML>
|
||||
<meta charset="utf-8">
|
||||
<html>
|
||||
<head>
|
||||
<title>HTMLInputElement valueAsNumber</title>
|
||||
<link rel="author" title="pmdartus" href="mailto:dartus.pierremarie@gmail.com">
|
||||
<link rel=help href="https://html.spec.whatwg.org/#dom-input-valueasnumber">
|
||||
|
||||
<script src="../../../../resources/testharness.js"></script>
|
||||
<script src="../../../../resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<h3>input_valueAsNumber</h3>
|
||||
<hr>
|
||||
<div id="log"></div>
|
||||
|
||||
<input id="input_date" type="date" />
|
||||
<input id="input_month" type="month" />
|
||||
<input id="input_week" type="week" />
|
||||
<input id="input_time" type="time" />
|
||||
<input id="input_datetime-local" type="datetime-local" />
|
||||
<input id="input_number" type="number" />
|
||||
<input id="input_range" type="range" min="0" max="100" />
|
||||
|
||||
<script>
|
||||
"use strict";
|
||||
|
||||
function testValueAsNumberGetter(type, element, cases) {
|
||||
for (const [value, expectedValueAsNumber] of cases) {
|
||||
test(
|
||||
() => {
|
||||
element.value = value;
|
||||
assert_equals(element.valueAsNumber, expectedValueAsNumber);
|
||||
},
|
||||
`valueAsNumber getter on type ${type} (actual value: ${value}, ` +
|
||||
`expected valueAsNumber: ${expectedValueAsNumber})`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function testValueAsNumberSetter(type, element, cases) {
|
||||
for (const [valueAsNumber, expectedValue] of cases) {
|
||||
test(
|
||||
() => {
|
||||
element.valueAsNumber = valueAsNumber;
|
||||
assert_equals(element.value, expectedValue);
|
||||
},
|
||||
`valueAsNumber setter on type ${type} (actual valueAsNumber: ${valueAsNumber}, ` +
|
||||
`expected value: ${expectedValue})`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const dateInput = document.getElementById("input_date");
|
||||
testValueAsNumberGetter("date", dateInput, [
|
||||
["", NaN],
|
||||
["0000-12-10", NaN],
|
||||
["2019-00-12", NaN],
|
||||
["2019-12-00", NaN],
|
||||
["2019-13-10", NaN],
|
||||
["2019-02-29", NaN],
|
||||
["2019-12-10", 1575936000000],
|
||||
["2016-02-29", 1456704000000] // Leap year
|
||||
]);
|
||||
testValueAsNumberSetter("date", dateInput, [
|
||||
[0, "1970-01-01"],
|
||||
[1575936000000, "2019-12-10"],
|
||||
[1456704000000, "2016-02-29"] // Leap year
|
||||
]);
|
||||
|
||||
const monthInput = document.getElementById("input_month");
|
||||
testValueAsNumberGetter("month", monthInput, [
|
||||
["", NaN],
|
||||
["0000-12", NaN],
|
||||
["2019-00", NaN],
|
||||
["2019-12", 599],
|
||||
["1969-12", -1],
|
||||
]);
|
||||
testValueAsNumberSetter("month", monthInput, [
|
||||
[599, "2019-12"],
|
||||
[-1, "1969-12"],
|
||||
]);
|
||||
|
||||
const weekInput = document.getElementById("input_week");
|
||||
testValueAsNumberGetter("week", weekInput, [
|
||||
["", NaN],
|
||||
["0000-W50", NaN],
|
||||
["2019-W00", NaN],
|
||||
["2019-W60", NaN],
|
||||
["2019-W50", 1575849600000],
|
||||
["1969-W20", -20217600000],
|
||||
]);
|
||||
testValueAsNumberSetter("week", weekInput, [
|
||||
[0, "1970-W01"],
|
||||
[1575849600000, "2019-W50"],
|
||||
[-20217600000, "1969-W20"],
|
||||
]);
|
||||
|
||||
const timeInput = document.getElementById("input_time");
|
||||
testValueAsNumberGetter("time", timeInput, [
|
||||
["", NaN],
|
||||
["24:00", NaN],
|
||||
["00:60", NaN],
|
||||
["00:00", 0],
|
||||
["12:00", 12 * 3600 * 1000],
|
||||
["23:59", ((23 * 3600) + (59 * 60)) * 1000]
|
||||
]);
|
||||
testValueAsNumberSetter("time", timeInput, [
|
||||
[0, "00:00"],
|
||||
[12 * 3600 * 1000, "12:00"],
|
||||
[((23 * 3600) + (59 * 60)) * 1000, "23:59"]
|
||||
]);
|
||||
|
||||
const dateTimeLocalInput = document.getElementById("input_datetime-local");
|
||||
testValueAsNumberGetter("datetime-local", dateTimeLocalInput, [
|
||||
["", NaN],
|
||||
["2019-12-10T00:00", 1575936000000],
|
||||
["2019-12-10T12:00", 1575979200000]
|
||||
]);
|
||||
testValueAsNumberSetter("datetime-local", dateTimeLocalInput, [
|
||||
[1575936000000, "2019-12-10T00:00"],
|
||||
[1575979200000, "2019-12-10T12:00"]
|
||||
]);
|
||||
|
||||
const numberInput = document.getElementById("input_number");
|
||||
testValueAsNumberGetter("number", numberInput, [
|
||||
["", NaN],
|
||||
["123", 123],
|
||||
["123.456", 123.456],
|
||||
["1e3", 1000],
|
||||
["1e", NaN],
|
||||
["-123", -123]
|
||||
]);
|
||||
testValueAsNumberSetter("number", numberInput, [
|
||||
[123, "123"],
|
||||
[123.456, "123.456"],
|
||||
[1e3, "1000"],
|
||||
[-123, "-123"]
|
||||
]);
|
||||
|
||||
const rangeInput = document.getElementById("input_range");
|
||||
testValueAsNumberGetter("range", rangeInput, [
|
||||
["", 50],
|
||||
["0", 0],
|
||||
["50", 50],
|
||||
["100", 100],
|
||||
["-10", 0], // Realign to the min
|
||||
["110", 100] // Realign to the max
|
||||
]);
|
||||
testValueAsNumberSetter("range", rangeInput, [
|
||||
[0, "0"],
|
||||
[50, "50"],
|
||||
[100, "100"]
|
||||
]);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
Loading…
Add table
Reference in a new issue