WindowSizeMonitorTests.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using Moq;
  2. namespace UnitTests.DriverTests;
  3. public class WindowSizeMonitorTests
  4. {
  5. public WindowSizeMonitorTests () { ConsoleDriver.RunningUnitTests = false; }
  6. [Fact]
  7. public void TestWindowSizeMonitor_RaisesEventWhenChanges ()
  8. {
  9. Mock<IConsoleOutput> consoleOutput = new ();
  10. Queue<Size> queue = new (
  11. [
  12. new (30, 20),
  13. new (20, 20)
  14. ]);
  15. consoleOutput.Setup (m => m.GetSize ())
  16. .Returns (queue.Dequeue);
  17. var outputBuffer = Mock.Of<IOutputBuffer> ();
  18. var monitor = new ConsoleSizeMonitor (consoleOutput.Object, outputBuffer);
  19. List<SizeChangedEventArgs> result = new ();
  20. monitor.SizeChanged += (s, e) => { result.Add (e); };
  21. Assert.Empty (result);
  22. monitor.Poll ();
  23. Assert.Single (result);
  24. Assert.Equal (new Size (30, 20), result [0].Size);
  25. monitor.Poll ();
  26. Assert.Equal (2, result.Count);
  27. Assert.Equal (new Size (30, 20), result [0].Size);
  28. Assert.Equal (new Size (20, 20), result [1].Size);
  29. }
  30. [Fact]
  31. public void TestWindowSizeMonitor_DoesNotRaiseEventWhen_NoChanges ()
  32. {
  33. Mock<IConsoleOutput> consoleOutput = new ();
  34. Queue<Size> queue = new (
  35. new []
  36. {
  37. new Size (30, 20),
  38. new Size (30, 20)
  39. });
  40. consoleOutput.Setup (m => m.GetSize ())
  41. .Returns (queue.Dequeue);
  42. var outputBuffer = Mock.Of<IOutputBuffer> ();
  43. var monitor = new ConsoleSizeMonitor (consoleOutput.Object, outputBuffer);
  44. List<SizeChangedEventArgs> result = new ();
  45. monitor.SizeChanged += (s, e) => { result.Add (e); };
  46. // First poll always raises event because going from unknown size i.e. 0,0
  47. Assert.Empty (result);
  48. monitor.Poll ();
  49. Assert.Single (result);
  50. Assert.Equal (new Size (30, 20), result [0].Size);
  51. // No change
  52. monitor.Poll ();
  53. Assert.Single (result);
  54. Assert.Equal (new Size (30, 20), result [0].Size);
  55. }
  56. }