blob: 652a1f8039e63de5cccbe4fd1e4ff751a6ddcce9 [file] [log] [blame]
(async function() {
await TestRunner.loadModule('quick_open');
TestRunner.addResult(
'Test that FilteredListWidget.setProvider changes the provider.');
var StubProvider = class extends QuickOpen.FilteredListWidget.Provider {
constructor(input) {
super();
this._input = input
}
itemKeyAt(itemIndex) { return this._input[itemIndex]; }
itemScoreAt(itemIndex) { return 0; }
itemCount() { return this._input.length; }
shouldShowMatchingItems() { return true; }
renderItem(item, query, titleElement, subtitleElement) {
titleElement.textContent = this._input[item];
}
};
var filteredListWidget = new QuickOpen.FilteredListWidget(null, []);
filteredListWidget.showAsDialog();
TestRunner.runTests([
function providerWithOneItem() {
return setProvider(new StubProvider(['One Item']));
},
function nullProvider() {
return setProvider(null);
},
function providerWithTwoItems() {
return setProvider(new StubProvider(['First Item', 'Second item']));
},
function providerWithNoItems() {
return setProvider(new StubProvider([]));
}
]);
function setProvider(provider) {
var promise = TestRunner.addSnifferPromise(filteredListWidget, "_itemsFilteredForTest").then(dump);
filteredListWidget.setProvider(provider);
return promise;
}
function dump() {
if (filteredListWidget._bottomElementsContainer.classList.contains('hidden')) {
TestRunner.addResult('Output: <hidden>');
return;
}
if (filteredListWidget._list.element.classList.contains('hidden')) {
TestRunner.addResult('Output: ' + filteredListWidget._notFoundElement.textContent);
return;
}
var output = [];
for (var item of filteredListWidget._items)
output.push(filteredListWidget._provider.itemKeyAt(item));
TestRunner.addResult('Output:' + JSON.stringify(output));
}
})();