LibWeb: Propagate NaN in CSS clamp function

Gains us 10 WPT tests.
This commit is contained in:
Callum Law
2025-08-05 22:14:23 +12:00
committed by Sam Atkins
parent 4ba54a7a1c
commit e260ba54e0
Notes: github-actions[bot] 2025-08-08 10:45:00 +00:00
6 changed files with 21 additions and 20 deletions

View File

@@ -2,8 +2,7 @@ Harness status: OK
Found 21 tests
19 Pass
2 Fail
21 Pass
Pass 'calc(100px * 0 / 0)' as a specified value should serialize as 'calc(NaN * 1px)'.
Pass 'calc(100px / 0)' as a specified value should serialize as 'calc(infinity * 1px)'.
Pass 'calc(100px / (0))' as a specified value should serialize as 'calc(infinity * 1px)'.
@@ -20,8 +19,8 @@ Pass 'calc(1px * min(0/0, 0))' as a specified value should serialize as 'calc(Na
Pass 'calc(1px * max(0/0, min(0,10)))' as a specified value should serialize as 'calc(NaN * 1px)'.
Pass 'calc(1px * clamp(0/0, 0, 10))' as a specified value should serialize as 'calc(NaN * 1px)'.
Pass 'calc(1px * max(0, min(10, 0/0)))' as a specified value should serialize as 'calc(NaN * 1px)'.
Fail 'calc(1px * clamp(0, 10, 0/0))' as a specified value should serialize as 'calc(NaN * 1px)'.
Pass 'calc(1px * clamp(0, 10, 0/0))' as a specified value should serialize as 'calc(NaN * 1px)'.
Pass 'calc(1px * max(0, min(0/0, 10)))' as a specified value should serialize as 'calc(NaN * 1px)'.
Fail 'calc(1px * clamp(0, 0/0, 10))' as a specified value should serialize as 'calc(NaN * 1px)'.
Pass 'calc(1px * clamp(0, 0/0, 10))' as a specified value should serialize as 'calc(NaN * 1px)'.
Pass 'calc(1px * clamp(-1/0, 0, 1/0))' as a specified value should serialize as 'calc(0px)'.
Pass 'calc(1px * clamp(-1/0, 1/0, 10))' as a specified value should serialize as 'calc(10px)'.

View File

@@ -2,8 +2,7 @@ Harness status: OK
Found 30 tests
28 Pass
2 Fail
30 Pass
Pass 'rotate(calc(1deg * NaN))' as a specified value should serialize as 'rotate(calc(NaN * 1deg))'.
Pass 'rotate(calc(1rad * NaN))' as a specified value should serialize as 'rotate(calc(NaN * 1deg))'.
Pass 'rotate(calc(1turn * NaN))' as a specified value should serialize as 'rotate(calc(NaN * 1deg))'.
@@ -29,8 +28,8 @@ Pass 'rotate(calc(1 * clamp(-INFINITY*20deg, 0deg, infiniTY*10deg)))' as a speci
Pass 'rotate(calc(1deg * max(NaN, min(0,10))))' as a specified value should serialize as 'rotate(calc(NaN * 1deg))'.
Pass 'rotate(calc(1deg * clamp(NaN, 0, 10)))' as a specified value should serialize as 'rotate(calc(NaN * 1deg))'.
Pass 'rotate(calc(1deg * max(0, min(10, NaN))))' as a specified value should serialize as 'rotate(calc(NaN * 1deg))'.
Fail 'rotate(calc(1deg * clamp(0, 10, NaN)))' as a specified value should serialize as 'rotate(calc(NaN * 1deg))'.
Pass 'rotate(calc(1deg * clamp(0, 10, NaN)))' as a specified value should serialize as 'rotate(calc(NaN * 1deg))'.
Pass 'rotate(calc(1deg * max(0, min(NaN, 10))))' as a specified value should serialize as 'rotate(calc(NaN * 1deg))'.
Fail 'rotate(calc(1deg * clamp(0, NaN, 10)))' as a specified value should serialize as 'rotate(calc(NaN * 1deg))'.
Pass 'rotate(calc(1deg * clamp(0, NaN, 10)))' as a specified value should serialize as 'rotate(calc(NaN * 1deg))'.
Pass 'rotate(calc(1deg * clamp(-Infinity, 0, infinity)))' as a specified value should serialize as 'rotate(calc(0deg))'.
Pass 'rotate(calc(1deg * clamp(-inFinity, infinity, 10)))' as a specified value should serialize as 'rotate(calc(10deg))'.

View File

