TemplateExtensionsTests.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. // Copyright (c) The Avalonia Project. All rights reserved.
  2. // Licensed under the MIT license. See licence.md file in the project root for full license information.
  3. using System.Linq;
  4. using Avalonia.Controls.UnitTests;
  5. using Xunit;
  6. namespace Avalonia.Controls.Templates.UnitTests
  7. {
  8. public class TemplateExtensionsTests
  9. {
  10. /// <summary>
  11. /// Control templates can themselves contain templated controls. Make sure that
  12. /// GetTemplateChildren returns only controls that have a TemplatedParent of the
  13. /// control that is being searched.
  14. /// </summary>
  15. [Fact]
  16. public void GetTemplateChildren_Should_Not_Return_Nested_Template_Controls()
  17. {
  18. var target = new TestTemplatedControl();
  19. var border1 = new Border { Name = "border1", TemplatedParent = target };
  20. var inner = new TestTemplatedControl { Name = "inner", TemplatedParent = target };
  21. var border2 = new Border { Name = "border2", TemplatedParent = inner };
  22. var border3 = new Border { Name = "border3", TemplatedParent = inner };
  23. var border4 = new Border { Name = "border4", TemplatedParent = target };
  24. var border5 = new Border { Name = "border5", TemplatedParent = null };
  25. target.AddVisualChild(border1);
  26. border1.Child = inner;
  27. inner.AddVisualChild(border2);
  28. inner.AddVisualChild(border3);
  29. border3.Child = border4;
  30. border4.Child = border5;
  31. var result = target.GetTemplateChildren().Select(x => x.Name).ToArray();
  32. Assert.Equal(new[] { "border1", "inner", "border4" }, result);
  33. }
  34. }
  35. }