<!DOCTYPE html>
<html>
<head>
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
<script>
function test()
{
    let suite = InspectorTest.createSyncSuite("TextUtilities");

    suite.addTestCase({
        name: "WI.rangeForNextCSSNameOrValue",
        test() {
            function testValid(text, index, expected) {
                let actual = WI.rangeForNextCSSNameOrValue(text, index);
                InspectorTest.expectShallowEqual(actual, expected, `Next name/value token in "${text}" starting at index ${index} is "${text.substring(actual.from, actual.to)}" [${actual.from}, ${actual.to}]`);
            }

            // Test empty string and out-of-bounds index
            testValid("", 0, {from: 0, to: 0});
            testValid("", 2, {from: 0, to: 0});

            // Test basic string
            testValid("foo", 0, {from: 0, to: 3});
            testValid("foo", 2, {from: 0, to: 3});

            // Test string with single colon
            testValid("foo:bar", 0, {from: 0, to: 3});
            testValid("foo:bar", 2, {from: 0, to: 3});
            testValid("foo:bar", 3, {from: 4, to: 7});
            testValid("foo:bar", 5, {from: 4, to: 7});

            // Test string with extra whitespace
            testValid("foo:  bar  ;", 0, {from: 0, to: 3});
            testValid("foo:  bar  ;", 2, {from: 0, to: 3});
            testValid("foo:  bar  ;", 3, {from: 6, to: 9});
            testValid("foo:  bar  ;", 5, {from: 6, to: 9});

            // Test string with multiple colons
            testValid("foo: url(http://baz);", 0, {from: 0, to: 3});
            testValid("foo: url(http://baz);", 2, {from: 0, to: 3});
            testValid("foo: url(http://baz);", 3, {from: 5, to: 20});
            testValid("foo: url(http://baz);", 5, {from: 5, to: 20});

            return true;
        }
    });

    suite.runTestCasesAndFinish();
}
</script>
</head>
<body onLoad="runTest()">
    <p>Testing basic functionality of functions defined in TextUtilities.js.</p>
</body>
</html>
