Commit a4aeb242 authored by Xiaocheng Hu's avatar Xiaocheng Hu Committed by Commit Bot

Add parser and evaluation WPT for <time> values involving min/max()

Bug: 978682
Change-Id: I65c38a7b5978034c4c477e68d29edaa2852d09af
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1758299Reviewed-by: default avatarRune Lillesveen <futhark@chromium.org>
Commit-Queue: Xiaocheng Hu <xiaochengh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#688203}
parent 0bba66be
<!DOCTYPE html>
<link rel="help" href="https://drafts.csswg.org/css-values-4/#comp-func">
<link rel="help" href="https://drafts.csswg.org/css-values-4/#time">
<link rel="help" href="https://drafts.csswg.org/css-values-4/#calc-type-checking">
<link rel="author" title="Xiaocheng Hu" href="mailto:xiaochengh@chromium.org">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../support/computed-testcommon.js"></script>
<div id="target"></div>
<div id="reference"></div>
<script>
const property = 'transition-delay';
function test_time_equals(value, expected) {
const reference = document.getElementById('reference');
reference.style[property] = '';
reference.style[property] = expected;
const computed = getComputedStyle(reference)[property];
test_computed_value(property, value, computed);
}
// Identity tests
test_time_equals('min(1s)', '1s');
test_time_equals('min(1ms)', '1ms');
test_time_equals('max(1s)', '1s');
test_time_equals('max(1ms)', '1ms');
// Comparisons between same units
test_time_equals('min(1s, 2s)', '1s');
test_time_equals('min(1ms, 2ms)', '1ms');
test_time_equals('max(1s, 2s)', '2s');
test_time_equals('max(1ms, 2ms)', '2ms');
// Comparisons between different units
test_time_equals('min(1s, 1100ms)', '1s');
test_time_equals('max(0.9s, 1000ms)', '1000ms');
// Nestings
test_time_equals('min(2s, max(1s, 1500ms))', '1500ms');
test_time_equals('max(1000ms, min(2000ms, 1.5s))', '1.5s');
// General calculations
test_time_equals('calc(min(0.5s, 600ms) + 500ms)', '1s');
test_time_equals('calc(min(0.5s, 600ms) - 500ms)', '0s');
test_time_equals('calc(min(0.5s, 600ms) * 2)', '1s');
test_time_equals('calc(min(0.5s, 600ms) / 2)', '0.25s');
test_time_equals('calc(max(0.5s, 400ms) + 500ms)', '1s');
test_time_equals('calc(max(0.5s, 400ms) - 500ms)', '0s');
test_time_equals('calc(max(0.5s, 400ms) * 2)', '1s');
test_time_equals('calc(max(0.5s, 400ms) / 2)', '0.25s');
test_time_equals('calc(min(0.5s, 600ms) + max(500ms, 0.4s))', '1s');
test_time_equals('calc(min(0.5s, 600ms) - max(500ms, 0.4s))', '0s');
</script>
<!DOCTYPE html>
<link rel="help" href="https://drafts.csswg.org/css-values-4/#comp-func">
<link rel="help" href="https://drafts.csswg.org/css-values-4/#time">
<link rel="help" href="https://drafts.csswg.org/css-values-4/#calc-type-checking">
<link rel="author" title="Xiaocheng Hu" href="mailto:xiaochengh@chromium.org">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../support/parsing-testcommon.js"></script>
<script>
function test_invalid_time(value) {
test_invalid_value('transition-delay', value);
}
// Syntax checking
test_invalid_time('min()');
test_invalid_time('min( )');
test_invalid_time('min(,)');
test_invalid_time('min(1mt)');
test_invalid_time('min(1s, )');
test_invalid_time('min(, 1s)');
test_invalid_time('min(1s + )');
test_invalid_time('min(1s - )');
test_invalid_time('min(1s * )');
test_invalid_time('min(1s / )');
test_invalid_time('min(1s 2s)');
test_invalid_time('min(1s, , 2s)');
test_invalid_time('max()');
test_invalid_time('max( )');
test_invalid_time('max(,)');
test_invalid_time('max(1dag)');
test_invalid_time('max(1s, )');
test_invalid_time('max(, 1s)');
test_invalid_time('max(1s + )');
test_invalid_time('max(1s - )');
test_invalid_time('max(1s * )');
test_invalid_time('max(1s / )');
test_invalid_time('max(1s 2s)');
test_invalid_time('max(1s, , 2s)');
// Type checking
test_invalid_time('min(0)');
test_invalid_time('min(0%)');
test_invalid_time('min(0px)');
test_invalid_time('min(0deg)');
test_invalid_time('min(0Hz)');
test_invalid_time('min(0dpi)');
test_invalid_time('min(0fr)');
test_invalid_time('min(1s, 0)');
test_invalid_time('min(1s, 0%)');
test_invalid_time('min(1s, 0px)');
test_invalid_time('min(1s, 0deg)');
test_invalid_time('min(1s, 0Hz)');
test_invalid_time('min(1s, 0dpi)');
test_invalid_time('min(1s, 0fr)');
test_invalid_time('max(0)');
test_invalid_time('max(0%)');
test_invalid_time('max(0px)');
test_invalid_time('max(0deg)');
test_invalid_time('max(0Hz)');
test_invalid_time('max(0dpi)');
test_invalid_time('max(0fr)');
test_invalid_time('max(1s, 0)');
test_invalid_time('max(1s, 0%)');
test_invalid_time('max(1s, 0px)');
test_invalid_time('max(1s, 0deg)');
test_invalid_time('max(1s, 0Hz)');
test_invalid_time('max(1s, 0dpi)');
test_invalid_time('max(1s, 0fr)');
</script>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment