File: font-style-parsing.html

package info (click to toggle)
thunderbird 1%3A78.14.0-1~deb10u1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 2,922,628 kB
  • sloc: cpp: 5,990,120; javascript: 4,418,692; ansic: 3,063,889; python: 915,509; asm: 304,197; xml: 206,623; sh: 109,253; java: 108,679; makefile: 22,985; 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 (60 lines) | stat: -rw-r--r-- 5,473 bytes parent folder | download | duplicates (10)
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
<!DOCTYPE html>
<html>
<head>
    <title>Testing the new font-style values introduced in CSS Fonts level 4</title>
    <link rel="help" href="https://www.w3.org/TR/css-fonts-4/#font-style-prop" />
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
</head>
<body>
    <div id="test"></div>
    <script>
        var testFontStyle = [
            { style: "italic",                      expectedResult: true,   message: "'italic' is valid" },
            { style: "italic 20deg",                expectedResult: false,  message: "'italic' followed by angle is invalid" },
            { style: "italic a",                    expectedResult: false,  message: "'italic' followed by non-number is invalid" },
            { style: "oblique",                     expectedResult: true,   message: "'oblique' is valid" },
            { style: "oblique 0deg",                expectedResult: true,   message: "'oblique' followed by zero degrees is valid" },
            { style: "oblique 20deg",               expectedResult: true,   message: "'oblique' followed by positive angle in degrees is valid" },
            { style: "oblique 0.5rad",              expectedResult: true,   message: "'oblique' followed by positive angle in radians is valid",    expectedValue: "oblique 28.6479deg" },
            { style: "oblique 20grad",              expectedResult: true,   message: "'oblique' followed by positive angle in gradians is valid",   expectedValue: "oblique 18deg" },
            { style: "oblique 0.1turn",             expectedResult: true,   message: "'oblique' followed by positive angle in turns is valid",      expectedValue: "oblique 36deg" },
            { style: "oblique 20px",                expectedResult: false,  message: "'oblique' followed by number with invalid unit type is in valid" },
            { style: "oblique -20deg",              expectedResult: true,   message: "'oblique' followed by negative angle is valid" },
            { style: "oblique 20.5deg",             expectedResult: true,   message: "'oblique' followed by fractional angle is valid" },
            { style: "oblique 90deg",               expectedResult: true,   message: "'oblique' followed by maxumum 90 degree angle is valid" },
            { style: "oblique -90deg",              expectedResult: true,   message: "'oblique' followed by minimum -90 degree angle is valid" },
            { style: "oblique 90.01deg",            expectedResult: false,  message: "'oblique' followed by positive out of range angle is in invalid" },
            { style: "oblique -90.01deg",           expectedResult: false,  message: "'oblique' followed by negative out of range angle is in invalid" },
            { style: "oblique 10",                  expectedResult: false,  message: "'oblique' followed by unit-less value is invalid" },
            { style: "oblique 30deg",               expectedResult: true,   message: "'oblique' followed by positive angle is valid" },
            { style: "oblique a",                   expectedResult: false,  message: "'oblique' followed by non-number is invalid" },
            { style: "oblique 20deg a",             expectedResult: false,  message: "'oblique' and angle followed by non-number is invalid" },
            { style: "oblique -",                   expectedResult: false,  message: "'oblique' followed by isolated minus is invalid" },
            { style: "oblique - 20deg",             expectedResult: false,  message: "'oblique' followed by minus and angle separated by space is invalid" },
            { style: "oblique -a",                  expectedResult: false,  message: "'oblique' followed by minus and non-number is invalid" },
            { style: "oblique calc(50deg)",         expectedResult: true,   message: "'oblique' followed by calc is valid",                         expectedValue: "oblique 50deg" },
            { style: "oblique calc(-120deg)",       expectedResult: true,   message: "'oblique' followed by calc is valid even if it must be clamped (no computation)",     expectedValue: "oblique -90deg" },
            { style: "oblique calc(6 * 20deg)",     expectedResult: true,   message: "'oblique' followed by calc is valid even if it must be clamped (with computation)",   expectedValue: "oblique 90deg" },
            { style: "oblique calc(10grad + 5deg)", expectedResult: true,   message: "'oblique' followed by calc is valid even if it mixes units (with computation)",       expectedValue: "oblique 14deg" }
        ];

        testFontStyle.forEach(function (testCase) {
            test(() => {
                assert_equals(window.CSS.supports("font-style", testCase.style), testCase.expectedResult, "Font-style supports: " + testCase.message);
            }, "Font-style (supports): " + testCase.message);
        });

        testFontStyle.forEach(function (testCase) {
            if (testCase.expectedResult) {
                test(() => {
                    let element = document.getElementById("test");
                    element.style = "font-style: " + testCase.style;
                    let expectedValue = (testCase.expectedValue) ? testCase.expectedValue : testCase.style;
                    assert_equals(window.getComputedStyle(element).fontStyle, expectedValue, "Font-style computed style: " + testCase.message);
                }, "Font-style (computed): " + testCase.message);
            }
        });
    </script>
</body>
</html>