TemplateExtensionsTests.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using System.Linq;
  2. using Avalonia.Controls.UnitTests;
  3. using Xunit;
  4. namespace Avalonia.Controls.Templates.UnitTests
  5. {
  6. public class TemplateExtensionsTests
  7. {
  8. /// <summary>
  9. /// Control templates can themselves contain templated controls. Make sure that
  10. /// GetTemplateChildren returns only controls that have a TemplatedParent of the
  11. /// control that is being searched.
  12. /// </summary>
  13. [Fact]
  14. public void GetTemplateChildren_Should_Not_Return_Nested_Template_Controls()
  15. {
  16. var target = new TestTemplatedControl();
  17. var border1 = new Border
  18. {
  19. Name = "border1",
  20. [StyledElement.TemplatedParentProperty] = target,
  21. };
  22. var inner = new TestTemplatedControl
  23. {
  24. Name = "inner",
  25. [StyledElement.TemplatedParentProperty] = target,
  26. };
  27. var border2 = new Border { Name = "border2", [StyledElement.TemplatedParentProperty] = inner };
  28. var border3 = new Border { Name = "border3", [StyledElement.TemplatedParentProperty] = inner };
  29. var border4 = new Border { Name = "border4", [StyledElement.TemplatedParentProperty] = target };
  30. var border5 = new Border { Name = "border5", [StyledElement.TemplatedParentProperty] = null };
  31. target.AddVisualChild(border1);
  32. border1.Child = inner;
  33. inner.AddVisualChild(border2);
  34. inner.AddVisualChild(border3);
  35. border3.Child = border4;
  36. border4.Child = border5;
  37. var result = target.GetTemplateChildren().Select(x => x.Name).ToArray();
  38. Assert.Equal(new[] { "border1", "inner", "border4" }, result);
  39. }
  40. }
  41. }