<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
<script>
var successfullyParsed = false;
</script>
</head>
<body id="body">

<div id="content" role="group">

item 1

<ol>
<li>list item 1</li>
</ol>

<table border=1>
<tr><td>table item 1</td>
<td>table item 2</td>
<td>table item 3</td></tr>
</table>

<div role="main">
<b>landmark 1</b>
</div>

</div>

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

<script>

    description("This test makes sure that items in lists, tables and landmarks have different traits on them, because they're contained in different items.");

    if (window.accessibilityController) {

        var root = accessibilityController.accessibleElementById("content");
       
        var initialItem = root.childAtIndex(0).childAtIndex(0);
        var listItem = root.childAtIndex(1).childAtIndex(0).childAtIndex(0);
        var tableItem = root.childAtIndex(2).childAtIndex(0);
        var landmarkItem = root.childAtIndex(3).childAtIndex(0);

        shouldBe("listItem.traits != initialItem.traits", "true");
        shouldBe("listItem.traits != tableItem.traits", "true");
        shouldBe("listItem.traits != landmarkItem.traits", "true");

        shouldBe("tableItem.traits != initialItem.traits", "true");
        shouldBe("tableItem.traits != landmarkItem.traits", "true");

        shouldBe("landmarkItem.traits != initialItem.traits", "true");
    }

    successfullyParsed = true;
</script>

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

