This test has two cases that don't seem to be right:
'calc(1 * min(NaN * 2px, NaN * 4em))' as a specified value should serialize as 'min(NaN * 1px, NaN * 1em)'.
'calc(1 * clamp(NaN * 2em, NaN * 4px, NaN * 8pt))' as a specified value should serialize as 'clamp(NaN * 1em, NaN * 1px, NaN * 1px)'.
As far as I can tell, there is nothing that allows the elimination of the "1 *" (as obvious an elimination as it might be), and instead, they should be:
'calc(1 * min(NaN * 2px, NaN * 4em))' as a specified value should serialize as 'calc(1 * min(NaN * 1px, NaN * 1em))'.
'calc(1 * clamp(NaN * 2em, NaN * 4px, NaN * 8pt))' as a specified value should serialize as 'calc(1 * clamp(NaN * 1em, NaN * 1px, NaN * 1px))'.
1.'max((min(10%, 30px) + 10px) * 2 + 10px, 5em + 5%)' as a specified value should serialize as 'max(10px + ((10px + min(10%, 30px)) * 2), 5% + 5em)'.
'max((min(10%, 30px) + 10px) * 2 + 10px, 5em + 5%)' as a computed value should serialize as 'max(10px + ((10px + min(10%, 30px)) * 2), 5% + 80px)'.
My reading of the serialization section indicates that the 2 should sort before the (10px + min(10%, 30px)) in the product. So they should both serialize as:
There are a few more discrepancies between my interpretation of the
calc()
spec and WPT that I want to check on:https://wpt.fyi/results/css/css-values/calc-infinity-nan-serialize-length.html
This test has two cases that don't seem to be right:
'calc(1 * min(NaN * 2px, NaN * 4em))' as a specified value should serialize as 'min(NaN * 1px, NaN * 1em)'.
'calc(1 * clamp(NaN * 2em, NaN * 4px, NaN * 8pt))' as a specified value should serialize as 'clamp(NaN * 1em, NaN * 1px, NaN * 1px)'.
As far as I can tell, there is nothing that allows the elimination of the "1 *" (as obvious an elimination as it might be), and instead, they should be:
'calc(1 * min(NaN * 2px, NaN * 4em))' as a specified value should serialize as 'calc(1 * min(NaN * 1px, NaN * 1em))'.
'calc(1 * clamp(NaN * 2em, NaN * 4px, NaN * 8pt))' as a specified value should serialize as 'calc(1 * clamp(NaN * 1em, NaN * 1px, NaN * 1px))'.
https://wpt.fyi/results/css/css-values/minmax-length-percent-serialize.html
This test has two cases that don't seem right:
1.
'max((min(10%, 30px) + 10px) * 2 + 10px, 5em + 5%)' as a specified value should serialize as 'max(10px + ((10px + min(10%, 30px)) * 2), 5% + 5em)'.
'max((min(10%, 30px) + 10px) * 2 + 10px, 5em + 5%)' as a computed value should serialize as 'max(10px + ((10px + min(10%, 30px)) * 2), 5% + 80px)'.
My reading of the serialization section indicates that the
2
should sort before the(10px + min(10%, 30px))
in the product. So they should both serialize as:max(10px + (2 * (10px + min(10%, 30px))), 5% + 5em)
https://wpt.fyi/results/css/css-values/calc-serialization-002.html also has the same error with the test case
calc((min(10px, 20%) + max(1rem, 2%)) * 2)
.Finally, https://wpt.fyi/results/css/css-values/calc-in-media-queries-with-mixed-units.html
Testcase 9 in this test:
with the iframe containing the media query:
Despite the queries units not matching the title, the math does not work out.
calc(50vw / 0.3125em 10px) == 50px / 5px 10px == 100px, but height is 10, so that should fail.