<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
<script>
var successfullyParsed = false;
if (window.testRunner)
  testRunner.dumpAsText();
</script>
</head>
<body>

<div class="contents" id="group" tabindex="0">
      Raman scattering study of the  
      <span role="math" aria-label=" F e sub 1  minus x, end subscript. C o sub x, S b sub 2">
        <math alttext=" F e sub 1  minus x, end subscript. C o sub x, S b sub 2" aria-hidden="true">
          <mrow>
            <msub>
              <mrow>
                <mtext>Fe</mtext>
              </mrow>
              <mrow>
                <mn>1</mn>
                <mo>&#x2212;</mo>
                <mi>x</mi>
              </mrow>
            </msub>
            <msub>
              <mrow>
                <mtext>Co</mtext>
              </mrow>
              <mi>x</mi>
            </msub>
            <msub>
              <mrow>
                <mtext>Sb</mtext>
              </mrow>
              <mn>2</mn>
            </msub>
          </mrow>
        </math>
      </span>
      and 
      <span role="math" aria-label="  open, 0  less than or equal to x  less than or equal to 1,  close">
        <math role="presentation" alttext="  open, 0  less than or equal to x  less than or equal to 1,  close" aria-hidden="true">
          <mrow>
            <mrow>
              <mo>(</mo>
              <mrow>
                <mn>0</mn>
                <mo>&#x2264;</mo>
                <mi>x</mi>
                <mo>&#x2264;</mo>
                <mn>1</mn>
              </mrow>
              <mo>)</mo>
            </mrow>
          </mrow>
        </math>
      </span>
      single crystals.
    </div>
  

<p id="description"></p>
<div id="console"></div>

<script>

   description("This test the math role type will be an accessibility element.");

   if (window.accessibilityController) {

       document.getElementById("group").focus();
       var group = accessibilityController.focusedElement;
       shouldBe("group.childrenCount", "5");
       shouldBe("group.childAtIndex(0).description", "'AXLabel: Raman scattering study of the'");
       shouldBe("group.childAtIndex(1).description", "'AXLabel:  F e sub 1  minus x, end subscript. C o sub x, S b sub 2, math'");
       shouldBe("group.childAtIndex(2).description", "'AXLabel: and'");
       shouldBe("group.childAtIndex(3).description", "'AXLabel:   open, 0  less than or equal to x  less than or equal to 1,  close, math'");
       shouldBe("group.childAtIndex(4).description", "'AXLabel: single crystals.'");

       shouldBeFalse("group.childAtIndex(0).isIgnored");
       shouldBeFalse("group.childAtIndex(1).isIgnored");
       shouldBeFalse("group.childAtIndex(2).isIgnored");
       shouldBeFalse("group.childAtIndex(3).isIgnored");
       shouldBeFalse("group.childAtIndex(4).isIgnored");
   }

   successfullyParsed = true;
</script>

<script src="../../resources/js-test-post.js"></script>

</body>
</html>
