BasicFluentAssertionTests.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. using Terminal.Gui;
  2. using TerminalGuiFluentTesting;
  3. using Xunit.Abstractions;
  4. namespace IntegrationTests.FluentTests;
  5. public class BasicFluentAssertionTests
  6. {
  7. private readonly TextWriter _out;
  8. public BasicFluentAssertionTests (ITestOutputHelper outputHelper) { _out = new TestOutputWriter (outputHelper); }
  9. [Theory]
  10. [ClassData (typeof (V2TestDrivers))]
  11. public void GuiTestContext_StartsAndStopsWithoutError (V2TestDriver d)
  12. {
  13. using GuiTestContext context = With.A<Window> (40, 10,d);
  14. // No actual assertions are needed — if no exceptions are thrown, it's working
  15. context.Stop ();
  16. }
  17. [Theory]
  18. [ClassData (typeof (V2TestDrivers))]
  19. public void GuiTestContext_ForgotToStop (V2TestDriver d)
  20. {
  21. using GuiTestContext context = With.A<Window> (40, 10, d);
  22. }
  23. [Theory]
  24. [ClassData (typeof (V2TestDrivers))]
  25. public void TestWindowsResize (V2TestDriver d)
  26. {
  27. var lbl = new Label
  28. {
  29. Width = Dim.Fill ()
  30. };
  31. using GuiTestContext c = With.A<Window> (40, 10, d)
  32. .Add (lbl)
  33. .Then (() => Assert.Equal (38, lbl.Frame.Width)) // Window has 2 border
  34. .ResizeConsole (20, 20)
  35. .Then (() => Assert.Equal (18, lbl.Frame.Width))
  36. .WriteOutLogs (_out)
  37. .Stop ();
  38. }
  39. [Theory]
  40. [ClassData (typeof (V2TestDrivers))]
  41. public void ContextMenu_CrashesOnRight (V2TestDriver d)
  42. {
  43. var clicked = false;
  44. MenuItemv2 [] menuItems = [new ("_New File", string.Empty, () => { clicked = true; })];
  45. using GuiTestContext c = With.A<Window> (40, 10, d)
  46. .WithContextMenu (new PopoverMenu(menuItems))
  47. .ScreenShot ("Before open menu", _out)
  48. // Click in main area inside border
  49. .RightClick (1, 1)
  50. .ScreenShot ("After open menu", _out)
  51. .LeftClick (2, 2)
  52. .Stop ()
  53. .WriteOutLogs (_out);
  54. Assert.True (clicked);
  55. }
  56. [Theory]
  57. [ClassData (typeof (V2TestDrivers))]
  58. public void ContextMenu_OpenSubmenu (V2TestDriver d)
  59. {
  60. var clicked = false;
  61. MenuItemv2 [] menuItems = [
  62. new ("One", "", null),
  63. new ("Two", "", null),
  64. new ("Three", "", null),
  65. new ("Four", "", new (
  66. [
  67. new ("SubMenu1", "", null),
  68. new ("SubMenu2", "", ()=>clicked=true),
  69. new ("SubMenu3", "", null),
  70. new ("SubMenu4", "", null),
  71. new ("SubMenu5", "", null),
  72. new ("SubMenu6", "", null),
  73. new ("SubMenu7", "", null)
  74. ])),
  75. new ("Five", "", null),
  76. new ("Six", "", null)
  77. ];
  78. using GuiTestContext c = With.A<Window> (40, 10,d)
  79. .WithContextMenu (new PopoverMenu (menuItems))
  80. .ScreenShot ("Before open menu", _out)
  81. // Click in main area inside border
  82. .RightClick (1, 1)
  83. .ScreenShot ("After open menu", _out)
  84. .Down ()
  85. .Down ()
  86. .Down ()
  87. .Right()
  88. .ScreenShot ("After open submenu", _out)
  89. .Down ()
  90. .Enter ()
  91. .ScreenShot ("Menu should be closed after selecting", _out)
  92. .Stop ()
  93. .WriteOutLogs (_out);
  94. Assert.True (clicked);
  95. }
  96. }