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

<table border=1>
<tr><th>Column</th></tr>
<tr><td><h1 tabindex="0" id="heading">heading</h1></td></tr>
</table>

<h1>outside heading</h1>

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

<script>
    description("This tests that when we start searching from an element within a table, we do not get as a result, the same element.");
    
    if (window.accessibilityController) {
        document.getElementById("body").focus();
        var containerElement = accessibilityController.focusedElement;

        document.getElementById("heading").focus();
        var heading = accessibilityController.focusedElement;

        // The next heading should be outside the table
        resultElement = containerElement.uiElementForSearchPredicate(heading, true, "AXHeadingSearchKey", "", false);
        shouldBe("resultElement.role", "'AXRole: AXHeading'");
        shouldBe("resultElement.title", "'AXTitle: outside heading'");        

        // A search for the previous heading should return nothing.
        resultElement = containerElement.uiElementForSearchPredicate(heading, false, "AXHeadingSearchKey", "", false);
        shouldBeUndefined("resultElement");

        // When asking the child of the heading for the previous element, it should return the heading.
        resultElement = containerElement.uiElementForSearchPredicate(heading.childAtIndex(0), false, "AXAnyTypeSearchKey", "", false);
        shouldBe("resultElement.role", "'AXRole: AXHeading'");

        // When asking the heading for the previous element, it should return the cell.
        resultElement = containerElement.uiElementForSearchPredicate(resultElement, false, "AXAnyTypeSearchKey", "", false);
        shouldBe("resultElement.role", "'AXRole: AXCell'");

        // When asking the cell for the previous element, it should return the row.
        resultElement = containerElement.uiElementForSearchPredicate(resultElement, false, "AXAnyTypeSearchKey", "", false);
        shouldBe("resultElement.role", "'AXRole: AXRow'");

        // Now when trying to find the previous static text, it should go into the table's children to find the text in the first cell.
        resultElement = containerElement.uiElementForSearchPredicate(resultElement, false, "AXStaticTextSearchKey", "", false);
        shouldBe("resultElement.role", "'AXRole: AXStaticText'");
        shouldBe("resultElement.stringValue", "'AXValue: Column'");

        // When asking the text for the previous element it should return the first cell of the table.
        resultElement = containerElement.uiElementForSearchPredicate(resultElement, false, "AXAnyTypeSearchKey", "", false);
        shouldBe("resultElement.role", "'AXRole: AXCell'");
        shouldBe("resultElement.rowIndexRange()", "'{0, 1}'");
        shouldBe("resultElement.columnIndexRange()", "'{0, 1}'");
        
    }
    
</script>

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