blob: 6193bea2e55bf444ebebec6067b4e016ca42fe03 [file] [log] [blame]
<html>
<head>
<script src="../http/tests/inspector/inspector-test.js"></script>
<script>
function test()
{
WebInspector.showPanel("scripts");
var overridenInput = [];
var overridenQuery = "";
var delegate = {
itemTitleAt: function(itemIndex) { },
itemSuffixAt: function(itemIndex) { },
itemSubtitleAt: function(itemIndex) { },
itemKeyAt: function(itemIndex) { return overridenInput[itemIndex]; },
itemsCount: function() { return overridenInput.length; },
requestItems: function(callback) { callback(); },
selectItem: function(itemIndex, promptValue) { },
rewriteQuery: function(query) { return overridenQuery; },
};
function checkQuery(title, query, input)
{
overridenInput = input;
overridenQuery = query;
InspectorTest.addResult("\n" + title);
InspectorTest.addResult("Query:" + JSON.stringify(query));
InspectorTest.addResult("Input:" + JSON.stringify(input));
var filteredSelectionDialog = new WebInspector.FilteredItemSelectionDialog(delegate);
filteredSelectionDialog._updateAfterItemsLoaded();
var items = filteredSelectionDialog._filteredItems;
var output = [];
for (var i = 0; i < items.length; ++i)
output.push(delegate.itemKeyAt(items[i]));
InspectorTest.addResult("Output:" + JSON.stringify(output));
}
checkQuery("Empty query matches everything", "", ["a", "bc"]);
checkQuery("Case sensitive matching", "aB", ["abc", "acB"]);
checkQuery("Case insensitive matching", "ab", ["abc", "bac", "a_B"]);
checkQuery("Duplicate symbols in query", "aab", ["abab", "abaa", "caab", "baac", "fooaab"]);
checkQuery("Dangerous input escaping", "^[]{}()\\.$*+?|", ["^[]{}()\\.$*+?|", "0123456789abcdef"]);
checkQuery("Camel case matching", "fBaB", ["fooBarBaz", "FooBarBaz", "Foo_Bar_Baz", "foo_bar_baz", "foobarbaz", "foobarBaz", "afooBarBaz", "aFooBarBaz", "a fooBarBaz", "fooBorBaz", "fooBorCaz"]);
checkQuery("Underscore matching", "fO_ba_b", ["foOBarBaz", "FoOBarBaz", "FoO_Bar_Baz", "foO_bar_baz", "foObarbaz", "foObarBaz", "afoOBarBaz", "aFoOBarBaz", "a foOBarBaz", "foOBorBaz", "foOBorCaz"]);
checkQuery("Case insensitive matching", "fb", ["foo_bar", "FB", "foobar", "fBar"]);
checkQuery("Case insensitive underscore matching", "f_b", ["foo_bar", "FOO_BAR", "Foo_Bar", "fOo_bAr"]);
InspectorTest.completeTest();
}
</script>
</head>
<body onload="runTest()">
<p>
Check to see that FilteredItemSelectionDialog uses proper regex to filter results.
</p>
</body>
</html>