Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

namespace System.Windows.Forms.Tests;

public class ListView_IconComparerTests
{
[WinFormsTheory]
[InlineData(SortOrder.Ascending)]
[InlineData(SortOrder.Descending)]
[InlineData(SortOrder.None)]
public void Constructor_SetsSortOrder_Correctly(SortOrder order)
{
ListView.IconComparer comparer = new(order);

((SortOrder)comparer.TestAccessor().Dynamic._sortOrder).Should().Be(order);
}

[WinFormsTheory]
[InlineData(SortOrder.Ascending, SortOrder.Descending)]
[InlineData(SortOrder.Descending, SortOrder.Ascending)]
[InlineData(SortOrder.None, SortOrder.Ascending)]
public void SortOrder_Setter_UpdatesSortOrder(SortOrder initialOrder, SortOrder updatedOrder)
{
ListView.IconComparer comparer = new(initialOrder)
{
SortOrder = updatedOrder
};

((SortOrder)comparer.TestAccessor().Dynamic._sortOrder).Should().Be(updatedOrder);
}

[WinFormsTheory]
[InlineData(SortOrder.Ascending, "A", "B", -1)]
[InlineData(SortOrder.Ascending, "B", "A", 1)]
[InlineData(SortOrder.Ascending, "A", "A", 0)]
[InlineData(SortOrder.Descending, "A", "B", 1)]
[InlineData(SortOrder.Descending, "B", "A", -1)]
[InlineData(SortOrder.Descending, "A", "A", 0)]
public void Compare_ComparesListViewItems_ByText_AndSortOrder(SortOrder order, string text1, string text2, int expectedSign)
{
ListView.IconComparer comparer = new(order);
ListViewItem item1 = new(text1);
ListViewItem item2 = new(text2);
int result = comparer.Compare(item1, item2);

Math.Sign(result).Should().Be(expectedSign);
}

[WinFormsFact]
public void Compare_NullItems_ReturnsExpected()
{
ListView.IconComparer comparer = new(SortOrder.Ascending);
ListViewItem item = new("A");

comparer.Compare(null, null).Should().Be(0);
comparer.Compare(null, item).Should().BeLessThan(0);
comparer.Compare(item, null).Should().BeGreaterThan(0);
}
}