BasicFluentAssertionTests.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using System.Text;
  2. using Terminal.Gui;
  3. using TerminalGuiFluentTesting;
  4. using Xunit.Abstractions;
  5. namespace IntegrationTests.FluentTests;
  6. public class BasicFluentAssertionTests
  7. {
  8. private readonly TextWriter _out;
  9. public class TestOutputWriter : TextWriter
  10. {
  11. private readonly ITestOutputHelper _output;
  12. public TestOutputWriter (ITestOutputHelper output)
  13. {
  14. _output = output;
  15. }
  16. public override void WriteLine (string? value)
  17. {
  18. _output.WriteLine (value ?? string.Empty);
  19. }
  20. public override Encoding Encoding => Encoding.UTF8;
  21. }
  22. public BasicFluentAssertionTests (ITestOutputHelper outputHelper) { _out = new TestOutputWriter(outputHelper); }
  23. [Fact]
  24. public void GuiTestContext_StartsAndStopsWithoutError ()
  25. {
  26. using var context = With.A<Window> (40, 10);
  27. // No actual assertions are needed — if no exceptions are thrown, it's working
  28. context.Stop ();
  29. }
  30. [Fact]
  31. public void GuiTestContext_ForgotToStop ()
  32. {
  33. using var context = With.A<Window> (40, 10);
  34. }
  35. [Fact]
  36. public void TestWindowsResize ()
  37. {
  38. var lbl = new Label ()
  39. {
  40. Width = Dim.Fill ()
  41. };
  42. using var c = With.A<Window> (40, 10)
  43. .Add (lbl )
  44. .Then (()=>Assert.Equal(lbl.Frame.Width,38)) // Window has 2 border
  45. .ResizeConsole (20,20)
  46. .Then (() => Assert.Equal(lbl.Frame.Width, 18))
  47. .Stop ();
  48. }
  49. [Fact]
  50. public void ContextMenu_CrashesOnRight ()
  51. {
  52. var clicked = false;
  53. var ctx = new ContextMenu ();
  54. var menuItems = new MenuBarItem (
  55. [
  56. new ("_New File", string.Empty, () => { clicked = true; })
  57. ]
  58. );
  59. using var c = With.A<Window> (40, 10)
  60. .WithContextMenu(ctx,menuItems)
  61. // Click in main area inside border
  62. .RightClick(1,1)
  63. .ScreenShot ("After open menu",_out)
  64. .LeftClick (3, 3)
  65. .Stop ();
  66. Assert.True (clicked);
  67. }
  68. }