<!DOCTYPE html>
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
<title>Search Predicate Immediate Descendants Only</title>
</head>
<body>

<div id="container">
<h1>heading<img src="resources/cake.png" alt="Cake"></h1>
<p>text <a href="#">link</a></p>
<ul><li>item</li><li><ul><li>subitem</li></ul></li></ul>
</div>

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

<script>
    description("This tests that search predicate immediate descendant only results are accurate.");
    
    if (window.accessibilityController) {
        document.getElementById("container").focus();
        var containerElement = accessibilityController.focusedElement;
        
        // All descendants.
        var allDescendantsCount = containerElement.uiElementCountForSearchPredicate(null, true, "AXAnyTypeSearchKey", "", false, false);
        shouldBe("allDescendantsCount", "25");
        
        // Immeditate descendants.
        var immediateDescendantsCount = containerElement.uiElementCountForSearchPredicate(null, true, "AXAnyTypeSearchKey", "", false, true);
        shouldBe("immediateDescendantsCount", "6");
        
        // The number of immediate descendants should be equal to the number of children (when using "AXAnyTypeSearchKey").
        var childrenCount = containerElement.childrenCount;
        shouldBe("immediateDescendantsCount", "childrenCount");
        
        // Hide superfluous text.
        document.getElementById("container").style.display = "none";
    }
</script>

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