mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2026-01-01 00:46:39 +01:00
Fixes #3692++ - Rearchitects drivers (#3837)
This commit is contained in:
76
UnitTests/ConsoleDrivers/V2/WindowSizeMonitorTests.cs
Normal file
76
UnitTests/ConsoleDrivers/V2/WindowSizeMonitorTests.cs
Normal file
@@ -0,0 +1,76 @@
|
||||
using Moq;
|
||||
|
||||
namespace UnitTests.ConsoleDrivers.V2;
|
||||
public class WindowSizeMonitorTests
|
||||
{
|
||||
[Fact]
|
||||
public void TestWindowSizeMonitor_RaisesEventWhenChanges ()
|
||||
{
|
||||
var consoleOutput = new Mock<IConsoleOutput> ();
|
||||
|
||||
var queue = new Queue<Size>(new []{
|
||||
new Size (30, 20),
|
||||
new Size (20, 20)
|
||||
|
||||
});
|
||||
|
||||
consoleOutput.Setup (m => m.GetWindowSize ())
|
||||
.Returns (queue.Dequeue);
|
||||
|
||||
var outputBuffer = Mock.Of<IOutputBuffer> ();
|
||||
|
||||
var monitor = new WindowSizeMonitor (consoleOutput.Object, outputBuffer);
|
||||
|
||||
var result = new List<SizeChangedEventArgs> ();
|
||||
monitor.SizeChanging += (s, e) => { result.Add (e);};
|
||||
|
||||
Assert.Empty (result);
|
||||
monitor.Poll ();
|
||||
|
||||
Assert.Single (result);
|
||||
Assert.Equal (new Size (30,20),result [0].Size);
|
||||
|
||||
monitor.Poll ();
|
||||
|
||||
Assert.Equal (2,result.Count);
|
||||
Assert.Equal (new Size (30, 20), result [0].Size);
|
||||
Assert.Equal (new Size (20, 20), result [1].Size);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestWindowSizeMonitor_DoesNotRaiseEventWhen_NoChanges ()
|
||||
{
|
||||
var consoleOutput = new Mock<IConsoleOutput> ();
|
||||
|
||||
var queue = new Queue<Size> (new []{
|
||||
new Size (30, 20),
|
||||
new Size (30, 20),
|
||||
});
|
||||
|
||||
consoleOutput.Setup (m => m.GetWindowSize ())
|
||||
.Returns (queue.Dequeue);
|
||||
|
||||
var outputBuffer = Mock.Of<IOutputBuffer> ();
|
||||
|
||||
var monitor = new WindowSizeMonitor (consoleOutput.Object, outputBuffer);
|
||||
|
||||
var result = new List<SizeChangedEventArgs> ();
|
||||
monitor.SizeChanging += (s, e) => { result.Add (e); };
|
||||
|
||||
// First poll always raises event because going from unknown size i.e. 0,0
|
||||
Assert.Empty (result);
|
||||
monitor.Poll ();
|
||||
|
||||
Assert.Single (result);
|
||||
Assert.Equal (new Size (30, 20), result [0].Size);
|
||||
|
||||
// No change
|
||||
monitor.Poll ();
|
||||
|
||||
Assert.Single (result);
|
||||
Assert.Equal (new Size (30, 20), result [0].Size);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user