Browse Source

Added failing test for #2971.

And a passing test for normal TreeView.
pull/3050/head
Steven Kirk 7 years ago
parent
commit
ea68915de6
  1. 74
      tests/Avalonia.Controls.UnitTests/TreeViewTests.cs

74
tests/Avalonia.Controls.UnitTests/TreeViewTests.cs

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

Loading…
Cancel
Save