description('Various tests for the figure element.'); function getStyleValue(id, propertyName) { return document.defaultView.getComputedStyle(document.getElementById(id), null).getPropertyValue(propertyName); } var testParent = document.createElement('div'); document.body.appendChild(testParent); debug('<figure> default styling:'); testParent.innerHTML = '
element
'; var emSize = getStyleValue("figure0","font-size"); shouldBe('getStyleValue("figure0","display")', '"block"'); shouldBe('getStyleValue("figure0","margin-top")', 'emSize'); shouldBe('getStyleValue("figure0","margin-right")', '"40px"'); shouldBe('getStyleValue("figure0","margin-bottom")', 'emSize'); shouldBe('getStyleValue("figure0","margin-left")', '"40px"'); debug('<figure> closes <p>:'); testParent.innerHTML = '

Test that

a figure element
closes <p>.

'; var figure1 = document.getElementById('figure1'); shouldBeFalse('figure1.parentNode.nodeName == "p"'); debug('<p> does not close <figure>:'); testParent.innerHTML = '
Test that

a p element

does not close a figure element.
'; var p1 = document.getElementById('p1'); shouldBe('p1.parentNode.nodeName', '"FIGURE"'); debug('<figure> can be nested inside <figure> or <footer>:'); testParent.innerHTML = '
Test that
a figure element
can be nested inside another figure element.
'; var figure3 = document.getElementById('figure3'); shouldBe('figure3.parentNode.id', '"figure2"'); testParent.innerHTML = ''; var figure5 = document.getElementById('figure5'); shouldBe('figure5.parentNode.id', '"footer1"'); debug('Residual style:'); testParent.innerHTML = '
This text should be bold.
This is also bold.
'; shouldBe('getStyleValue("figure4","font-weight")', '"bold"'); shouldBe('getStyleValue("span1","font-weight")', '"bold"'); document.body.removeChild(testParent);