<!DOCTYPE html>
<html>
  <head>
    <title>math-depth</title>
    <meta charset="utf-8">
    <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#the-math-script-level-property">
    <meta name="assert" content="Check the computed value of math-depth">
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <script>
      function mathDepth(id) {
          return window.getComputedStyle(document.getElementById(id)).
              getPropertyValue("math-depth");
      }
      setup({ explicit_done: true });
      window.addEventListener("load", function() {
          test(function() {
              assert_equals(mathDepth("initial"), "0");
              assert_equals(mathDepth("initialFrom11"), "0");
          }, "Initial value of math-depth");
          test(function() {
              assert_equals(mathDepth("inherited11"), "11");
              assert_equals(mathDepth("inherited-7"), "-7");
          }, "Inherited values of math-depth");
          test(function() {
              assert_equals(mathDepth("inherited9specifiedAutoInline"), "10");
              assert_equals(mathDepth("inherited9specifiedAutoDisplay"), "9");
          }, "Specified math-depth: auto-add");
          test(function() {
              assert_equals(mathDepth("specified11"), "11");
              assert_equals(mathDepth("specified-7"), "-7");
          }, "Specified math-depth: <integer>");
          test(function() {
              assert_equals(mathDepth("specifiedAdd10From5"), "15");
              assert_equals(mathDepth("specifiedAdd-15From5"), "-10");
          }, "Specified math-depth: add(<integer>)");
          test(function() {
              assert_equals(mathDepth("invalidKeywordFrom3"), "3");
              assert_equals(mathDepth("invalidFloatFrom3"), "3");
              assert_equals(mathDepth("invalidCalcFrom3"), "3");
              assert_equals(mathDepth("invalidAddCalcFrom3"), "3");
              assert_equals(mathDepth("invalidAddFloatFrom3"), "3");
          }, "Specified math-depth: invalid expressions");
          test(function() {
              const cssVariable = 3;
              assert_equals(mathDepth("specifiedCalcFrom9"), `${Math.round(cssVariable/2)+10}`);
              assert_equals(mathDepth("specifiedAddCalcFrom9"), `${9+(3*4-5)}`);
          }, "Specified math-depth: calc() expressions");
          done();
      });
    </script>
  </head>
  <body>
    <div id="log"></div>
    <div id="initial"></div>
    <div id="specified11" style="math-depth: 11">
      <div id="initialFrom11" style="math-depth: initial"></div>
      <div id="inherited11"></div>
    </div>
    <div id="specified-7" style="math-depth: -7">
      <div id="inherited-7"></div>
    </div>
    <div style="math-depth: 9">
      <div style="math-style: compact">
        <div id="inherited9specifiedAutoInline" style="math-depth: auto-add" ></div>
      </div>
      <div style="math-style: normal">
        <div id="inherited9specifiedAutoDisplay" style="math-depth: auto-add" ></div>
      </div>
    </div>
    <div style="math-depth: 5">
      <div id="specifiedAdd10From5" style="math-depth: add(10)"></div>
      <div id="specifiedAdd-15From5" style="math-depth: add(-15)"></div>
    </div>
    <div style="math-depth: 3;">
      <div id="invalidKeywordFrom3" style="math-depth: auto"></div>
      <div id="invalidFloatFrom3" style="math-depth: 3.14"></div>
      <div id="invalidCalcFrom3" style="math-depth: 1,2"></div>
      <div id="invalidAddCalcFrom3" style="math-depth: add(3,4)"></div>
      <div id="invalidAddFloatFrom3" style="math-depth: add(3.14)"></div>
    </div>
    <div style="math-depth: 9;">
      <div id="specifiedCalcFrom9" style="--css-variable: 3; math-depth: calc(var(--css-variable)/2 + 10)"></div>
      <div id="specifiedAddCalcFrom9" style="math-depth: add(calc(3*4 - 5))"></div>
    </div>
  </body>
</html>
