<!DOCTYPE html>
<html class="reftest-wait">
  <head>
    <meta charset="utf-8"/>
    <title>&lt;mo&gt; dynamic form</title>
    <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#operator-fence-separator-or-accent-mo">
     <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#dom-and-javascript">
    <meta name="assert" content="This test verifies that the form of the operators (and thus their spacing) is updated when you change the child list.">
    <link rel="match" href="mo-form-dynamic-ref.html">

    <script>
      window.addEventListener("load", () => {

        // force initial layout so we're sure what we're testing against
        document.documentElement.getBoundingClientRect();

        for (var i = 1; i <= 6; i++) {
          var row = document.getElementById("row" + i);
          var x = document.getElementById("x" + i);

          x.parentNode.removeChild(x);

          row.insertBefore(x, row.firstElementChild);
        }

        document.documentElement.classList.remove('reftest-wait');
      })
    </script>
  </head>
  <body>

    <p>The test should render the same as the static reference.</p>

    _<math><merror id="row1"><mo>+</mo><mi>y</mi></merror></math>_
    _<math id="row2"><mo>+</mo><mi>y</mi></math>_
    _<math><mphantom id="row3"><mo>+</mo><mi>y</mi></mphantom></math>_
    _<math><mrow id="row4"><mo>+</mo><mi>y</mi></mrow></math>_
    _<math><msqrt id="row5"><mo>+</mo><mi>y</mi></msqrt></math>_
    _<math><mstyle id="row6"><mo>+</mo><mi>y</mi></mstyle></math>_

    _<math><merror><mi id="x1">x</mi><mo>−</mo><mi>y</mi></merror></math>_
    _<math><mi id="x2">x</mi><mo>−</mo><mi>y</mi></math>_
    _<math><mphantom><mi id="x3">x</mi><mo>−</mo><mi>y</mi></mphantom></math>_
    _<math><mrow><mi id="x4">x</mi><mo>−</mo><mi>y</mi></mrow></math>_
    _<math><msqrt><mi id="x5">x</mi><mo>−</mo><mi>y</mi></msqrt></math>_
    _<math><mstyle><mi id="x6">x</mi><mo>−</mo><mi>y</mi></mstyle></math>_

    <script src="/mathml/support/feature-detection.js"></script>
    <script>MathMLFeatureDetection.ensure_for_match_reftest("has_operator_spacing");</script>
  </body>
</html>
