|
|
@@ -2,6 +2,7 @@
|
|
|
// Licensed under the MIT license. See licence.md file in the project root for full license information.
|
|
|
|
|
|
using System;
|
|
|
+using System.Collections;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
using Avalonia.Collections;
|
|
|
@@ -843,6 +844,54 @@ namespace Avalonia.Controls.UnitTests
|
|
|
Assert.Equal(1, target.SelectedItems.Count);
|
|
|
}
|
|
|
|
|
|
+ [Fact]
|
|
|
+ public void TreeViewItems_Level_Should_Be_Set()
|
|
|
+ {
|
|
|
+ var tree = CreateTestTreeData();
|
|
|
+ var target = new TreeView
|
|
|
+ {
|
|
|
+ Template = CreateTreeViewTemplate(),
|
|
|
+ Items = tree,
|
|
|
+ };
|
|
|
+
|
|
|
+ var visualRoot = new TestRoot();
|
|
|
+ visualRoot.Child = target;
|
|
|
+
|
|
|
+ CreateNodeDataTemplate(target);
|
|
|
+ ApplyTemplates(target);
|
|
|
+ ExpandAll(target);
|
|
|
+
|
|
|
+ Assert.Equal(0, GetItem(target, 0).Level);
|
|
|
+ Assert.Equal(1, GetItem(target, 0, 0).Level);
|
|
|
+ Assert.Equal(1, GetItem(target, 0, 1).Level);
|
|
|
+ Assert.Equal(1, GetItem(target, 0, 2).Level);
|
|
|
+ Assert.Equal(2, GetItem(target, 0, 1, 0).Level);
|
|
|
+ }
|
|
|
+
|
|
|
+ [Fact]
|
|
|
+ public void TreeViewItems_Level_Should_Be_Set_For_Derived_TreeView()
|
|
|
+ {
|
|
|
+ var tree = CreateTestTreeData();
|
|
|
+ var target = new DerivedTreeView
|
|
|
+ {
|
|
|
+ Template = CreateTreeViewTemplate(),
|
|
|
+ Items = tree,
|
|
|
+ };
|
|
|
+
|
|
|
+ var visualRoot = new TestRoot();
|
|
|
+ visualRoot.Child = target;
|
|
|
+
|
|
|
+ CreateNodeDataTemplate(target);
|
|
|
+ ApplyTemplates(target);
|
|
|
+ ExpandAll(target);
|
|
|
+
|
|
|
+ Assert.Equal(0, GetItem(target, 0).Level);
|
|
|
+ Assert.Equal(1, GetItem(target, 0, 0).Level);
|
|
|
+ Assert.Equal(1, GetItem(target, 0, 1).Level);
|
|
|
+ Assert.Equal(1, GetItem(target, 0, 2).Level);
|
|
|
+ Assert.Equal(2, GetItem(target, 0, 1, 0).Level);
|
|
|
+ }
|
|
|
+
|
|
|
private void ApplyTemplates(TreeView tree)
|
|
|
{
|
|
|
tree.ApplyTemplate();
|
|
|
@@ -862,6 +911,19 @@ namespace Avalonia.Controls.UnitTests
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private TreeViewItem GetItem(TreeView target, params int[] indexes)
|
|
|
+ {
|
|
|
+ var c = (ItemsControl)target;
|
|
|
+
|
|
|
+ foreach (var index in indexes)
|
|
|
+ {
|
|
|
+ var item = ((IList)c.Items)[index];
|
|
|
+ c = (ItemsControl)target.ItemContainerGenerator.Index.ContainerFromItem(item);
|
|
|
+ }
|
|
|
+
|
|
|
+ return (TreeViewItem)c;
|
|
|
+ }
|
|
|
+
|
|
|
private IList<Node> CreateTestTreeData()
|
|
|
{
|
|
|
return new AvaloniaList<Node>
|
|
|
@@ -929,6 +991,14 @@ namespace Avalonia.Controls.UnitTests
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ private void ExpandAll(TreeView tree)
|
|
|
+ {
|
|
|
+ foreach (var i in tree.ItemContainerGenerator.Containers)
|
|
|
+ {
|
|
|
+ tree.ExpandSubTree((TreeViewItem)i.ContainerControl);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private List<string> ExtractItemHeader(TreeView tree, int level)
|
|
|
{
|
|
|
return ExtractItemContent(tree.Presenter.Panel, 0, level)
|
|
|
@@ -1019,5 +1089,9 @@ namespace Avalonia.Controls.UnitTests
|
|
|
return data is Node;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ private class DerivedTreeView : TreeView
|
|
|
+ {
|
|
|
+ }
|
|
|
}
|
|
|
}
|