<html>
  <head>
    <title>inferred mrows</title>
    <meta charset="utf-8">
    <script src="../../resources/testharness.js"></script>
    <script src="../../resources/testharnessreport.js"></script>
    <script type="text/javascript">
      setup({ "explicit_done": true });
      function run()
      {
        var tags = ["Mrow", "Sqrt", "Style", "Error", "Phantom", "Math", "Menclose", "Mpadded"];
        for (var i in tags) {
          var tag = tags[i];
          var mo = document.getElementById("mo" + tag);
          test(function() {
            assert_greater_than_equal(mo.getBoundingClientRect().height, 60);
          }, "operator stretching inside " + tag);
        }
        done();
      }
    </script>
  </head>
  <body onload="run()">

    <p>This test passes if all the vertical bars stretch.</p>

    <p>
      <math><mrow><mo id="moMrow">|</mo><mspace width="1px" height="30px" depth="30px" mathbackground="red"></mspace></mrow></math>
      <math><msqrt><mo id="moSqrt">|</mo><mspace width="1px" height="30px" depth="30px" mathbackground="red"></mspace></msqrt></math>
      <math><mstyle><mo id="moStyle">|</mo><mspace width="1px" height="30px" depth="30px" mathbackground="red"></mspace></mstyle></math>
      <math><merror><mo id="moError">|</mo><mspace width="1px" height="30px" depth="30px" mathbackground="red"></mspace></merror></math>
      <math><mphantom><mo style="visibilty: visible;" id="moPhantom">|</mo><mspace width="1px" height="30px" depth="30px" mathbackground="red"></mspace></mphantom></math>
      <math><mo id="moMath">|</mo><mspace width="1px" height="30px" depth="30px" mathbackground="red"></mspace></math>
      <math><menclose notation="box"><mo id="moMenclose">|</mo><mspace width="1px" height="30px" depth="30px" mathbackground="red"></mspace></menclose></math>
      <math><mpadded notation="box"><mo id="moMpadded">|</mo><mspace width="1px" height="30px" depth="30px" mathbackground="red"></mspace></mpadded></math>
    </p>

  </body>
</html>
