206 lines
7.0 KiB
HTML
206 lines
7.0 KiB
HTML
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
|
|
<script src="resources/table-utilities.js"></script>
|
|
<script>
|
|
function test()
|
|
{
|
|
InspectorTest.redirectRequestAnimationFrame();
|
|
|
|
let suite = InspectorTest.createSyncSuite("Table.RowSelection");
|
|
|
|
suite.addTestCase({
|
|
name: "Table.constructor",
|
|
test() {
|
|
let table = InspectorTest.createTable();
|
|
|
|
InspectorTest.expectThat(isNaN(table.selectedRow), "selectedRow should be NaN.");
|
|
InspectorTest.expectEqual(table.selectedRows.length, 0, "Should have no selected rows.");
|
|
InspectorTest.expectFalse(table.allowsMultipleSelection, "allowsMultipleSelection should initially be false.");
|
|
|
|
return true;
|
|
}
|
|
});
|
|
|
|
function triggerSelectRow(table, rowIndex, extendSelection) {
|
|
InspectorTest.log(`Selecting row ${rowIndex}.`);
|
|
table.selectRow(rowIndex, extendSelection);
|
|
InspectorTest.expectEqual(table.selectedRow, rowIndex, `selectedRow should be ${rowIndex}.`);
|
|
}
|
|
|
|
function triggerDeselectRow(table, rowIndex) {
|
|
InspectorTest.log(`Deselecting row ${rowIndex}.`);
|
|
table.deselectRow(rowIndex);
|
|
InspectorTest.expectFalse(table.selectedRows.includes(rowIndex), `selectedRows should not include ${rowIndex}.`);
|
|
}
|
|
|
|
suite.addTestCase({
|
|
name: "Table.SelectRow",
|
|
description: "Select a row, then select another row causing the first to become deselected.",
|
|
test() {
|
|
let table = InspectorTest.createTable();
|
|
|
|
triggerSelectRow(table, 0);
|
|
InspectorTest.expectShallowEqual(table.selectedRows, [0], "selectedRows should be [0].");
|
|
triggerSelectRow(table, 1);
|
|
InspectorTest.expectShallowEqual(table.selectedRows, [1], "selectedRows should be [1].");
|
|
|
|
return true;
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "Table.DeselectRow",
|
|
description: "Deselect the selected row.",
|
|
test() {
|
|
let table = InspectorTest.createTable();
|
|
|
|
triggerSelectRow(table, 0);
|
|
triggerDeselectRow(table, 0);
|
|
InspectorTest.expectEqual(table.selectedRows.length, 0, "Should have no selected rows.");
|
|
|
|
return true;
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "Table.AllowsMultipleSelection",
|
|
description: "Should be able to enable multiple selection.",
|
|
test() {
|
|
let table = InspectorTest.createTable();
|
|
|
|
table.allowsMultipleSelection = true;
|
|
InspectorTest.expectThat(table.allowsMultipleSelection, "allowsMultipleSelection enabled.");
|
|
table.allowsMultipleSelection = false;
|
|
InspectorTest.expectFalse(table.allowsMultipleSelection, "allowsMultipleSelection disabled.");
|
|
|
|
return true;
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "Table.SelectMultipleRows.ExtendSelection",
|
|
description: "Select multiple rows, extending the selection.",
|
|
test() {
|
|
let table = InspectorTest.createTable();
|
|
table.allowsMultipleSelection = true;
|
|
|
|
const extendSelection = true;
|
|
|
|
triggerSelectRow(table, 0, extendSelection);
|
|
triggerSelectRow(table, 1, extendSelection);
|
|
triggerSelectRow(table, 9, extendSelection);
|
|
InspectorTest.expectShallowEqual(table.selectedRows, [0, 1, 9], "selectedRows should be [0, 1, 9].");
|
|
|
|
return true;
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "Table.SelectMultipleRows.ExtendSelection.MultipleSelectionDisabled",
|
|
description: "Attempt to extend the selection when multiple selection is disabled.",
|
|
test() {
|
|
let table = InspectorTest.createTable();
|
|
table.allowsMultipleSelection = false;
|
|
|
|
const extendSelection = true;
|
|
|
|
triggerSelectRow(table, 0, extendSelection);
|
|
triggerSelectRow(table, 1, extendSelection);
|
|
InspectorTest.expectShallowEqual(table.selectedRows, [1], "selectedRows should be [1].");
|
|
|
|
return true;
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "Table.SelectMultipleRows.SelectTheSameRowTwice.ExtendSelection",
|
|
description: "Select an already selected row, and extend the selection.",
|
|
test() {
|
|
let table = InspectorTest.createTable();
|
|
table.allowsMultipleSelection = true;
|
|
|
|
const extendSelection = true;
|
|
|
|
triggerSelectRow(table, 0, extendSelection);
|
|
triggerSelectRow(table, 1, extendSelection);
|
|
triggerSelectRow(table, 1, extendSelection);
|
|
InspectorTest.expectShallowEqual(table.selectedRows, [0, 1], "selectedRows should be [0, 1].");
|
|
|
|
return true;
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "Table.SelectMultipleRows.SelectTheSameRowTwice.NoExtendSelection",
|
|
description: "Select an already selected row, and do not extend the selection.",
|
|
test() {
|
|
let table = InspectorTest.createTable();
|
|
table.allowsMultipleSelection = true;
|
|
|
|
const extendSelection = true;
|
|
|
|
triggerSelectRow(table, 0, extendSelection);
|
|
triggerSelectRow(table, 1, extendSelection);
|
|
triggerSelectRow(table, 1);
|
|
InspectorTest.expectShallowEqual(table.selectedRows, [1], "selectedRows should be [1].");
|
|
|
|
return true;
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "Table.SelectAndDeselectRow.NotCached",
|
|
description: "Select and deselect a row that is not in the table cache.",
|
|
test() {
|
|
let table = InspectorTest.createTable(1000);
|
|
|
|
triggerSelectRow(table, 999);
|
|
triggerDeselectRow(table, 999);
|
|
|
|
return true;
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "Table.SelectAll.MultipleSelectionDisabled",
|
|
description: "Select all table rows when multiple selection is disabled.",
|
|
test() {
|
|
let table = InspectorTest.createTable();
|
|
|
|
triggerSelectRow(table, 0);
|
|
InspectorTest.log("Select all.");
|
|
table.selectAll();
|
|
InspectorTest.expectEqual(table.selectedRows.length, 1, "Should not have selected additional rows.");
|
|
InspectorTest.expectThat(table.isRowSelected(0), "Row 0 should still be selected.");
|
|
|
|
return true;
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "Table.SelectAll.MultipleSelectionEnabled",
|
|
description: "Select all table rows when multiple selection is enabled.",
|
|
test() {
|
|
let table = InspectorTest.createTable();
|
|
table.allowsMultipleSelection = true;
|
|
|
|
triggerSelectRow(table, 0);
|
|
InspectorTest.log("Select all.");
|
|
table.selectAll();
|
|
InspectorTest.expectEqual(table.selectedRows.length, table.numberOfRows, "Should have selected all rows.");
|
|
|
|
return true;
|
|
}
|
|
});
|
|
|
|
suite.runTestCasesAndFinish();
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onLoad="runTest()">
|
|
<p>Tests for WI.Table selection.</p>
|
|
</body>
|
|
</html>
|