TransitioningContentControlTest.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using System.Linq;
  2. using Avalonia.Controls;
  3. using Avalonia.Controls.Presenters;
  4. using Avalonia.Controls.Templates;
  5. using Avalonia.UnitTests;
  6. using Avalonia.VisualTree;
  7. using ReactiveUI;
  8. using Splat;
  9. using Xunit;
  10. namespace Avalonia.ReactiveUI.UnitTests
  11. {
  12. public class TransitioningContentControlTest
  13. {
  14. [Fact]
  15. public void Transitioning_Control_Template_Should_Be_Instantiated()
  16. {
  17. var target = new TransitioningContentControl
  18. {
  19. PageTransition = null,
  20. Template = GetTemplate(),
  21. Content = "Foo"
  22. };
  23. target.ApplyTemplate();
  24. target.Presenter.UpdateChild();
  25. var child = ((Visual)target).GetVisualChildren().Single();
  26. Assert.IsType<Border>(child);
  27. child = child.GetVisualChildren().Single();
  28. Assert.IsType<ContentPresenter>(child);
  29. child = child.GetVisualChildren().Single();
  30. Assert.IsType<TextBlock>(child);
  31. }
  32. private static FuncControlTemplate GetTemplate()
  33. {
  34. return new FuncControlTemplate<ContentControl>((parent, scope) =>
  35. {
  36. return new Border
  37. {
  38. Background = new Media.SolidColorBrush(0xffffffff),
  39. Child = new ContentPresenter
  40. {
  41. Name = "PART_ContentPresenter",
  42. [~ContentPresenter.ContentProperty] = parent[~ContentControl.ContentProperty],
  43. [~ContentPresenter.ContentTemplateProperty] = parent[~ContentControl.ContentTemplateProperty],
  44. }.RegisterInNameScope(scope)
  45. };
  46. });
  47. }
  48. }
  49. }