AdornmentTests.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. using System;
  2. using Xunit;
  3. using Xunit.Abstractions;
  4. namespace Terminal.Gui.ViewTests;
  5. public class AdornmentTests {
  6. readonly ITestOutputHelper _output;
  7. public AdornmentTests (ITestOutputHelper output)
  8. {
  9. _output = output;
  10. }
  11. [Fact]
  12. public void Setting_SuperView_Throws ()
  13. {
  14. var adornment = new Adornment (null);
  15. Assert.Throws<NotImplementedException> (() => adornment.SuperView = new View ());
  16. }
  17. [Fact]
  18. public void Setting_SuperViewRendersLineCanvas_Throws ()
  19. {
  20. var adornment = new Adornment (null);
  21. Assert.Throws<NotImplementedException> (() => adornment.SuperViewRendersLineCanvas = true);
  22. }
  23. [Fact]
  24. public void Setting_Thickness_Changes_Parent_Bounds ()
  25. {
  26. var parent = new View () {
  27. Width = 10,
  28. Height = 10
  29. };
  30. parent.BeginInit ();
  31. parent.EndInit ();
  32. Assert.Equal (new Rect (0, 0, 10, 10), parent.Frame);
  33. Assert.Equal (new Rect (0, 0, 10, 10), parent.Bounds);
  34. parent.Margin.Thickness = new Thickness (1);
  35. Assert.Equal (new Rect (0, 0, 10, 10), parent.Frame);
  36. Assert.Equal (new Rect (0, 0, 8, 8), parent.Bounds);
  37. }
  38. [Fact]
  39. public void Setting_Thickness_Raises_ThicknessChanged ()
  40. {
  41. var adornment = new Adornment (null);
  42. var super = new View ();
  43. var raised = false;
  44. adornment.ThicknessChanged += (s, e) => {
  45. raised = true;
  46. Assert.Equal (Thickness.Empty, e.PreviousThickness);
  47. Assert.Equal (new Thickness (1, 2, 3, 4), e.Thickness);
  48. Assert.Equal (new Thickness (1, 2, 3, 4), adornment.Thickness);
  49. };
  50. adornment.Thickness = new Thickness (1, 2, 3, 4);
  51. Assert.True (raised);
  52. }
  53. [Fact]
  54. public void Setting_Bounds_Throws ()
  55. {
  56. var adornment = new Adornment (null);
  57. Assert.Throws<InvalidOperationException> (() => adornment.Bounds = new Rect (1, 2, 3, 4));
  58. }
  59. [Fact]
  60. public void GetAdornmentsThickness ()
  61. {
  62. var view = new View ();
  63. Assert.Equal (Thickness.Empty, view.GetAdornmentsThickness ());
  64. view.Margin.Thickness = new Thickness (1);
  65. Assert.Equal (new Thickness (1), view.GetAdornmentsThickness ());
  66. view.Border.Thickness = new Thickness (1);
  67. Assert.Equal (new Thickness (2), view.GetAdornmentsThickness ());
  68. view.Padding.Thickness = new Thickness (1);
  69. Assert.Equal (new Thickness (3), view.GetAdornmentsThickness ());
  70. view.Padding.Thickness = new Thickness (2);
  71. Assert.Equal (new Thickness (4), view.GetAdornmentsThickness ());
  72. view.Padding.Thickness = new Thickness (1, 2, 3, 4);
  73. Assert.Equal (new Thickness (3, 4, 5, 6), view.GetAdornmentsThickness ());
  74. view.Margin.Thickness = new Thickness (1, 2, 3, 4);
  75. Assert.Equal (new Thickness (3, 5, 7, 9), view.GetAdornmentsThickness ());
  76. view.Dispose ();
  77. }
  78. [Fact]
  79. public void FrameToScreen_Uses_Parent_Not_SuperView ()
  80. {
  81. var parent = new View () {
  82. X = 1,
  83. Y = 2,
  84. Width = 10,
  85. Height = 10
  86. };
  87. parent.BeginInit ();
  88. parent.EndInit ();
  89. Assert.Equal (new Rect (1, 2, 10, 10), parent.Frame);
  90. Assert.Equal (new Rect (0, 0, 10, 10), parent.Bounds);
  91. Assert.Equal (new Rect (0, 0, 10, 10), parent.Margin.Frame);
  92. Assert.Equal (new Rect (0, 0, 10, 10), parent.Margin.Bounds);
  93. Assert.Null (parent.Margin.SuperView);
  94. Assert.Equal (new Rect (1, 2, 10, 10), parent.Margin.FrameToScreen ());
  95. }
  96. [Fact]
  97. public void BoundsToScreen_Uses_Parent_Not_SuperView ()
  98. {
  99. var parent = new View () {
  100. X = 1,
  101. Y = 2,
  102. Width = 10,
  103. Height = 10
  104. };
  105. parent.BeginInit ();
  106. parent.EndInit ();
  107. Assert.Equal (new Rect (1, 2, 10, 10), parent.Frame);
  108. Assert.Equal (new Rect (0, 0, 10, 10), parent.Bounds);
  109. Assert.Equal (new Rect (0, 0, 10, 10), parent.Margin.Frame);
  110. Assert.Equal (new Rect (0, 0, 10, 10), parent.Margin.Bounds);
  111. Assert.Null (parent.Margin.SuperView);
  112. var boundsAsScreen = parent.Margin.BoundsToScreen (new Rect (1, 2, 5, 5));
  113. Assert.Equal (new Rect (2, 4, 5, 5), boundsAsScreen);
  114. }
  115. }