// -----------------------------------------------------------------------
//
// Copyright 2014 MIT Licence. See licence.md for more information.
//
// -----------------------------------------------------------------------
namespace Perspex.Controls.Templates.UnitTests
{
using System.Linq;
using Perspex.Controls;
using Perspex.Controls.Templates;
using Perspex.Controls.UnitTests;
using Xunit;
public class TemplateExtensionsTests
{
///
/// Control templates can themselves contain templated controls. Make sure that
/// GetTemplateChildren returns only controls that have a TemplatedParent of the
/// control that is being searched.
///
[Fact]
public void GetTemplateChildren_Should_Not_Return_Nested_Template_Controls()
{
var target = new TestTemplatedControl();
var border1 = new Border { Name = "border1", TemplatedParent = target };
var inner = new TestTemplatedControl { Name = "inner", TemplatedParent = target };
var border2 = new Border { Name = "border2", TemplatedParent = inner };
var border3 = new Border { Name = "border3", TemplatedParent = inner };
var border4 = new Border { Name = "border4", TemplatedParent = target };
var border5 = new Border { Name = "border5", TemplatedParent = null };
target.AddVisualChild(border1);
border1.Content = inner;
inner.AddVisualChild(border2);
inner.AddVisualChild(border3);
border3.Content = border4;
border4.Content = border5;
var result = target.GetTemplateChildren().Select(x => x.Name).ToArray();
Assert.Equal(new[] { "border1", "inner", "border4" }, result);
}
}
}