FrameTests.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. using Xunit.Abstractions;
  2. namespace Terminal.Gui.LayoutTests;
  3. public class FrameTests (ITestOutputHelper output)
  4. {
  5. private readonly ITestOutputHelper _output = output;
  6. [Fact]
  7. public void Frame_Empty_Default ()
  8. {
  9. View view = new ();
  10. Assert.Equal(Rectangle.Empty, view.Frame);
  11. view.BeginInit();
  12. view.EndInit();
  13. Assert.Equal (Rectangle.Empty, view.Frame);
  14. }
  15. [Fact]
  16. public void Frame_Set_Sets ()
  17. {
  18. Rectangle frame = new (1, 2, 3, 4);
  19. View view = new ();
  20. Assert.Equal (Rectangle.Empty, view.Frame);
  21. view.BeginInit ();
  22. view.EndInit ();
  23. view.Frame = frame;
  24. Assert.Equal (frame, view.Frame);
  25. }
  26. // Moved this test from AbsoluteLayoutTests
  27. // TODO: Refactor as Theory
  28. [Fact]
  29. [TestRespondersDisposed]
  30. public void Frame_Set ()
  31. {
  32. var frame = new Rectangle (1, 2, 3, 4);
  33. var newFrame = new Rectangle (1, 2, 30, 40);
  34. var v = new View ();
  35. Assert.True (v.LayoutStyle == LayoutStyle.Absolute);
  36. v.Dispose ();
  37. v = new View { Frame = frame };
  38. Assert.True (v.LayoutStyle == LayoutStyle.Absolute);
  39. v.Frame = newFrame;
  40. Assert.True (v.LayoutStyle == LayoutStyle.Absolute);
  41. Assert.Equal (newFrame, v.Frame);
  42. Assert.Equal (
  43. new Rectangle (0, 0, newFrame.Width, newFrame.Height),
  44. v.Viewport
  45. ); // With Absolute Viewport *is* deterministic before Layout
  46. Assert.Equal (Pos.Absolute (1), v.X);
  47. Assert.Equal (Pos.Absolute (2), v.Y);
  48. Assert.Equal (Dim.Absolute (30), v.Width);
  49. Assert.Equal (Dim.Absolute (40), v.Height);
  50. v.Dispose ();
  51. v = new View { X = frame.X, Y = frame.Y, Text = "v" };
  52. v.Frame = newFrame;
  53. Assert.True (v.LayoutStyle == LayoutStyle.Absolute);
  54. Assert.Equal (newFrame, v.Frame);
  55. Assert.Equal (
  56. new Rectangle (0, 0, newFrame.Width, newFrame.Height),
  57. v.Viewport
  58. ); // With Absolute Viewport *is* deterministic before Layout
  59. Assert.Equal (Pos.Absolute (1), v.X);
  60. Assert.Equal (Pos.Absolute (2), v.Y);
  61. Assert.Equal (Dim.Absolute (30), v.Width);
  62. Assert.Equal (Dim.Absolute (40), v.Height);
  63. v.Dispose ();
  64. newFrame = new Rectangle (10, 20, 30, 40);
  65. v = new View { Frame = frame };
  66. v.Frame = newFrame;
  67. Assert.True (v.LayoutStyle == LayoutStyle.Absolute);
  68. Assert.Equal (newFrame, v.Frame);
  69. Assert.Equal (
  70. new Rectangle (0, 0, newFrame.Width, newFrame.Height),
  71. v.Viewport
  72. ); // With Absolute Viewport *is* deterministic before Layout
  73. Assert.Equal (Pos.Absolute (10), v.X);
  74. Assert.Equal (Pos.Absolute (20), v.Y);
  75. Assert.Equal (Dim.Absolute (30), v.Width);
  76. Assert.Equal (Dim.Absolute (40), v.Height);
  77. v.Dispose ();
  78. v = new View { X = frame.X, Y = frame.Y, Text = "v" };
  79. v.Frame = newFrame;
  80. Assert.True (v.LayoutStyle == LayoutStyle.Absolute);
  81. Assert.Equal (newFrame, v.Frame);
  82. Assert.Equal (
  83. new Rectangle (0, 0, newFrame.Width, newFrame.Height),
  84. v.Viewport
  85. ); // With Absolute Viewport *is* deterministic before Layout
  86. Assert.Equal (Pos.Absolute (10), v.X);
  87. Assert.Equal (Pos.Absolute (20), v.Y);
  88. Assert.Equal (Dim.Absolute (30), v.Width);
  89. Assert.Equal (Dim.Absolute (40), v.Height);
  90. v.Dispose ();
  91. }
  92. }