TemplateExtensionsTests.cs 1.9 KB

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