<!DOCTYPE html>
<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-1000">
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../../resources/testdriver.js"></script>
<script src="../../../resources/testdriver-vendor.js"></script>
<script src="../../forms/resources/picker-common.js"></script>
<input type=date id=dateElement>
<script>
promise_test(async () => {
await openPicker(dateElement);
const {Month, Day, isDayOutsideOfRange} = internals.pagePopupWindow;
assert_true(isDayOutsideOfRange(
/*day=*/new Day(1, 1, 1),
/*minDay=*/new Day(2, 1, 1),
/*maxDay=*/new Day(3, 1, 1)),
'day.year < min < max: day is outside of range');
assert_false(isDayOutsideOfRange(
/*day=*/new Day(2, 9, 9),
/*minDay=*/new Day(1, 1, 1),
/*maxDay=*/new Day(3, 1, 1)),
'min < day.year < max: day is within range');
assert_true(isDayOutsideOfRange(
/*day=*/new Day(3, 1, 1),
/*minDay=*/new Day(1, 1, 1),
/*maxDay=*/new Day(2, 1, 1)),
'min < max < day.year: day is outside of range');
assert_true(isDayOutsideOfRange(
/*day=*/new Day(1, 1, 1),
/*minDay=*/new Day(1, 2, 1),
/*maxDay=*/new Day(1, 3, 1)),
'day.month < min < max: day is outside of range');
assert_false(isDayOutsideOfRange(
/*day=*/new Day(1, 2, 9),
/*minDay=*/new Day(1, 1, 1),
/*maxDay=*/new Day(1, 3, 1)),
'min < day.month < max: day is within range');
assert_true(isDayOutsideOfRange(
/*day=*/new Day(1, 3, 1),
/*minDay=*/new Day(1, 1, 1),
/*maxDay=*/new Day(1, 2, 1)),
'min < max < day.month: day is outside of range');
assert_true(isDayOutsideOfRange(
/*day=*/new Day(1, 1, 1),
/*minDay=*/new Day(1, 1, 2),
/*maxDay=*/new Day(1, 1, 3)),
'day.date < min < max: day is outside of range');
assert_false(isDayOutsideOfRange(
/*day=*/new Day(1, 1, 2),
/*minDay=*/new Day(1, 1, 1),
/*maxDay=*/new Day(1, 1, 3)),
'min < day.date < max: day is within range');
assert_true(isDayOutsideOfRange(
/*day=*/new Day(1, 1, 3),
/*minDay=*/new Day(1, 1, 1),
/*maxDay=*/new Day(1, 1, 2)),
'min < max < day.date: day is outside of range');
}, `Tests behavior of the date picker's internal function isTodayOutsideOfRange.`);
</script>