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

<input type="text" id="textfield" value="some word"></input>
<input type="password" id="passwordfield" value="pwd"></input>

<script>
    description("Tests that attributedStringForRange works properly for native text and password fields, including for ranges out of bound.");

    if (window.accessibilityController) {
        let output = "";
        let textField = accessibilityController.accessibleElementById("textfield");
        // Entire text.
        output = `Attributed string for range (0, 9): ${textField.attributedStringForRange(0, 9)}\n`;
        // Text at the start.
        output += `Attributed string for range (0, 3): ${textField.attributedStringForRange(0, 3)}\n`;
        // Text at the end.
        output += `Attributed string for range (5, 4): ${textField.attributedStringForRange(5, 4)}\n`;
        // Range out of bounds.
        output += `Attributed string for range (5, 10): ${textField.attributedStringForRange(5, 10)}\n`;
        output += `Attributed string for range (10, 1): ${textField.attributedStringForRange(10, 1)}\n`;
        output += `Attributed string for range (-1, 1): ${textField.attributedStringForRange(-1, 1)}\n`;
        debug(output);

        let passwordField = accessibilityController.accessibleElementById("passwordfield");
        // Entire text.
        output = `Attributed string for range (0, 3): ${passwordField.attributedStringForRange(0, 3)}\n`;
        // Text at the start.
        output += `Attributed string for range (0, 2): ${passwordField.attributedStringForRange(0, 2)}\n`;
        // Text at the end.
        output += `Attributed string for range (1, 2): ${passwordField.attributedStringForRange(1, 2)}\n`;
        // Range out of bounds.
        output += `Attributed string for range (1, 10): ${passwordField.attributedStringForRange(1, 10)}\n`;
        output += `Attributed string for range (10, 1): ${passwordField.attributedStringForRange(10, 1)}\n`;
        output += `Attributed string for range (-1, 1): ${passwordField.attributedStringForRange(-1, 1)}\n`;
        debug(output);
    }
</script>
</body>
</html>
