diff --git a/src/System.Windows.Forms.Design/tests/UnitTests/ListViewDesignerTests.cs b/src/System.Windows.Forms.Design/tests/UnitTests/ListViewDesignerTests.cs deleted file mode 100644 index dd6f9a799de..00000000000 --- a/src/System.Windows.Forms.Design/tests/UnitTests/ListViewDesignerTests.cs +++ /dev/null @@ -1,24 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -#nullable disable - -namespace System.Windows.Forms.Design.Tests; - -public class ListViewDesignerTests -{ - [WinFormsFact] - public void ListViewDesigner_AssociatedComponentsTest() - { - using ListViewDesigner listViewDesigner = new(); - using ListView listView = new(); - listViewDesigner.Initialize(listView); - - Assert.Empty(listViewDesigner.AssociatedComponents); - - listView.Columns.Add("123"); - listView.Columns.Add("abc"); - - Assert.Equal(2, listViewDesigner.AssociatedComponents.Count); - } -} diff --git a/src/System.Windows.Forms.Design/tests/UnitTests/System/Windows/Forms/Design/ListViewDesignerTests.cs b/src/System.Windows.Forms.Design/tests/UnitTests/System/Windows/Forms/Design/ListViewDesignerTests.cs new file mode 100644 index 00000000000..fd2a0e52d18 --- /dev/null +++ b/src/System.Windows.Forms.Design/tests/UnitTests/System/Windows/Forms/Design/ListViewDesignerTests.cs @@ -0,0 +1,134 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.ComponentModel.Design; +using System.Drawing; + +namespace System.Windows.Forms.Design.Tests; + +public class ListViewDesignerTests : IDisposable +{ + private readonly ListViewDesigner _listViewDesigner; + private readonly ListView _listView; + + public ListViewDesignerTests() + { + _listViewDesigner = new(); + _listView = new(); + _listViewDesigner.Initialize(_listView); + } + + public void Dispose() + { + _listViewDesigner.Dispose(); + _listView.Dispose(); + } + + [WinFormsFact] + public void ListViewDesigner_AssociatedComponentsTest() + { + _listView.Columns.Add("123"); + _listView.Columns.Add("abc"); + + _listViewDesigner.AssociatedComponents.Count.Should().Be(2); + } + + [WinFormsFact] + public void ListViewDesigner_GetHitTest_ReturnsFalse_WhenViewIsNotDetails() + { + _listView.View = View.LargeIcon; + + bool result = _listViewDesigner.TestAccessor().Dynamic.GetHitTest(new Point(10, 10)); + + result.Should().BeFalse(); + } + + [WinFormsFact] + public void ListViewDesigner_GetHitTest_ReturnsFalse_WhenPointIsNotOnHeader() + { + _listView.View = View.Details; + _listView.Columns.Add("Column1"); + + bool result = _listViewDesigner.TestAccessor().Dynamic.GetHitTest(new Point(10, 10)); + + result.Should().BeFalse(); + } + + [WinFormsFact] + public void ListViewDesigner_GetHitTest_ReturnsFalse_WhenHeaderHandleIsNull() + { + _listView.View = View.Details; + _listView.Columns.Add("Column1"); + + Point point = new(10, 5); + bool result = _listViewDesigner.TestAccessor().Dynamic.GetHitTest(point); + + result.Should().BeFalse(); + } + + [WinFormsFact] + public void ListViewDesigner_GetHitTest_ReturnsFalse_WhenPointIsOutsideControl() + { + _listView.View = View.Details; + _listView.Columns.Add("Column1"); + + Point outsidePoint = new(-10, -10); + bool result = _listViewDesigner.TestAccessor().Dynamic.GetHitTest(outsidePoint); + + result.Should().BeFalse(); + } + + [WinFormsFact] + public void ListViewDesigner_Initialize_SetsOwnerDrawToFalse() => + _listView.OwnerDraw.Should().BeFalse(); + + [WinFormsFact] + public void ListViewDesigner_Initialize_SetsUseCompatibleStateImageBehaviorToFalse() => + _listView.UseCompatibleStateImageBehavior.Should().BeFalse(); + + [WinFormsFact] + public void ListViewDesigner_Initialize_HooksChildHandles_WhenViewIsDetails() + { + _listView.View = View.Details; + + _listViewDesigner.Should().BeOfType(); + } + + [WinFormsFact] + public void ListViewDesigner_Initialize_DoesNotHookChildHandles_WhenViewIsNotDetails() + { + _listView.View = View.LargeIcon; + + _listViewDesigner.Should().BeOfType(); + } + + [WinFormsFact] + public void ListViewDesigner_ActionLists_ReturnsNonNullCollection() + { + DesignerActionListCollection actionLists = _listViewDesigner.ActionLists; + + actionLists.Should().BeOfType(); + actionLists[0].Should().BeOfType(); + } + + [WinFormsFact] + public void ListViewDesigner_ActionLists_ReturnsSameInstanceOnSubsequentCalls() + { + DesignerActionListCollection firstCall = _listViewDesigner.ActionLists; + DesignerActionListCollection secondCall = _listViewDesigner.ActionLists; + + firstCall.Should().BeSameAs(secondCall); + } + + [WinFormsFact] + public void ListViewDesigner_ActionLists_ThreadSafeInitialization() + { + DesignerActionListCollection[] results = new DesignerActionListCollection[2]; + Parallel.Invoke( + () => results[0] = _listViewDesigner.ActionLists, + () => results[1] = _listViewDesigner.ActionLists + ); + + results[0].Should().BeSameAs(results[1]); + } +}