tor-browser

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

embellished-operator-001.html (23583B)


      1 <!DOCTYPE html>
      2 <html>
      3 <head>
      4 <meta charset="utf-8">
      5 <title>Embellished operators</title>
      6 <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
      7 <link rel="help" href="https://w3c.github.io/mathml-core/#embellished-operators">
      8 <link rel="help" href="https://w3c.github.io/mathml-core/#definition-of-space-like-elements">
      9 <link rel="help" href="https://w3c.github.io/mathml-core/#layout-of-mrow">
     10 <meta name="assert" content="Verify definition of embellished operators">
     11 <script src="/resources/testharness.js"></script>
     12 <script src="/resources/testharnessreport.js"></script>
     13 <script src="/mathml/support/feature-detection.js"></script>
     14 <script src="/mathml/support/box-navigation.js"></script>
     15 <style>
     16  /* Default spacing of operator 'X' is 0.2777777777777778em so quite different
     17     from the measured/specified 0em and 1em. */
     18  math, math * {
     19      font: 25px/1 Ahem;
     20  }
     21  mn {
     22      color: black;
     23  }
     24  .testedElement mo {
     25      color: yellow !important;
     26  }
     27  .testedElement, .testedElement * {
     28      color: blue !important;
     29      background: blue !important;
     30  }
     31  .oof1 {
     32      position: absolute;
     33  }
     34  .oof2 {
     35      position: fixed;
     36  }
     37  .nobox {
     38      display: none;
     39  }
     40 </style>
     41 <script>
     42  function spaceBeforeElement(id) {
     43      var element = document.getElementById(id);
     44      var mnBefore = previousInFlowSibling(element);
     45      return element.getBoundingClientRect().left - mnBefore.getBoundingClientRect().right;
     46  }
     47 
     48  function spaceBeforeCoreOperator(id) {
     49      var element = document.getElementById(id);
     50      var coreMo = element.getElementsByTagName("mo")[0];
     51      return coreMo.getBoundingClientRect().left - element.getBoundingClientRect().left;
     52  }
     53 
     54  setup({ explicit_done: true });
     55  window.addEventListener("load", runTests);
     56 
     57  function runTests() {
     58      var epsilon = 1;
     59      var emToPx = 25;
     60 
     61      ["mrow", "mstyle", "mphantom", "mpadded", "merror", "mprescripts", "none", "unknown", "mfenced", "a"].forEach(tag => {
     62          test(function() {
     63              assert_true(MathMLFeatureDetection.has_operator_spacing());
     64              assert_approx_equals(spaceBeforeElement(`${tag}-op-1`), 2 * emToPx, epsilon);
     65              assert_approx_equals(spaceBeforeCoreOperator(`${tag}-op-1`), 0, epsilon);
     66          }, `${tag} (embellished operator)`);
     67 
     68          test(function() {
     69              assert_true(MathMLFeatureDetection.has_operator_spacing());
     70              assert_approx_equals(spaceBeforeElement(`${tag}-op-2`), 2 * emToPx, epsilon);
     71              assert_approx_equals(spaceBeforeCoreOperator(`${tag}-op-2`), 0, epsilon);
     72          }, `${tag} (embellished operator, from in-flow children)`);
     73 
     74          test(function() {
     75              assert_true(MathMLFeatureDetection.has_operator_spacing());
     76              assert_approx_equals(spaceBeforeElement(`${tag}-nonop-1`), 0, epsilon);
     77              assert_approx_equals(spaceBeforeCoreOperator(`${tag}-nonop-1`), 2 * emToPx, epsilon);
     78          }, `${tag} (not embellished operator)`);
     79 
     80          test(function() {
     81              assert_true(MathMLFeatureDetection.has_operator_spacing());
     82              assert_approx_equals(spaceBeforeElement(`${tag}-nonop-2`), 0, epsilon);
     83              assert_approx_equals(spaceBeforeCoreOperator(`${tag}-nonop-2`), 2 * emToPx, epsilon);
     84          }, `${tag} (not embellished operator, from in-flow children)`);
     85      });
     86 
     87      done();
     88  }
     89 </script>
     90 </head>
     91 <body>
     92  <div id="log"></div>
     93  <!-- mrow is an embellished operator if its in-flow children consist
     94       of one embellished operator and zero or more space-like elements. -->
     95  <p>
     96    <math>
     97      <mn>X</mn>
     98      <mrow id="mrow-op-1" class="testedElement">
     99        <mo lspace="2em" rspace="0em">X</mo>
    100        <mtext class="space-like">X</mtext>
    101      </mrow>
    102      <mn>X</mn>
    103    </math>
    104  </p>
    105  <p>
    106    <math>
    107      <mn>X</mn>
    108      <mrow id="mrow-nonop-1" class="testedElement">
    109        <mo lspace="2em" rspace="0em">X</mo>
    110        <mn>X</mn> <!-- "mn" is not space-like -->
    111      </mrow>
    112      <mn>X</mn>
    113    </math>
    114  </p>
    115  <p>
    116    <math>
    117      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    118      <mn>X</mn>
    119      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    120      <mrow id="mrow-op-2" class="testedElement">
    121        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    122        <mo lspace="2em" rspace="0em">X</mo>
    123        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    124        <mtext class="space-like">X</mtext>
    125        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    126      </mrow>
    127      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    128      <mn>X</mn>
    129      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    130    </math>
    131  </p>
    132  <p>
    133    <math>
    134      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    135      <mn>X</mn>
    136      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    137      <mrow id="mrow-nonop-2" class="testedElement">
    138        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    139        <mo lspace="2em" rspace="0em">X</mo>
    140        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    141        <mn>X</mn> <!-- "mn" is not space-like -->
    142        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    143      </mrow>
    144      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    145      <mn>X</mn>
    146      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    147    </math>
    148  </p>
    149  <!-- mstyle is an embellished operator if its in-flow children consist
    150       of one embellished operator and zero or more space-like elements. -->
    151  <p>
    152    <math>
    153      <mn>X</mn>
    154      <mstyle id="mstyle-op-1" class="testedElement">
    155        <mo lspace="2em" rspace="0em">X</mo>
    156      </mstyle>
    157      <mn>X</mn>
    158    </math>
    159  </p>
    160  <p>
    161    <math>
    162      <mn>X</mn>
    163      <mstyle id="mstyle-nonop-1" class="testedElement">
    164        <mo lspace="2em" rspace="0em">X</mo>
    165        <mn>X</mn> <!-- "mn" is not space-like -->
    166      </mstyle>
    167      <mn>X</mn>
    168    </math>
    169  </p>
    170  <p>
    171    <math>
    172      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    173      <mn>X</mn>
    174      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    175      <mstyle id="mstyle-op-2" class="testedElement">
    176        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    177        <mo lspace="2em" rspace="0em">X</mo>
    178        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    179      </mstyle>
    180      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    181      <mn>X</mn>
    182      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    183    </math>
    184  </p>
    185  <p>
    186    <math>
    187      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    188      <mn>X</mn>
    189      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    190      <mstyle id="mstyle-nonop-2" class="testedElement">
    191        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    192        <mo lspace="2em" rspace="0em">X</mo>
    193        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    194        <mn>X</mn> <!-- "mn" is not space-like -->
    195        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    196      </mstyle>
    197      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    198      <mn>X</mn>
    199      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    200    </math>
    201  </p>
    202  <!-- mphantom is an embellished operator if its in-flow children consist
    203       of one embellished operator and zero or more space-like elements. -->
    204  <p>
    205    <math>
    206      <mn>X</mn>
    207      <mphantom id="mphantom-op-1" class="testedElement">
    208        <mo lspace="2em" rspace="0em">X</mo>
    209      </mphantom>
    210      <mn>X</mn>
    211    </math>
    212  </p>
    213  <p>
    214    <math>
    215      <mn>X</mn>
    216      <mphantom id="mphantom-nonop-1" class="testedElement">
    217        <mo lspace="2em" rspace="0em">X</mo>
    218        <mn>X</mn> <!-- "mn" is not space-like -->
    219      </mphantom>
    220      <mn>X</mn>
    221    </math>
    222  </p>
    223  <p>
    224    <math>
    225      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    226      <mn>X</mn>
    227      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    228      <mphantom id="mphantom-op-2" class="testedElement">
    229        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    230        <mo lspace="2em" rspace="0em">X</mo>
    231        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    232      </mphantom>
    233      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    234      <mn>X</mn>
    235      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    236    </math>
    237  </p>
    238  <p>
    239    <math>
    240      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    241      <mn>X</mn>
    242      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    243      <mphantom id="mphantom-nonop-2" class="testedElement">
    244        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    245        <mo lspace="2em" rspace="0em">X</mo>
    246        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    247        <mn>X</mn> <!-- "mn" is not space-like -->
    248        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    249      </mphantom>
    250      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    251      <mn>X</mn>
    252      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    253    </math>
    254  </p>
    255  <!-- mpadded is an embellished operator if its in-flow children consist
    256       of one embellished operator and zero or more space-like elements. -->
    257  <p>
    258    <math>
    259      <mn>X</mn>
    260      <mpadded id="mpadded-op-1" class="testedElement">
    261        <mo lspace="2em" rspace="0em">X</mo>
    262      </mpadded>
    263      <mn>X</mn>
    264    </math>
    265  </p>
    266  <p>
    267    <math>
    268      <mn>X</mn>
    269      <mpadded id="mpadded-nonop-1" class="testedElement">
    270        <mo lspace="2em" rspace="0em">X</mo>
    271        <mn>X</mn> <!-- "mn" is not space-like -->
    272      </mpadded>
    273      <mn>X</mn>
    274    </math>
    275  </p>
    276  <p>
    277    <math>
    278      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    279      <mn>X</mn>
    280      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    281      <mpadded id="mpadded-op-2" class="testedElement">
    282        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    283        <mo lspace="2em" rspace="0em">X</mo>
    284        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    285      </mpadded>
    286      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    287      <mn>X</mn>
    288      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    289    </math>
    290  </p>
    291  <p>
    292    <math>
    293      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    294      <mn>X</mn>
    295      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    296      <mpadded id="mpadded-nonop-2" class="testedElement">
    297        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    298        <mo lspace="2em" rspace="0em">X</mo>
    299        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    300        <mn>X</mn> <!-- "mn" is not space-like -->
    301        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    302      </mpadded>
    303      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    304      <mn>X</mn>
    305      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    306    </math>
    307  </p>
    308  <!-- merror is an embellished operator if its in-flow children consist
    309       of one embellished operator and zero or more space-like elements. -->
    310  <p>
    311    <math>
    312      <mn>X</mn>
    313      <merror id="merror-op-1" class="testedElement">
    314        <mo lspace="2em" rspace="0em">X</mo>
    315      </merror>
    316      <mn>X</mn>
    317    </math>
    318  </p>
    319  <p>
    320    <math>
    321      <mn>X</mn>
    322      <merror id="merror-nonop-1" class="testedElement">
    323        <mo lspace="2em" rspace="0em">X</mo>
    324        <mn>X</mn> <!-- "mn" is not space-like -->
    325      </merror>
    326      <mn>X</mn>
    327    </math>
    328  </p>
    329  <p>
    330    <math>
    331      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    332      <mn>X</mn>
    333      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    334      <merror id="merror-op-2" class="testedElement">
    335        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    336        <mo lspace="2em" rspace="0em">X</mo>
    337        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    338      </merror>
    339      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    340      <mn>X</mn>
    341      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    342    </math>
    343  </p>
    344  <p>
    345    <math>
    346      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    347      <mn>X</mn>
    348      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    349      <merror id="merror-nonop-2" class="testedElement">
    350        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    351        <mo lspace="2em" rspace="0em">X</mo>
    352        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    353        <mn>X</mn> <!-- "mn" is not space-like -->
    354        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    355      </merror>
    356      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    357      <mn>X</mn>
    358      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    359    </math>
    360  </p>
    361  <!-- mprescripts is an embellished operator if its in-flow children consist
    362       of one embellished operator and zero or more space-like elements. -->
    363  <p>
    364    <math>
    365      <mn>X</mn>
    366      <mprescripts id="mprescripts-op-1" class="testedElement">
    367        <mo lspace="2em" rspace="0em">X</mo>
    368      </mprescripts>
    369      <mn>X</mn>
    370    </math>
    371  </p>
    372  <p>
    373    <math>
    374      <mn>X</mn>
    375      <mprescripts id="mprescripts-nonop-1" class="testedElement">
    376        <mo lspace="2em" rspace="0em">X</mo>
    377        <mn>X</mn> <!-- "mn" is not space-like -->
    378      </mprescripts>
    379      <mn>X</mn>
    380    </math>
    381  </p>
    382  <p>
    383    <math>
    384      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    385      <mn>X</mn>
    386      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    387      <mprescripts id="mprescripts-op-2" class="testedElement">
    388        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    389        <mo lspace="2em" rspace="0em">X</mo>
    390        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    391      </mprescripts>
    392      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    393      <mn>X</mn>
    394      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    395    </math>
    396  </p>
    397  <p>
    398    <math>
    399      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    400      <mn>X</mn>
    401      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    402      <mprescripts id="mprescripts-nonop-2" class="testedElement">
    403        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    404        <mo lspace="2em" rspace="0em">X</mo>
    405        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    406        <mn>X</mn> <!-- "mn" is not space-like -->
    407        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    408      </mprescripts>
    409      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    410      <mn>X</mn>
    411      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    412    </math>
    413  </p>
    414  <!-- none is an embellished operator if its in-flow children consist
    415       of one embellished operator and zero or more space-like elements. -->
    416  <p>
    417    <math>
    418      <mn>X</mn>
    419      <none id="none-op-1" class="testedElement">
    420        <mo lspace="2em" rspace="0em">X</mo>
    421      </none>
    422      <mn>X</mn>
    423    </math>
    424  </p>
    425  <p>
    426    <math>
    427      <mn>X</mn>
    428      <none id="none-nonop-1" class="testedElement">
    429        <mo lspace="2em" rspace="0em">X</mo>
    430        <mn>X</mn> <!-- "mn" is not space-like -->
    431      </none>
    432      <mn>X</mn>
    433    </math>
    434  </p>
    435  <p>
    436    <math>
    437      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    438      <mn>X</mn>
    439      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    440      <none id="none-op-2" class="testedElement">
    441        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    442        <mo lspace="2em" rspace="0em">X</mo>
    443        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    444      </none>
    445      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    446      <mn>X</mn>
    447      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    448    </math>
    449  </p>
    450  <p>
    451    <math>
    452      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    453      <mn>X</mn>
    454      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    455      <none id="none-nonop-2" class="testedElement">
    456        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    457        <mo lspace="2em" rspace="0em">X</mo>
    458        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    459        <mn>X</mn> <!-- "mn" is not space-like -->
    460        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    461      </none>
    462      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    463      <mn>X</mn>
    464      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    465    </math>
    466  </p>
    467  <!-- unknown is an embellished operator if its in-flow children consist
    468       of one embellished operator and zero or more space-like elements. -->
    469  <p>
    470    <math>
    471      <mn>X</mn>
    472      <unknown id="unknown-op-1" class="testedElement">
    473        <mo lspace="2em" rspace="0em">X</mo>
    474      </unknown>
    475      <mn>X</mn>
    476    </math>
    477  </p>
    478  <p>
    479    <math>
    480      <mn>X</mn>
    481      <unknown id="unknown-nonop-1" class="testedElement">
    482        <mo lspace="2em" rspace="0em">X</mo>
    483        <mn>X</mn> <!-- "mn" is not space-like -->
    484      </unknown>
    485      <mn>X</mn>
    486    </math>
    487  </p>
    488  <p>
    489    <math>
    490      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    491      <mn>X</mn>
    492      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    493      <unknown id="unknown-op-2" class="testedElement">
    494        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    495        <mo lspace="2em" rspace="0em">X</mo>
    496        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    497      </unknown>
    498      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    499      <mn>X</mn>
    500      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    501    </math>
    502  </p>
    503  <p>
    504    <math>
    505      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    506      <mn>X</mn>
    507      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    508      <unknown id="unknown-nonop-2" class="testedElement">
    509        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    510        <mo lspace="2em" rspace="0em">X</mo>
    511        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    512        <mn>X</mn> <!-- "mn" is not space-like -->
    513        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    514      </unknown>
    515      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    516      <mn>X</mn>
    517      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    518    </math>
    519  </p>
    520  <!-- mfenced is unknown to MathML Core so it is considered a grouping element. -->
    521  <p>
    522    <math>
    523      <mn>X</mn>
    524      <mfenced id="mfenced-op-1" class="testedElement">
    525        <mo lspace="2em" rspace="0em">X</mo>
    526      </mfenced>
    527      <mn>X</mn>
    528    </math>
    529  </p>
    530  <p>
    531    <math>
    532      <mn>X</mn>
    533      <mfenced id="mfenced-nonop-1" class="testedElement">
    534        <mo lspace="2em" rspace="0em">X</mo>
    535        <mn>X</mn> <!-- "mn" is not space-like -->
    536      </mfenced>
    537      <mn>X</mn>
    538    </math>
    539  </p>
    540  <p>
    541    <math>
    542      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    543      <mn>X</mn>
    544      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    545      <mfenced id="mfenced-op-2" class="testedElement">
    546        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    547        <mo lspace="2em" rspace="0em">X</mo>
    548        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    549      </mfenced>
    550      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    551      <mn>X</mn>
    552      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    553    </math>
    554  </p>
    555  <p>
    556    <math>
    557      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    558      <mn>X</mn>
    559      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    560      <mfenced id="mfenced-nonop-2" class="testedElement">
    561        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    562        <mo lspace="2em" rspace="0em">X</mo>
    563        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    564        <mn>X</mn> <!-- "mn" is not space-like -->
    565        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    566      </mfenced>
    567      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    568      <mn>X</mn>
    569      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    570    </math>
    571  </p>
    572  <!-- a is unknown to MathML Core so it is considered a grouping element. -->
    573  <p>
    574    <math>
    575      <mn>X</mn>
    576      <a id="a-op-1" class="testedElement">
    577        <mo lspace="2em" rspace="0em">X</mo>
    578      </a>
    579      <mn>X</mn>
    580    </math>
    581  </p>
    582  <p>
    583    <math>
    584      <mn>X</mn>
    585      <a id="a-nonop-1" class="testedElement">
    586        <mo lspace="2em" rspace="0em">X</mo>
    587        <mn>X</mn> <!-- "mn" is not space-like -->
    588      </a>
    589      <mn>X</mn>
    590    </math>
    591  </p>
    592  <p>
    593    <math>
    594      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    595      <mn>X</mn>
    596      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    597      <a id="a-op-2" class="testedElement">
    598        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    599        <mo lspace="2em" rspace="0em">X</mo>
    600        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    601      </a>
    602      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    603      <mn>X</mn>
    604      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    605    </math>
    606  </p>
    607  <p>
    608    <math>
    609      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    610      <mn>X</mn>
    611      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    612      <a id="a-nonop-2" class="testedElement">
    613        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    614        <mo lspace="2em" rspace="0em">X</mo>
    615        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    616        <mn>X</mn> <!-- "mn" is not space-like -->
    617        <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    618      </a>
    619      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    620      <mn>X</mn>
    621      <mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
    622    </math>
    623  </p>
    624 </body>
    625 </html>