WindowSizeMonitorTests.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using Moq;
  2. namespace UnitTests.ConsoleDrivers.V2;
  3. public class WindowSizeMonitorTests
  4. {
  5. public WindowSizeMonitorTests ()
  6. {
  7. ConsoleDriver.RunningUnitTests = false;
  8. }
  9. [Fact]
  10. public void TestWindowSizeMonitor_RaisesEventWhenChanges ()
  11. {
  12. var consoleOutput = new Mock<IConsoleOutput> ();
  13. var queue = new Queue<Size>(new []{
  14. new Size (30, 20),
  15. new Size (20, 20)
  16. });
  17. consoleOutput.Setup (m => m.GetWindowSize ())
  18. .Returns (queue.Dequeue);
  19. var outputBuffer = Mock.Of<IOutputBuffer> ();
  20. var monitor = new WindowSizeMonitor (consoleOutput.Object, outputBuffer);
  21. var result = new List<SizeChangedEventArgs> ();
  22. monitor.SizeChanging += (s, e) => { result.Add (e);};
  23. Assert.Empty (result);
  24. monitor.Poll ();
  25. Assert.Single (result);
  26. Assert.Equal (new Size (30,20),result [0].Size);
  27. monitor.Poll ();
  28. Assert.Equal (2,result.Count);
  29. Assert.Equal (new Size (30, 20), result [0].Size);
  30. Assert.Equal (new Size (20, 20), result [1].Size);
  31. }
  32. [Fact]
  33. public void TestWindowSizeMonitor_DoesNotRaiseEventWhen_NoChanges ()
  34. {
  35. var consoleOutput = new Mock<IConsoleOutput> ();
  36. var queue = new Queue<Size> (new []{
  37. new Size (30, 20),
  38. new Size (30, 20),
  39. });
  40. consoleOutput.Setup (m => m.GetWindowSize ())
  41. .Returns (queue.Dequeue);
  42. var outputBuffer = Mock.Of<IOutputBuffer> ();
  43. var monitor = new WindowSizeMonitor (consoleOutput.Object, outputBuffer);
  44. var result = new List<SizeChangedEventArgs> ();
  45. monitor.SizeChanging += (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. }