CompositorInvalidationTests.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. using Avalonia.Controls;
  2. using Avalonia.Media;
  3. using Xunit;
  4. namespace Avalonia.Base.UnitTests.Rendering;
  5. public class CompositorInvalidationTests : CompositorTestsBase
  6. {
  7. [Fact]
  8. public void Control_Should_Invalidate_Own_Rect_When_Added()
  9. {
  10. using (var s = new CompositorCanvas())
  11. {
  12. var control = new Border()
  13. {
  14. Background = Brushes.Red, Width = 20, Height = 10,
  15. [Canvas.LeftProperty] = 30, [Canvas.TopProperty] = 50
  16. };
  17. s.Canvas.Children.Add(control);
  18. s.AssertRects(new Rect(30, 50, 20, 10));
  19. }
  20. }
  21. [Fact]
  22. public void Control_Should_Invalidate_Own_Rect_When_Removed()
  23. {
  24. using (var s = new CompositorCanvas())
  25. {
  26. var control = new Border()
  27. {
  28. Background = Brushes.Red, Width = 20, Height = 10,
  29. [Canvas.LeftProperty] = 30, [Canvas.TopProperty] = 50
  30. };
  31. s.Canvas.Children.Add(control);
  32. s.RunJobs();
  33. s.Events.Rects.Clear();
  34. s.Canvas.Children.Remove(control);
  35. s.AssertRects(new Rect(30, 50, 20, 10));
  36. }
  37. }
  38. [Fact]
  39. public void Control_Should_Invalidate_Both_Own_Rects_When_Moved()
  40. {
  41. using (var s = new CompositorCanvas())
  42. {
  43. var control = new Border()
  44. {
  45. Background = Brushes.Red, Width = 20, Height = 10,
  46. [Canvas.LeftProperty] = 30, [Canvas.TopProperty] = 50
  47. };
  48. s.Canvas.Children.Add(control);
  49. s.RunJobs();
  50. s.Events.Rects.Clear();
  51. control[Canvas.LeftProperty] = 55;
  52. s.AssertRects(new Rect(30, 50, 20, 10),
  53. new Rect(55, 50, 20, 10)
  54. );
  55. }
  56. }
  57. [Fact]
  58. public void Control_Should_Invalidate_Child_Rects_When_Moved()
  59. {
  60. using (var s = new CompositorCanvas())
  61. {
  62. var control = new Decorator()
  63. {
  64. [Canvas.LeftProperty] = 30, [Canvas.TopProperty] = 50,
  65. Padding = new Thickness(10),
  66. Child = new Border()
  67. {
  68. Width = 20, Height = 10,
  69. Background = Brushes.Red
  70. }
  71. };
  72. s.Canvas.Children.Add(control);
  73. s.RunJobs();
  74. s.Events.Rects.Clear();
  75. control[Canvas.LeftProperty] = 55;
  76. s.AssertRects(new Rect(40, 60, 20, 10),
  77. new Rect(65, 60, 20, 10)
  78. );
  79. }
  80. }
  81. [Fact]
  82. public void Control_Should_Invalidate_Child_Rects_When_Becomes_Invisible()
  83. {
  84. using (var s = new CompositorCanvas())
  85. {
  86. var control = new Decorator()
  87. {
  88. [Canvas.LeftProperty] = 30, [Canvas.TopProperty] = 50,
  89. Padding = new Thickness(10),
  90. Child = new Border()
  91. {
  92. Width = 20, Height = 10,
  93. Background = Brushes.Red
  94. }
  95. };
  96. s.Canvas.Children.Add(control);
  97. s.RunJobs();
  98. s.Events.Rects.Clear();
  99. control.IsVisible = false;
  100. s.AssertRects(new Rect(40, 60, 20, 10));
  101. }
  102. }
  103. }