FrameTests.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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.Equal (Rectangle.Empty, v.Frame);
  36. v.Dispose ();
  37. v = new View { Frame = frame };
  38. Assert.Equal (frame, v.Frame);
  39. v.Frame = newFrame;
  40. Assert.Equal (newFrame, v.Frame);
  41. Assert.Equal (
  42. new Rectangle (0, 0, newFrame.Width, newFrame.Height),
  43. v.Viewport
  44. ); // With Absolute Viewport *is* deterministic before Layout
  45. Assert.Equal (Pos.Absolute (1), v.X);
  46. Assert.Equal (Pos.Absolute (2), v.Y);
  47. Assert.Equal (Dim.Absolute (30), v.Width);
  48. Assert.Equal (Dim.Absolute (40), v.Height);
  49. v.Dispose ();
  50. v = new View { X = frame.X, Y = frame.Y, Text = "v" };
  51. v.Frame = newFrame;
  52. Assert.Equal (newFrame, v.Frame);
  53. Assert.Equal (
  54. new Rectangle (0, 0, newFrame.Width, newFrame.Height),
  55. v.Viewport
  56. ); // With Absolute Viewport *is* deterministic before Layout
  57. Assert.Equal (Pos.Absolute (1), v.X);
  58. Assert.Equal (Pos.Absolute (2), v.Y);
  59. Assert.Equal (Dim.Absolute (30), v.Width);
  60. Assert.Equal (Dim.Absolute (40), v.Height);
  61. v.Dispose ();
  62. newFrame = new Rectangle (10, 20, 30, 40);
  63. v = new View { Frame = frame };
  64. v.Frame = newFrame;
  65. Assert.Equal (newFrame, v.Frame);
  66. Assert.Equal (
  67. new Rectangle (0, 0, newFrame.Width, newFrame.Height),
  68. v.Viewport
  69. ); // With Absolute Viewport *is* deterministic before Layout
  70. Assert.Equal (Pos.Absolute (10), v.X);
  71. Assert.Equal (Pos.Absolute (20), v.Y);
  72. Assert.Equal (Dim.Absolute (30), v.Width);
  73. Assert.Equal (Dim.Absolute (40), v.Height);
  74. v.Dispose ();
  75. v = new View { X = frame.X, Y = frame.Y, Text = "v" };
  76. v.Frame = newFrame;
  77. Assert.Equal (newFrame, v.Frame);
  78. Assert.Equal (
  79. new Rectangle (0, 0, newFrame.Width, newFrame.Height),
  80. v.Viewport
  81. ); // With Absolute Viewport *is* deterministic before Layout
  82. Assert.Equal (Pos.Absolute (10), v.X);
  83. Assert.Equal (Pos.Absolute (20), v.Y);
  84. Assert.Equal (Dim.Absolute (30), v.Width);
  85. Assert.Equal (Dim.Absolute (40), v.Height);
  86. v.Dispose ();
  87. }
  88. }