Skip to content

Commit 72c79eb

Browse files
authored
Add code coverage for treeview (#11686)
* Add code coverage for treeview * Handle FeedBacks
1 parent 1d3b8ba commit 72c79eb

File tree

3 files changed

+112
-8
lines changed

3 files changed

+112
-8
lines changed

src/System.Windows.Forms/tests/UnitTests/System/Windows/Forms/AccessibleObjects/TreeNode.TreeNodeAccessibleObjectTests.cs

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Licensed to the .NET Foundation under one or more agreements.
22
// The .NET Foundation licenses this file to you under the MIT license.
33

4+
using System.Drawing;
45
using Windows.Win32.UI.Accessibility;
56
using static System.Windows.Forms.TreeNode;
67

@@ -14,8 +15,12 @@ public void TreeNodeAccessibleObject_Ctor_Default()
1415
using TreeView control = new();
1516
TreeNode node = new(control);
1617

17-
Assert.NotNull(node.AccessibilityObject);
18-
Assert.False(control.IsHandleCreated);
18+
node.AccessibilityObject.Should().NotBeNull();
19+
node.AccessibilityObject.CanGetDefaultActionInternal.Should().BeFalse();
20+
node.AccessibilityObject.CanGetNameInternal.Should().BeFalse();
21+
node.AccessibilityObject.IsItemSelected.Should().BeFalse();
22+
node.AccessibilityObject.CanGetValueInternal.Should().BeFalse();
23+
control.IsHandleCreated.Should().BeFalse();
1924
}
2025

2126
[WinFormsFact]
@@ -584,6 +589,36 @@ public void TreeNodeAccessibleObject_IsDisconnected_WhenReplacedByIndex()
584589
Assert.True(control.IsHandleCreated);
585590
}
586591

592+
[WinFormsTheory]
593+
[InlineData(false, false, true)]
594+
[InlineData(true, true, false)]
595+
public void TreeNodeAccessibleObject_Bounds_ShouldMatchExpected_IfConditionsMet(bool createControl, bool makeNodeVisible, bool expectBoundsEmpty)
596+
{
597+
using TreeView treeView = new();
598+
TreeNode node = new("Node");
599+
treeView.Nodes.Add(node);
600+
601+
if (createControl)
602+
{
603+
treeView.CreateControl();
604+
if (makeNodeVisible)
605+
{
606+
treeView.ExpandAll();
607+
}
608+
}
609+
610+
var accessibleObject = node.AccessibilityObject;
611+
612+
if (expectBoundsEmpty)
613+
{
614+
accessibleObject.Bounds.Should().Be(Rectangle.Empty);
615+
}
616+
else
617+
{
618+
accessibleObject.Bounds.Should().NotBe(Rectangle.Empty);
619+
}
620+
}
621+
587622
private class AccessibilityObjectDisconnectTrackingTreeNode : TreeNode
588623
{
589624
public AccessibilityObjectDisconnectTrackingTreeNode(TreeView treeView) : base(treeView) { }

src/System.Windows.Forms/tests/UnitTests/System/Windows/Forms/TreeNodeCollectionTests.cs

Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -242,8 +242,8 @@ public void TreeNodeCollection_Sort_ShouldAfterAddingItems()
242242
treeView.Sort();
243243
treeView.CreateControl();
244244

245-
TreeNode[] treeNodeArray = new TreeNode[]
246-
{
245+
TreeNode[] treeNodeArray =
246+
[
247247
new()
248248
{
249249
Name = "2",
@@ -254,7 +254,7 @@ public void TreeNodeCollection_Sort_ShouldAfterAddingItems()
254254
Name = "1",
255255
Text = "1"
256256
}
257-
};
257+
];
258258

259259
treeView.Nodes.AddRange(treeNodeArray);
260260

@@ -281,8 +281,8 @@ public void TreeNodeCollection_TreeNodeCollectionAddRangeRespectsSortOrderSwitch
281281
Name = "7",
282282
Text = "7"
283283
};
284-
TreeNode[] treeNodeArray = new TreeNode[]
285-
{
284+
TreeNode[] treeNodeArray =
285+
[
286286
new()
287287
{
288288
Name = "2",
@@ -293,7 +293,7 @@ public void TreeNodeCollection_TreeNodeCollectionAddRangeRespectsSortOrderSwitch
293293
Name = "1",
294294
Text = "1"
295295
}
296-
};
296+
];
297297

