AdornmentTests.cs 4.4 KB

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