FullLayoutTests.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. using System.Linq;
  2. using Avalonia.Controls;
  3. using Avalonia.Controls.Presenters;
  4. using Avalonia.Controls.Primitives;
  5. using Avalonia.Controls.Templates;
  6. using Avalonia.Styling;
  7. using Avalonia.UnitTests;
  8. using Avalonia.VisualTree;
  9. using Xunit;
  10. namespace Avalonia.Layout.UnitTests
  11. {
  12. public class FullLayoutTests
  13. {
  14. [Fact]
  15. public void Grandchild_Size_Changed()
  16. {
  17. using (UnitTestApplication.Start(TestServices.StyledWindow))
  18. {
  19. Border border;
  20. TextBlock textBlock;
  21. var window = new Window()
  22. {
  23. SizeToContent = SizeToContent.WidthAndHeight,
  24. Content = border = new Border
  25. {
  26. HorizontalAlignment = HorizontalAlignment.Center,
  27. VerticalAlignment = VerticalAlignment.Center,
  28. Child = new Border
  29. {
  30. Child = textBlock = new TextBlock
  31. {
  32. Width = 400,
  33. Height = 400,
  34. Text = "Hello World!",
  35. },
  36. }
  37. }
  38. };
  39. window.Show();
  40. Assert.Equal(new Size(400, 400), border.Bounds.Size);
  41. textBlock.Width = 200;
  42. window.LayoutManager.ExecuteLayoutPass();
  43. Assert.Equal(new Size(200, 400), border.Bounds.Size);
  44. }
  45. }
  46. [Fact]
  47. public void Test_ScrollViewer_With_TextBlock()
  48. {
  49. using (UnitTestApplication.Start(TestServices.StyledWindow))
  50. {
  51. ScrollViewer scrollViewer;
  52. TextBlock textBlock;
  53. var window = new Window()
  54. {
  55. Width = 800,
  56. Height = 600,
  57. Content = scrollViewer = new ScrollViewer
  58. {
  59. Width = 200,
  60. Height = 200,
  61. HorizontalScrollBarVisibility = ScrollBarVisibility.Auto,
  62. HorizontalAlignment = HorizontalAlignment.Center,
  63. VerticalAlignment = VerticalAlignment.Center,
  64. Content = textBlock = new TextBlock
  65. {
  66. Width = 400,
  67. Height = 400,
  68. Text = "Hello World!",
  69. },
  70. }
  71. };
  72. window.Resources["ScrollBarThickness"] = 10.0;
  73. window.Show();
  74. Assert.Equal(new Size(800, 600), window.Bounds.Size);
  75. Assert.Equal(new Size(200, 200), scrollViewer.Bounds.Size);
  76. Assert.Equal(new Point(300, 200), Position(scrollViewer));
  77. Assert.Equal(new Size(400, 400), textBlock.Bounds.Size);
  78. var scrollBars = scrollViewer.GetTemplateChildren().OfType<ScrollBar>().ToList();
  79. var presenters = scrollViewer.GetTemplateChildren().OfType<ScrollContentPresenter>().ToList();
  80. Assert.Equal(2, scrollBars.Count);
  81. Assert.Single(presenters);
  82. var presenter = presenters[0];
  83. Assert.Equal(new Size(190, 190), presenter.Bounds.Size);
  84. var horzScroll = scrollBars.Single(x => x.Orientation == Orientation.Horizontal);
  85. var vertScroll = scrollBars.Single(x => x.Orientation == Orientation.Vertical);
  86. Assert.True(horzScroll.IsVisible);
  87. Assert.True(vertScroll.IsVisible);
  88. Assert.Equal(new Size(190, 10), horzScroll.Bounds.Size);
  89. Assert.Equal(new Size(10, 190), vertScroll.Bounds.Size);
  90. Assert.Equal(new Point(0, 190), Position(horzScroll));
  91. Assert.Equal(new Point(190, 0), Position(vertScroll));
  92. }
  93. }
  94. private static Point Position(IVisual v)
  95. {
  96. return v.Bounds.Position;
  97. }
  98. }
  99. }