File: round-function.html

package info (click to toggle)
thunderbird 1%3A78.8.0-1~deb10u1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 2,910,720 kB
  • sloc: cpp: 5,890,568; javascript: 4,416,354; ansic: 3,051,657; python: 917,001; asm: 304,197; xml: 206,624; sh: 109,232; java: 108,679; makefile: 22,984; perl: 15,867; yacc: 4,565; objc: 3,026; pascal: 1,787; lex: 1,720; ada: 1,681; cs: 879; exp: 505; awk: 485; sql: 452; php: 436; lisp: 432; ruby: 99; sed: 69; csh: 45
file content (97 lines) | stat: -rw-r--r-- 3,771 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<!doctype html>
<title>round() function</title>
<meta charset=utf-8>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../support/numeric-testcommon.js"></script>

<meta name=author content="Tab Atkins-Bittner">
<link rel=help href="https://drafts.csswg.org/css-values-4/#round-func">

<div id=target></div>
<script>
// No-op round should be same as nearest
test_math_used("round(23px, 10px)", "20px");
test_math_used("round(18px, 10px)", "20px");
test_math_used("round(15px, 10px)", "20px");
test_math_used("round(13px, 10px)", "10px");
test_math_used("round(-13px, 10px)", "-10px");
test_math_used("round(-18px, 10px)", "-20px");

// Test nearest
test_math_used("round(nearest, 23px, 10px)", "20px");
test_math_used("round(nearest, 18px, 10px)", "20px");
test_math_used("round(nearest, 15px, 10px)", "20px");
test_math_used("round(nearest, 13px, 10px)", "10px");
test_math_used("round(nearest, -13px, 10px)", "-10px");
test_math_used("round(nearest, -18px, 10px)", "-20px");

// Test down
test_math_used("round(down, 23px, 10px)", "20px");
test_math_used("round(down, 18px, 10px)", "10px");
test_math_used("round(down, 15px, 10px)", "10px");
test_math_used("round(down, 13px, 10px)", "10px");
test_math_used("round(down, -13px, 10px)", "-20px");
test_math_used("round(down, -18px, 10px)", "-20px");

// Test up
test_math_used("round(up, 23px, 10px)", "30px");
test_math_used("round(up, 18px, 10px)", "20px");
test_math_used("round(up, 15px, 10px)", "20px");
test_math_used("round(up, 13px, 10px)", "20px");
test_math_used("round(up, -13px, 10px)", "-10px");
test_math_used("round(up, -18px, 10px)", "-10px");

// Test to-zero
test_math_used("round(to-zero, 23px, 10px)", "20px");
test_math_used("round(to-zero, 18px, 10px)", "10px");
test_math_used("round(to-zero, 15px, 10px)", "10px");
test_math_used("round(to-zero, 13px, 10px)", "10px");
test_math_used("round(to-zero, -13px, 10px)", "-10px");
test_math_used("round(to-zero, -18px, 10px)", "-10px");

// Test a negative step
test_math_used("round(23px, -10px)", "20px");
test_math_used("round(18px, -10px)", "20px");
test_math_used("round(15px, -10px)", "20px");
test_math_used("round(13px, -10px)", "10px");
test_math_used("round(-13px, -10px)", "-10px");
test_math_used("round(-18px, -10px)", "-20px");

// Extreme cases:

// 0 step is NaN
test_nan("round(5, 0)");
// both infinite is NaN
test_nan("round(infinity, infinity)");
test_nan("round(infinity, -infinity)");
test_nan("round(-infinity, infinity)");
test_nan("round(-infinity, -infinity)");

// infinite value with finite step is the same infinity
test_plus_infinity("round(infinity, 5)");
test_plus_infinity("round(infinity, -5)");
test_minus_infinity("round(-infinity, 5)");
test_minus_infinity("round(-infinity, -5)");

// Finite value with infinite step depends on rounding strategy.
// 'nearest' and 'to-zero': pos and +0 go to +0, neg and -0 go to -0
test_plus_zero("round(5, infinity)");
test_plus_zero("round(5, -infinity)");
test_minus_zero("round(-5, infinity)");
test_minus_zero("round(-5, -infinity)");
test_plus_zero("round(to-zero, 5, infinity)");
test_plus_zero("round(to-zero, 5, -infinity)");
test_minus_zero("round(to-zero, -5, infinity)");
test_minus_zero("round(to-zero, -5, -infinity)");
// 'up': pos goes to +inf, 0+ goes to 0+, else 0-
test_plus_infinity("round(up, 1, infinity)");
test_plus_zero("round(up, 0, infinity)");
test_minus_zero("round(up, -1 * 0, infinity");
test_minus_zero("round(up, -1, infinity");
// 'down': neg goes to -inf, -0 goes to -0, else 0+
test_minus_infinity("round(down, -1, infinity)");
test_minus_zero("round(down, -1 * 0, infinity)");
test_plus_zero("round(down, 0, infinity)");
test_plus_zero("round(down, 1, infinity)");
</script>