|
|
|
@ -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 |
|
|
|
{ |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|