public void ItemSelections() { var accessor = _fileStatusList.GetTestAccessor(); GitItemStatus itemNotInList = new(name : "not in list"); GitItemStatus item0 = new(name : "z.0"); GitItemStatus item1 = new(name : "x.1"); GitItemStatus item2 = new(name : "y.2"); List <GitItemStatus> items = new() { item0, item1, item2 }; // alphabetical order var itemAt0 = item1; var itemAt1 = item2; var itemAt2 = item0; GitRevision firstRev = new(ObjectId.Random()); GitRevision secondRev = new(ObjectId.Random()); _fileStatusList.SetDiffs(firstRev: firstRev, secondRev: secondRev, items: items); accessor.FileStatusListView.FocusedItem.Index.Should().Be(0); _fileStatusList.SelectedIndex.Should().Be(0); _fileStatusList.SelectedGitItem.Should().BeSameAs(itemAt0); _fileStatusList.SelectedItems.Items().Should().BeEquivalentTo(new List <GitItemStatus> { itemAt0 }); _fileStatusList.SelectedGitItem.Should().BeSameAs(_fileStatusList.SelectedItem.Item); _fileStatusList.SelectedItems.Items().Should().BeEquivalentTo(_fileStatusList.SelectedItems.Items()); // SelectedIndex _fileStatusList.SelectedIndex = 1; accessor.FileStatusListView.FocusedItem.Index.Should().Be(1); _fileStatusList.SelectedIndex.Should().Be(1); _fileStatusList.SelectedGitItem.Should().BeSameAs(itemAt1); _fileStatusList.SelectedItems.Items().Should().BeEquivalentTo(new List <GitItemStatus> { itemAt1 }); _fileStatusList.SelectedIndex = -1; accessor.FileStatusListView.FocusedItem.Index.Should().Be(1); // unchanged _fileStatusList.SelectedIndex.Should().Be(-1); _fileStatusList.SelectedGitItem.Should().BeNull(); _fileStatusList.SelectedItems.Items().Should().BeEmpty(); _fileStatusList.SelectedIndex = 2; _fileStatusList.SelectedIndex = 42; // clears the selection accessor.FileStatusListView.FocusedItem.Index.Should().Be(2); // unchanged _fileStatusList.SelectedIndex.Should().Be(-1); _fileStatusList.SelectedGitItem.Should().BeNull(); _fileStatusList.SelectedItems.Items().Should().BeEmpty(); _fileStatusList.SelectedIndex = 1; accessor.FileStatusListView.FocusedItem.Index.Should().Be(1); _fileStatusList.SelectedIndex.Should().Be(1); _fileStatusList.SelectedGitItem.Should().BeSameAs(itemAt1); _fileStatusList.SelectedItems.Items().Should().BeEquivalentTo(new List <GitItemStatus> { itemAt1 }); // SelectedGitItem _fileStatusList.SelectedGitItem = itemAt1; accessor.FileStatusListView.FocusedItem.Index.Should().Be(1); _fileStatusList.SelectedIndex.Should().Be(1); _fileStatusList.SelectedGitItem.Should().BeSameAs(itemAt1); _fileStatusList.SelectedItems.Items().Should().BeEquivalentTo(new List <GitItemStatus> { itemAt1 }); _fileStatusList.SelectedGitItem = null; accessor.FileStatusListView.FocusedItem.Index.Should().Be(1); // unchanged _fileStatusList.SelectedIndex.Should().Be(-1); _fileStatusList.SelectedGitItem.Should().BeNull(); _fileStatusList.SelectedItems.Items().Should().BeEmpty(); _fileStatusList.SelectedGitItem = itemAt2; _fileStatusList.SelectedGitItem = itemNotInList; // clears the selection accessor.FileStatusListView.FocusedItem.Index.Should().Be(2); // unchanged _fileStatusList.SelectedIndex.Should().Be(-1); _fileStatusList.SelectedGitItem.Should().BeNull(); _fileStatusList.SelectedItems.Items().Should().BeEmpty(); _fileStatusList.SelectedGitItem = itemAt1; accessor.FileStatusListView.FocusedItem.Index.Should().Be(1); _fileStatusList.SelectedIndex.Should().Be(1); _fileStatusList.SelectedGitItem.Should().BeSameAs(itemAt1); _fileStatusList.SelectedItems.Items().Should().BeEquivalentTo(new List <GitItemStatus> { itemAt1 }); // SelectedItems.Items() (up to one item) _fileStatusList.SelectedGitItems = new List <GitItemStatus> { itemAt1 }; accessor.FileStatusListView.FocusedItem.Index.Should().Be(1); _fileStatusList.SelectedIndex.Should().Be(1); _fileStatusList.SelectedGitItem.Should().BeSameAs(itemAt1); _fileStatusList.SelectedItems.Items().Should().BeEquivalentTo(new List <GitItemStatus> { itemAt1 }); _fileStatusList.SelectedItems = null; accessor.FileStatusListView.FocusedItem.Index.Should().Be(1); // unchanged _fileStatusList.SelectedIndex.Should().Be(-1); _fileStatusList.SelectedGitItem.Should().BeNull(); _fileStatusList.SelectedItems.Items().Should().BeEmpty(); _fileStatusList.SelectedGitItems = new List <GitItemStatus> { }; accessor.FileStatusListView.FocusedItem.Index.Should().Be(1); // unchanged _fileStatusList.SelectedIndex.Should().Be(-1); _fileStatusList.SelectedGitItem.Should().BeNull(); _fileStatusList.SelectedItems.Items().Should().BeEmpty(); _fileStatusList.SelectedGitItems = new List <GitItemStatus> { itemAt2 }; _fileStatusList.SelectedGitItems = new List <GitItemStatus> { itemNotInList }; // clears the selection accessor.FileStatusListView.FocusedItem.Index.Should().Be(2); // unchanged _fileStatusList.SelectedIndex.Should().Be(-1); _fileStatusList.SelectedGitItem.Should().BeNull(); _fileStatusList.SelectedItems.Items().Should().BeEmpty(); _fileStatusList.SelectedGitItems = new List <GitItemStatus> { itemAt1 }; accessor.FileStatusListView.FocusedItem.Index.Should().Be(1); _fileStatusList.SelectedIndex.Should().Be(1); _fileStatusList.SelectedGitItem.Should().BeSameAs(itemAt1); _fileStatusList.SelectedItems.Items().Should().BeEquivalentTo(new List <GitItemStatus> { itemAt1 }); // SelectedItems.Items() (multiple items) _fileStatusList.SelectedIndex = 2; _fileStatusList.SelectedGitItems = new List <GitItemStatus> { itemAt2, itemAt0, itemNotInList }; accessor.FileStatusListView.FocusedItem.Index.Should().Be(0); _fileStatusList.SelectedIndex.Should().Be(0); _fileStatusList.SelectedGitItem.Should().BeSameAs(itemAt0); // focused item _fileStatusList.SelectedItems.Items().Should().BeEquivalentTo(new List <GitItemStatus> { itemAt0, itemAt2 }); accessor.FileStatusListView.Items[1].Focused = true; accessor.FileStatusListView.FocusedItem.Index.Should().Be(1); _fileStatusList.SelectedIndex.Should().Be(0); _fileStatusList.SelectedGitItem.Should().BeSameAs(itemAt2); // LastSelectedItem _fileStatusList.SelectedItems.Items().Should().BeEquivalentTo(new List <GitItemStatus> { itemAt0, itemAt2 }); _fileStatusList.SelectedIndex = 2; _fileStatusList.SelectedGitItems = new List <GitItemStatus> { itemAt2, itemAt1, itemNotInList }; accessor.FileStatusListView.FocusedItem.Index.Should().Be(1); _fileStatusList.SelectedIndex.Should().Be(1); _fileStatusList.SelectedGitItem.Should().BeSameAs(itemAt1); // focused item _fileStatusList.SelectedItems.Items().Should().BeEquivalentTo(new List <GitItemStatus> { itemAt1, itemAt2 }); accessor.FileStatusListView.Items[0].Focused = true; accessor.FileStatusListView.FocusedItem.Index.Should().Be(0); _fileStatusList.SelectedIndex.Should().Be(1); _fileStatusList.SelectedGitItem.Should().BeSameAs(itemAt2); // LastSelectedItem _fileStatusList.SelectedItems.Items().Should().BeEquivalentTo(new List <GitItemStatus> { itemAt1, itemAt2 }); // SelectAll _fileStatusList.SelectedIndex = 2; _fileStatusList.SelectAll(); foreach (var item in accessor.FileStatusListView.Items()) { item.Selected.Should().BeTrue(); } accessor.FileStatusListView.FocusedItem.Index.Should().Be(0); _fileStatusList.SelectedIndex.Should().Be(0); _fileStatusList.SelectedGitItem.Should().BeSameAs(itemAt0); // focused item _fileStatusList.SelectedItems.Items().Should().BeEquivalentTo(new List <GitItemStatus> { itemAt0, itemAt1, itemAt2 }); // SelectFirstVisibleItem _fileStatusList.SelectedIndex = 2; _fileStatusList.SelectFirstVisibleItem(); accessor.FileStatusListView.FocusedItem.Index.Should().Be(0); _fileStatusList.SelectedIndex.Should().Be(0); _fileStatusList.SelectedGitItem.Should().BeSameAs(itemAt0); // focused item _fileStatusList.SelectedItems.Items().Should().BeEquivalentTo(new List <GitItemStatus> { itemAt0 }); }
public void ItemSelections() { var accessor = _fileStatusList.GetTestAccessor(); var itemNotInList = new GitItemStatus { Name = "not in list" }; var item0 = new GitItemStatus { Name = "z.0" }; var item1 = new GitItemStatus { Name = "x.1" }; var item2 = new GitItemStatus { Name = "y.2" }; var items = new List <GitItemStatus> { item0, item1, item2 }; // alphabetical order var itemAt0 = item1; var itemAt1 = item2; var itemAt2 = item0; _fileStatusList.SetDiffs(selectedRev: null, parentRev: null, items: items); accessor.FileStatusListView.FocusedItem.Index.Should().Be(0); _fileStatusList.SelectedIndex.Should().Be(0); _fileStatusList.SelectedItem.Should().BeSameAs(itemAt0); _fileStatusList.SelectedItems.Should().BeEquivalentTo(new List <GitItemStatus> { itemAt0 }); // SelectedIndex _fileStatusList.SelectedIndex = 1; accessor.FileStatusListView.FocusedItem.Index.Should().Be(1); _fileStatusList.SelectedIndex.Should().Be(1); _fileStatusList.SelectedItem.Should().BeSameAs(itemAt1); _fileStatusList.SelectedItems.Should().BeEquivalentTo(new List <GitItemStatus> { itemAt1 }); _fileStatusList.SelectedIndex = -1; accessor.FileStatusListView.FocusedItem.Index.Should().Be(1); // unchanged _fileStatusList.SelectedIndex.Should().Be(-1); _fileStatusList.SelectedItem.Should().BeNull(); _fileStatusList.SelectedItems.Should().BeEmpty(); _fileStatusList.SelectedIndex = 2; _fileStatusList.SelectedIndex = 42; // clears the selection accessor.FileStatusListView.FocusedItem.Index.Should().Be(2); // unchanged _fileStatusList.SelectedIndex.Should().Be(-1); _fileStatusList.SelectedItem.Should().BeNull(); _fileStatusList.SelectedItems.Should().BeEmpty(); _fileStatusList.SelectedIndex = 1; accessor.FileStatusListView.FocusedItem.Index.Should().Be(1); _fileStatusList.SelectedIndex.Should().Be(1); _fileStatusList.SelectedItem.Should().BeSameAs(itemAt1); _fileStatusList.SelectedItems.Should().BeEquivalentTo(new List <GitItemStatus> { itemAt1 }); // SelectedItem _fileStatusList.SelectedItem = itemAt1; accessor.FileStatusListView.FocusedItem.Index.Should().Be(1); _fileStatusList.SelectedIndex.Should().Be(1); _fileStatusList.SelectedItem.Should().BeSameAs(itemAt1); _fileStatusList.SelectedItems.Should().BeEquivalentTo(new List <GitItemStatus> { itemAt1 }); _fileStatusList.SelectedItem = null; accessor.FileStatusListView.FocusedItem.Index.Should().Be(1); // unchanged _fileStatusList.SelectedIndex.Should().Be(-1); _fileStatusList.SelectedItem.Should().BeNull(); _fileStatusList.SelectedItems.Should().BeEmpty(); _fileStatusList.SelectedItem = itemAt2; _fileStatusList.SelectedItem = itemNotInList; // clears the selection accessor.FileStatusListView.FocusedItem.Index.Should().Be(2); // unchanged _fileStatusList.SelectedIndex.Should().Be(-1); _fileStatusList.SelectedItem.Should().BeNull(); _fileStatusList.SelectedItems.Should().BeEmpty(); _fileStatusList.SelectedItem = itemAt1; accessor.FileStatusListView.FocusedItem.Index.Should().Be(1); _fileStatusList.SelectedIndex.Should().Be(1); _fileStatusList.SelectedItem.Should().BeSameAs(itemAt1); _fileStatusList.SelectedItems.Should().BeEquivalentTo(new List <GitItemStatus> { itemAt1 }); // SelectedItems (up to one item) _fileStatusList.SelectedItems = new List <GitItemStatus> { itemAt1 }; accessor.FileStatusListView.FocusedItem.Index.Should().Be(1); _fileStatusList.SelectedIndex.Should().Be(1); _fileStatusList.SelectedItem.Should().BeSameAs(itemAt1); _fileStatusList.SelectedItems.Should().BeEquivalentTo(new List <GitItemStatus> { itemAt1 }); _fileStatusList.SelectedItems = null; accessor.FileStatusListView.FocusedItem.Index.Should().Be(1); // unchanged _fileStatusList.SelectedIndex.Should().Be(-1); _fileStatusList.SelectedItem.Should().BeNull(); _fileStatusList.SelectedItems.Should().BeEmpty(); _fileStatusList.SelectedItems = new List <GitItemStatus> { }; accessor.FileStatusListView.FocusedItem.Index.Should().Be(1); // unchanged _fileStatusList.SelectedIndex.Should().Be(-1); _fileStatusList.SelectedItem.Should().BeNull(); _fileStatusList.SelectedItems.Should().BeEmpty(); _fileStatusList.SelectedItems = new List <GitItemStatus> { itemAt2 }; _fileStatusList.SelectedItems = new List <GitItemStatus> { itemNotInList }; // clears the selection accessor.FileStatusListView.FocusedItem.Index.Should().Be(2); // unchanged _fileStatusList.SelectedIndex.Should().Be(-1); _fileStatusList.SelectedItem.Should().BeNull(); _fileStatusList.SelectedItems.Should().BeEmpty(); _fileStatusList.SelectedItems = new List <GitItemStatus> { itemAt1 }; accessor.FileStatusListView.FocusedItem.Index.Should().Be(1); _fileStatusList.SelectedIndex.Should().Be(1); _fileStatusList.SelectedItem.Should().BeSameAs(itemAt1); _fileStatusList.SelectedItems.Should().BeEquivalentTo(new List <GitItemStatus> { itemAt1 }); // SelectedItems (multiple items) _fileStatusList.SelectedIndex = 2; _fileStatusList.SelectedItems = new List <GitItemStatus> { itemAt2, itemAt0, itemNotInList }; accessor.FileStatusListView.FocusedItem.Index.Should().Be(0); _fileStatusList.SelectedIndex.Should().Be(0); _fileStatusList.SelectedItem.Should().BeSameAs(itemAt0); // focused item _fileStatusList.SelectedItems.Should().BeEquivalentTo(new List <GitItemStatus> { itemAt0, itemAt2 }); accessor.FileStatusListView.Items[1].Focused = true; accessor.FileStatusListView.FocusedItem.Index.Should().Be(1); _fileStatusList.SelectedIndex.Should().Be(0); _fileStatusList.SelectedItem.Should().BeSameAs(itemAt2); // LastSelectedItem _fileStatusList.SelectedItems.Should().BeEquivalentTo(new List <GitItemStatus> { itemAt0, itemAt2 }); _fileStatusList.SelectedIndex = 2; _fileStatusList.SelectedItems = new List <GitItemStatus> { itemAt2, itemAt1, itemNotInList }; accessor.FileStatusListView.FocusedItem.Index.Should().Be(1); _fileStatusList.SelectedIndex.Should().Be(1); _fileStatusList.SelectedItem.Should().BeSameAs(itemAt1); // focused item _fileStatusList.SelectedItems.Should().BeEquivalentTo(new List <GitItemStatus> { itemAt1, itemAt2 }); accessor.FileStatusListView.Items[0].Focused = true; accessor.FileStatusListView.FocusedItem.Index.Should().Be(0); _fileStatusList.SelectedIndex.Should().Be(1); _fileStatusList.SelectedItem.Should().BeSameAs(itemAt2); // LastSelectedItem _fileStatusList.SelectedItems.Should().BeEquivalentTo(new List <GitItemStatus> { itemAt1, itemAt2 }); // SelectAll _fileStatusList.SelectedIndex = 2; _fileStatusList.SelectAll(); foreach (var item in accessor.FileStatusListView.Items()) { item.Selected.Should().BeTrue(); } accessor.FileStatusListView.FocusedItem.Index.Should().Be(0); _fileStatusList.SelectedIndex.Should().Be(0); _fileStatusList.SelectedItem.Should().BeSameAs(itemAt0); // focused item _fileStatusList.SelectedItems.Should().BeEquivalentTo(new List <GitItemStatus> { itemAt0, itemAt1, itemAt2 }); // SelectFirstVisibleItem _fileStatusList.SelectedIndex = 2; _fileStatusList.SelectFirstVisibleItem(); accessor.FileStatusListView.FocusedItem.Index.Should().Be(0); _fileStatusList.SelectedIndex.Should().Be(0); _fileStatusList.SelectedItem.Should().BeSameAs(itemAt0); // focused item _fileStatusList.SelectedItems.Should().BeEquivalentTo(new List <GitItemStatus> { itemAt0 }); }