298298
TreeNode treeNode;
299299
using (TreeNodeCollectionAddRangeRespectsSortOrderScope scope = new(enable: true))
@@ -502,4 +502,37 @@ public void TreeNodeCollection_Insert_StringKeyImageIndexSelectedImageIndex_Succ
502502
treeNode.Should().Be(collection[0]);
503503
treeNode.ImageIndex.Should().Be(imageIndex);
504504
}
505+
506+
[WinFormsTheory]
507+
[InlineData("name1", true)]
508+
[InlineData("name2", true)]
509+
[InlineData("NonExistentNode", false)]
510+
public void TreeNodeCollection_Contains_VariousScenarios_ReturnsExpected(string nodeName, bool expected)
511+
{
512+
var collection = CreateCollectionWithNodes();
513+
TreeNode node = new(nodeName);
514+
collection.Add(node);
515+
516+
bool result = collection.Contains(collection[nodeName]);
517+
518+
if (nodeName == "NonExistentNode")
519+
{
520+
collection.Remove(node);
521+
}
522+
523+
result.Should().Be(expected);
524+
}
525+
526+
[WinFormsFact]
527+
public void TreeNodeCollection_Contains_SpecialCases_ReturnsFalse()
528+
{
529+
var collection = CreateCollectionWithNodes();
530+
var nodeToRemove = collection[0];
531+
532+
collection.Remove(nodeToRemove);
533+
collection.Contains(nodeToRemove).Should().BeFalse();
534+
535+
collection.Clear();
536+
collection.Contains(nodeToRemove).Should().BeFalse();
537+
}
505538
}

src/System.Windows.Forms/tests/UnitTests/System/Windows/Forms/TreeViewTests.cs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7531,6 +7531,42 @@ public void TreeView_ToString_Invoke_ReturnsExpected()
75317531
treeView.ToString().Should().Be($"System.Windows.Forms.TreeView, Nodes.Count: 2, Nodes[0]: {treeView.Nodes[0]}");
75327532
}
75337533

7534+
[WinFormsFact]
7535+
public void ArraySubsetEnumerator_Behavior_AfterMoveNextAndReset()
7536+
{
7537+
object[] array = { "a", "b", "c" };
7538+
ArraySubsetEnumerator enumerator = new(array, 2);
7539+
7540+
enumerator.MoveNext().Should().BeTrue();
7541+
enumerator.Current.Should().Be("a");
7542+
7543+
enumerator.MoveNext().Should().BeTrue();
7544+
enumerator.Current.Should().Be("b");
7545+
7546+
enumerator.Reset();
7547+
enumerator.Current.Should().BeNull();
7548+
7549+
enumerator.MoveNext().Should().BeTrue();
7550+
enumerator.Current.Should().Be("a");
7551+
}
7552+
7553+
[WinFormsTheory]
7554+
[InlineData(5)]
7555+
[InlineData(10)]
7556+
public void TreeView_VisibleCount_MultipleNodes_ReturnsExpected(int nodeCount)
7557+
{
7558+
using TreeView treeView = new();
7559+
7560+
for (int i = 0; i < nodeCount; i++)
7561+
{
7562+
treeView.Nodes.Add($"Node{i}");
7563+
}
7564+
7565+
treeView.CreateControl();
7566+
treeView.Height = 100;
7567+
treeView.VisibleCount.Should().Be(5);
7568+
}
7569+
75347570
private class SubTreeView : TreeView
75357571
{
75367572
public new bool CanEnableIme => base.CanEnableIme;

0 commit comments

Comments
 (0)