@@ -2,8 +2,8 @@ Harness status: OK
Found 41 tests
37 Pass
4 Fail
39 Pass
2 Fail
Pass 'calc(1px * NaN)' as a specified value should serialize as 'calc(NaN * 1px)'.
Pass 'calc(1% * NaN)' as a specified value should serialize as 'calc(NaN * 1%)'.
Pass 'calc(1in * NaN)' as a specified value should serialize as 'calc(NaN * 1px)'.
@@ -36,9 +36,9 @@ Pass 'calc(1 * clamp(-INFINITY*20px, 0px, infiniTY*10px))' as a specified value
Pass 'calc(1px * max(NaN, min(0,10)))' as a specified value should serialize as 'calc(NaN * 1px)'.
Pass 'calc(1px * clamp(NaN, 0, 10))' as a specified value should serialize as 'calc(NaN * 1px)'.
Pass 'calc(1px * max(0, min(10, NaN)))' as a specified value should serialize as 'calc(NaN * 1px)'.
Fail 'calc(1px * clamp(0, 10, NaN))' as a specified value should serialize as 'calc(NaN * 1px)'.
Pass 'calc(1px * clamp(0, 10, NaN))' as a specified value should serialize as 'calc(NaN * 1px)'.
Pass 'calc(1px * max(0, min(NaN, 10)))' as a specified value should serialize as 'calc(NaN * 1px)'.
Fail 'calc(1px * clamp(0, NaN, 10))' as a specified value should serialize as 'calc(NaN * 1px)'.
Pass 'calc(1px * clamp(0, NaN, 10))' as a specified value should serialize as 'calc(NaN * 1px)'.
Pass 'calc(1px * clamp(-Infinity, 0, infinity))' as a specified value should serialize as 'calc(0px)'.
Pass 'calc(1px * clamp(-inFinity, infinity, 10))' as a specified value should serialize as 'calc(10px)'.
Pass 'calc(1 * min(NaN * 1pt, NaN * 1cm))' as a specified value should serialize as 'calc(NaN * 1px)'.

View File

@@ -2,8 +2,7 @@ Harness status: OK
Found 31 tests
29 Pass
2 Fail
31 Pass
Pass 'calc(NaN)' as a specified value should serialize as 'calc(NaN)'.
Pass 'calc(infinity)' as a specified value should serialize as 'calc(infinity)'.
Pass 'calc(-infinity)' as a specified value should serialize as 'calc(-infinity)'.
@@ -30,8 +29,8 @@ Pass 'calc(1 * clamp(-INFINITY*20, 0, infiniTY*10))' as a specified value should
Pass 'calc(1 * max(NaN, min(0,10)))' as a specified value should serialize as 'calc(NaN)'.
Pass 'calc(1 * clamp(NaN, 0, 10))' as a specified value should serialize as 'calc(NaN)'.
Pass 'calc(1 * max(0, min(10, NaN)))' as a specified value should serialize as 'calc(NaN)'.
Fail 'calc(1 * clamp(0, 10, NaN))' as a specified value should serialize as 'calc(NaN)'.
Pass 'calc(1 * clamp(0, 10, NaN))' as a specified value should serialize as 'calc(NaN)'.
Pass 'calc(1 * max(0, min(NaN, 10)))' as a specified value should serialize as 'calc(NaN)'.
Fail 'calc(1 * clamp(0, NaN, 10))' as a specified value should serialize as 'calc(NaN)'.
Pass 'calc(1 * clamp(0, NaN, 10))' as a specified value should serialize as 'calc(NaN)'.
Pass 'calc(1 * clamp(-Infinity, 0, infinity))' as a specified value should serialize as 'calc(0)'.
Pass 'calc(1 * clamp(-inFinity, infinity, 10))' as a specified value should serialize as 'calc(10)'.

View File

@@ -2,8 +2,7 @@ Harness status: OK
Found 29 tests
27 Pass
2 Fail
29 Pass
Pass 'calc(1s * NaN)' as a specified value should serialize as 'calc(NaN * 1s)'.
Pass 'calc(1s * nan)' as a specified value should serialize as 'calc(NaN * 1s)'.
Pass 'calc(1ms * NaN)' as a specified value should serialize as 'calc(NaN * 1s)'.
@@ -28,8 +27,8 @@ Pass 'calc(1 * clamp(-INFINITY*20s, 0s, infiniTY*10s))' as a specified value sho
Pass 'calc(1s * max(NaN, min(0,10)))' as a specified value should serialize as 'calc(NaN * 1s)'.
Pass 'calc(1s * clamp(NaN, 0, 10))' as a specified value should serialize as 'calc(NaN * 1s)'.
Pass 'calc(1s * max(0, min(10, NaN)))' as a specified value should serialize as 'calc(NaN * 1s)'.
Fail 'calc(1s * clamp(0, 10, NaN))' as a specified value should serialize as 'calc(NaN * 1s)'.
Pass 'calc(1s * clamp(0, 10, NaN))' as a specified value should serialize as 'calc(NaN * 1s)'.
Pass 'calc(1s * max(0, min(NaN, 10)))' as a specified value should serialize as 'calc(NaN * 1s)'.
Fail 'calc(1s * clamp(0, NaN, 10))' as a specified value should serialize as 'calc(NaN * 1s)'.
Pass 'calc(1s * clamp(0, NaN, 10))' as a specified value should serialize as 'calc(NaN * 1s)'.
Pass 'calc(1s * clamp(-Infinity, 0, infinity))' as a specified value should serialize as 'calc(0s)'.
Pass 'calc(1s * clamp(-inFinity, infinity, 10))' as a specified value should serialize as 'calc(10s)'.