TransitioningContentControlTest.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. // Copyright (c) The Avalonia Project. All rights reserved.
  2. // Licensed under the MIT license. See licence.md file in the project root for full license information.
  3. using System.Linq;
  4. using Avalonia.Controls;
  5. using Avalonia.Controls.Presenters;
  6. using Avalonia.Controls.Templates;
  7. using Avalonia.UnitTests;
  8. using Avalonia.VisualTree;
  9. using ReactiveUI;
  10. using Splat;
  11. using Xunit;
  12. namespace Avalonia.ReactiveUI.UnitTests
  13. {
  14. public class TransitioningContentControlTest
  15. {
  16. [Fact]
  17. public void Transitioning_Control_Should_Derive_Template_From_Content_Control()
  18. {
  19. var target = new TransitioningContentControl();
  20. var stylable = (IStyledElement)target;
  21. Assert.Equal(typeof(ContentControl),stylable.StyleKey);
  22. }
  23. [Fact]
  24. public void Transitioning_Control_Template_Should_Be_Instantiated()
  25. {
  26. var target = new TransitioningContentControl
  27. {
  28. PageTransition = null,
  29. Template = GetTemplate(),
  30. Content = "Foo"
  31. };
  32. target.ApplyTemplate();
  33. ((ContentPresenter)target.Presenter).UpdateChild();
  34. var child = ((IVisual)target).VisualChildren.Single();
  35. Assert.IsType<Border>(child);
  36. child = child.VisualChildren.Single();
  37. Assert.IsType<ContentPresenter>(child);
  38. child = child.VisualChildren.Single();
  39. Assert.IsType<TextBlock>(child);
  40. }
  41. private FuncControlTemplate GetTemplate()
  42. {
  43. return new FuncControlTemplate<ContentControl>((parent, scope) =>
  44. {
  45. return new Border
  46. {
  47. Background = new Media.SolidColorBrush(0xffffffff),
  48. Child = new ContentPresenter
  49. {
  50. Name = "PART_ContentPresenter",
  51. [~ContentPresenter.ContentProperty] = parent[~ContentControl.ContentProperty],
  52. [~ContentPresenter.ContentTemplateProperty] = parent[~ContentControl.ContentTemplateProperty],
  53. }.RegisterInNameScope(scope)
  54. };
  55. });
  56. }
  57. }
  58. }