WindowSizeMonitorTests.cs 2.0 KB

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