TransitioningContentControlTest.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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_Should_Derive_Template_From_Content_Control()
  16. {
  17. var target = new TransitioningContentControl();
  18. var stylable = (IStyledElement)target;
  19. Assert.Equal(typeof(ContentControl),stylable.StyleKey);
  20. }
  21. [Fact]
  22. public void Transitioning_Control_Template_Should_Be_Instantiated()
  23. {
  24. var target = new TransitioningContentControl
  25. {
  26. PageTransition = null,
  27. Template = GetTemplate(),
  28. Content = "Foo"
  29. };
  30. target.ApplyTemplate();
  31. ((ContentPresenter)target.Presenter).UpdateChild();
  32. var child = ((IVisual)target).VisualChildren.Single();
  33. Assert.IsType<Border>(child);
  34. child = child.VisualChildren.Single();
  35. Assert.IsType<ContentPresenter>(child);
  36. child = child.VisualChildren.Single();
  37. Assert.IsType<TextBlock>(child);
  38. }
  39. private FuncControlTemplate GetTemplate()
  40. {
  41. return new FuncControlTemplate<ContentControl>((parent, scope) =>
  42. {
  43. return new Border
  44. {
  45. Background = new Media.SolidColorBrush(0xffffffff),
  46. Child = new ContentPresenter
  47. {
  48. Name = "PART_ContentPresenter",
  49. [~ContentPresenter.ContentProperty] = parent[~ContentControl.ContentProperty],
  50. [~ContentPresenter.ContentTemplateProperty] = parent[~ContentControl.ContentTemplateProperty],
  51. }.RegisterInNameScope(scope)
  52. };
  53. });
  54. }
  55. }
  56. }