TemplateExtensionsTests.cs 1.6 KB

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