// Boston, MA 02110-1301, USA.
using System;
-using System.Collections.Generic;
using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
using OpenTween.OpenTweenCustomControl;
using Xunit;
{
using var listView = new DetailsListView();
}
+
+ [WinFormsFact]
+ public void SelectionMark_Test()
+ {
+ using var listView = new DetailsListView();
+
+ listView.RetrieveVirtualItem += (s, e) => e.Item = new();
+ listView.VirtualMode = true;
+ listView.VirtualListSize = 10;
+ listView.CreateControl();
+
+ listView.SelectionMark = 3;
+ Assert.Equal(3, listView.SelectionMark);
+ }
+
+ [WinFormsFact]
+ public void SelectItems_EmptyTest()
+ {
+ using var listView = new DetailsListView();
+
+ listView.RetrieveVirtualItem += (s, e) => e.Item = new();
+ listView.VirtualMode = true;
+ listView.VirtualListSize = 10;
+ listView.CreateControl();
+
+ listView.SelectedIndices.Add(1);
+ Assert.Single(listView.SelectedIndices);
+
+ listView.SelectItems(Array.Empty<int>());
+ Assert.Empty(listView.SelectedIndices);
+ }
+
+ [WinFormsFact]
+ public void SelectItems_SingleTest()
+ {
+ using var listView = new DetailsListView();
+
+ listView.RetrieveVirtualItem += (s, e) => e.Item = new();
+ listView.VirtualMode = true;
+ listView.VirtualListSize = 10;
+ listView.CreateControl();
+
+ listView.SelectedIndices.Add(1);
+ Assert.Single(listView.SelectedIndices);
+
+ listView.SelectItems(new[] { 2 });
+ Assert.Equal(new[] { 2 }, listView.SelectedIndices.Cast<int>());
+ }
+
+ [WinFormsFact]
+ public void SelectItems_Multiple_ClearAndSelectTest()
+ {
+ using var listView = new DetailsListView();
+
+ listView.RetrieveVirtualItem += (s, e) => e.Item = new();
+ listView.VirtualMode = true;
+ listView.VirtualListSize = 10;
+ listView.CreateControl();
+
+ listView.SelectedIndices.Add(2);
+ listView.SelectedIndices.Add(3);
+ Assert.Equal(2, listView.SelectedIndices.Count);
+
+ // Clear して選択し直した方が早いパターン
+ listView.SelectItems(new[] { 5, 6 });
+ Assert.Equal(new[] { 5, 6 }, listView.SelectedIndices.Cast<int>());
+ }
+
+ [WinFormsFact]
+ public void SelectItems_Multiple_DeselectAndSelectTest()
+ {
+ using var listView = new DetailsListView();
+
+ listView.RetrieveVirtualItem += (s, e) => e.Item = new();
+ listView.VirtualMode = true;
+ listView.VirtualListSize = 10;
+ listView.CreateControl();
+
+ listView.SelectedIndices.Add(1);
+ listView.SelectedIndices.Add(2);
+ listView.SelectedIndices.Add(3);
+ Assert.Equal(3, listView.SelectedIndices.Count);
+
+ // 選択範囲の差分だけ更新した方が早いパターン
+ listView.SelectItems(new[] { 2, 3, 4 });
+ Assert.Equal(new[] { 2, 3, 4 }, listView.SelectedIndices.Cast<int>());
+ }
+
+ [WinFormsFact]
+ public void SelectItems_OutOfRangeTest()
+ {
+ using var listView = new DetailsListView();
+
+ listView.RetrieveVirtualItem += (s, e) => e.Item = new();
+ listView.VirtualMode = true;
+ listView.VirtualListSize = 10;
+ listView.CreateControl();
+
+ Assert.Throws<ArgumentOutOfRangeException>(
+ () => listView.SelectItems(new[] { -1 })
+ );
+ Assert.Throws<ArgumentOutOfRangeException>(
+ () => listView.SelectItems(new[] { 10 })
+ );
+ }
}
}