| <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> |