WindowSizeMonitorTests.cs 2.1 KB

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