<!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>

<table border=1 role="presentation">
<tr role="presentation"><td role="presentation">table item 1</td></tr>
</table>

</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);
        var nonTableItem = root.childAtIndex(4);

        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");

        shouldBe("nonTableItem.traits != tableItem.traits", "true");
    }

    successfullyParsed = true;
</script>

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

