tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

parse-anplusb.html (4054B)


      1 <!DOCTYPE html>
      2 <html>
      3    <head>
      4        <title>CSS Selectors: Test parsing of an+b selectors</title>
      5        <link rel="author" title="Chris Nardi" href="mailto:cnardi@chromium.org">
      6        <link rel="help" href="https://drafts.csswg.org/selectors-3/#nth-child-pseudo">
      7        <link rel="help" href="https://drafts.csswg.org/selectors-3/#nth-last-child-pseudo">
      8        <link rel="help" href="https://drafts.csswg.org/selectors-3/#nth-of-type-pseudo">
      9        <link rel="help" href="https://drafts.csswg.org/selectors-3/#nth-last-of-type-pseudo">
     10        <meta charset="utf-8">
     11        <script src="/resources/testharness.js"></script>
     12        <script src="/resources/testharnessreport.js"></script>
     13        <style id="teststyles">
     14        </style>
     15    </head>
     16    <body>
     17        <script>
     18            function add_selector_style(source) {
     19                var style_element = document.getElementById("teststyles");
     20                style_element.firstChild.data = source + "{ font-size: 1em; }";
     21                return style_element.sheet;
     22            }
     23 
     24            function assert_selector_serializes_to(source, expected_result) {
     25                test(function() {
     26                    var sheet = add_selector_style(source);
     27                    assert_equals(sheet.cssRules[0].selectorText, expected_result);
     28                }, source + " should be parsed and serialized correctly");
     29            }
     30 
     31            function assert_invalid_selector(source) {
     32                test(function() {
     33                    var sheet = add_selector_style(source);
     34                    assert_equals(sheet.cssRules[0], undefined);
     35                }, source + " should not parse");
     36            }
     37 
     38            function run_tests_on_anplusb_selector(source) {
     39                assert_selector_serializes_to(source + '(1n+0)', source + '(n)');
     40                assert_selector_serializes_to(source + '(n+0)', source + '(n)');
     41                assert_selector_serializes_to(source + '(n)', source + '(n)');
     42                assert_selector_serializes_to(source + '(-n+0)', source + '(-n)');
     43                assert_selector_serializes_to(source + '(-n)', source + '(-n)');
     44                assert_selector_serializes_to(source + '(N)', source + '(n)');
     45                assert_selector_serializes_to(source + '(+n+3)', source + '(n+3)');
     46                assert_selector_serializes_to(source + '( +n + 7 )', source + '(n+7)');
     47                assert_selector_serializes_to(source + '(  N- 123)', source + '(n-123)');
     48                assert_selector_serializes_to(source + '(n- 10)', source + '(n-10)');
     49                assert_selector_serializes_to(source + '(-n\n- 1)', source + '(-n-1)');
     50                assert_selector_serializes_to(source + '( 23n\n\n+\n\n123 )', source + '(23n+123)');
     51 
     52                assert_invalid_selector(source + '(n- 1 2)');
     53                assert_invalid_selector(source + '(n-b1)');
     54                assert_invalid_selector(source + '(n-+1)');
     55                assert_invalid_selector(source + '(n-1n)');
     56                assert_invalid_selector(source + '(-n -b1)');
     57                assert_invalid_selector(source + '(-1n- b1)');
     58                assert_invalid_selector(source + '(-n-13b1)');
     59                assert_invalid_selector(source + '(-n-+1)');
     60                assert_invalid_selector(source + '(-n+n)');
     61                assert_invalid_selector(source + '(+ 1n)');
     62                assert_invalid_selector(source + '(  n +12 3)');
     63                assert_invalid_selector(source + '(  12 n )');
     64                assert_invalid_selector(source + '(+12n-0+1)');
     65                assert_invalid_selector(source + '(+12N -- 1)');
     66                assert_invalid_selector(source + '(+12 N )');
     67                assert_invalid_selector(source + '(+ n + 7)');
     68            }
     69 
     70            run_tests_on_anplusb_selector(':nth-child');
     71            run_tests_on_anplusb_selector(':nth-last-child');
     72            run_tests_on_anplusb_selector(':nth-of-type');
     73            run_tests_on_anplusb_selector(':nth-last-of-type');
     74        </script>
     75    </body>
     76 </html>