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

<div>
<p id="p1">Test sentence one. Test sentence two</p>
</div>
<div>
<p id="p2">Where</p>
</div>

<script>

    description("This tests that previous sentence\/word\/paragraph text marker calls work with p tag elements");

    if (window.accessibilityController) {

        // select text
        selectTextInNode('p2');
        var p2 = accessibilityController.accessibleElementById("p2");
        var selectedRange = p2.selectedTextMarkerRange();
        var selectedString = p2.stringForTextMarkerRange(selectedRange);
        shouldBe("selectedString", "'Where'");

        var startTextMarker = p2.startTextMarkerForTextMarkerRange(selectedRange);
        var preSentenceStart = p2.previousSentenceStartTextMarkerForTextMarker(startTextMarker);
        var sentenceRange = p2.textMarkerRangeForMarkers(preSentenceStart, startTextMarker);
        var sentenceString = p2.stringForTextMarkerRange(sentenceRange);
        debug("Previous sentence: " + sentenceString);

        var preWordStart = p2.previousWordStartTextMarkerForTextMarker(startTextMarker);
        var wordRange = p2.textMarkerRangeForMarkers(preWordStart, startTextMarker);
        var wordString = p2.stringForTextMarkerRange(wordRange);
        debug("Previous word: " + wordString);

        var preParagraphStart = p2.previousParagraphStartTextMarkerForTextMarker(startTextMarker);
        var paragraphRange = p2.textMarkerRangeForMarkers(preParagraphStart, startTextMarker);
        var paragraphString = p2.stringForTextMarkerRange(paragraphRange);
        debug("Previous paragraph: " + paragraphString);
    }
</script>

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