Skip to content

Commit

Permalink
Tests/LibWeb: Import <input> valueAsNumber WPT test
Browse files Browse the repository at this point in the history
This speculatively includes the changes for the not-yet merged wpt#50592
merge request.
  • Loading branch information
shannonbooth authored and AtkinsSJ committed Feb 22, 2025
1 parent a706d0e commit ea880ec
Show file tree
Hide file tree
Showing 2 changed files with 223 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -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)
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
<!DOCTYPE HTML>
<meta charset="utf-8">
<html>
<head>
<title>HTMLInputElement valueAsNumber</title>
<link rel="author" title="pmdartus" href="mailto:[email protected]">
<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>

0 comments on commit ea880ec

Please sign in to comment.