Added unit tests for Viewport/FrameChanged events. Fixed bugs.

This commit is contained in:
Tig
2024-11-16 11:25:53 -07:00
parent ddce5a4f78
commit 49e0cd8ccd
4 changed files with 153 additions and 3 deletions

View File

@@ -259,4 +259,55 @@ public class FrameTests (ITestOutputHelper output)
Assert.Equal (Dim.Absolute (40), v.Height);
v.Dispose ();
}
private class TestFrameEventsView : View
{
public int OnFrameChangedCallCount { get; private set; }
public int FrameChangedEventCallCount { get; private set; }
public TestFrameEventsView ()
{
FrameChanged += (sender, args) => FrameChangedEventCallCount++;
}
protected override void OnFrameChanged (in Rectangle frame)
{
OnFrameChangedCallCount++;
base.OnFrameChanged (frame);
}
}
[Fact]
public void OnFrameChanged_Called_When_Frame_Changes ()
{
// Arrange
var view = new TestFrameEventsView ();
var initialFrame = new Rectangle (0, 0, 10, 10);
var newFrame = new Rectangle (0, 0, 20, 20);
view.Frame = initialFrame;
Assert.Equal (1, view.OnFrameChangedCallCount);
// Act
view.Frame = newFrame;
// Assert
Assert.Equal (2, view.OnFrameChangedCallCount);
}
[Fact]
public void FrameChanged_Event_Raised_When_Frame_Changes ()
{
// Arrange
var view = new TestFrameEventsView ();
var initialFrame = new Rectangle (0, 0, 10, 10);
var newFrame = new Rectangle (0, 0, 20, 20);
view.Frame = initialFrame;
Assert.Equal (1, view.FrameChangedEventCallCount);
// Act
view.Frame = newFrame;
// Assert
Assert.Equal (2, view.FrameChangedEventCallCount);
}
}

View File

@@ -387,6 +387,93 @@ public class ViewportTests (ITestOutputHelper output)
Assert.NotEqual (view.Viewport.Size, view.GetContentSize ());
}
private class TestViewportEventsView : View
{
public int OnViewportChangedCallCount { get; private set; }
public int ViewportChangedEventCallCount { get; private set; }
public TestViewportEventsView ()
{
ViewportChanged += (sender, args) => ViewportChangedEventCallCount++;
}
protected override void OnViewportChanged (DrawEventArgs e)
{
OnViewportChangedCallCount++;
base.OnViewportChanged (e);
}
}
[Fact]
public void OnViewportChanged_Called_When_Viewport_Changes ()
{
// Arrange
var view = new TestViewportEventsView ();
var initialViewport = new Rectangle (0, 0, 10, 10);
var newViewport = new Rectangle (0, 0, 20, 20);
Assert.Equal (0, view.OnViewportChangedCallCount);
view.Viewport = initialViewport;
Assert.Equal (1, view.OnViewportChangedCallCount);
// Act
view.Viewport = newViewport;
// Assert
Assert.Equal (2, view.OnViewportChangedCallCount);
}
[Fact]
public void ViewportChanged_Event_Raised_When_Viewport_Changes ()
{
// Arrange
var view = new TestViewportEventsView ();
var initialViewport = new Rectangle (0, 0, 10, 10);
var newViewport = new Rectangle (0, 0, 20, 20);
view.Viewport = initialViewport;
Assert.Equal (1, view.ViewportChangedEventCallCount);
// Act
view.Viewport = newViewport;
// Assert
Assert.Equal (2, view.ViewportChangedEventCallCount);
}
[Fact]
public void OnViewportChanged_Called_When_Frame_Changes ()
{
// Arrange
var view = new TestViewportEventsView ();
var initialFrame = new Rectangle (0, 0, 10, 10);
var newFrame = new Rectangle (0, 0, 20, 20);
Assert.Equal (0, view.OnViewportChangedCallCount);
view.Frame = initialFrame;
Assert.Equal (1, view.OnViewportChangedCallCount);
// Act
view.Frame = newFrame;
// Assert
Assert.Equal (2, view.OnViewportChangedCallCount);
}
[Fact]
public void ViewportChanged_Event_Raised_When_Frame_Changes ()
{
// Arrange
var view = new TestViewportEventsView ();
var initialFrame = new Rectangle (0, 0, 10, 10);
var newFrame = new Rectangle (0, 0, 20, 20);
view.Frame = initialFrame;
Assert.Equal (1, view.ViewportChangedEventCallCount);
// Act
view.Frame = newFrame;
// Assert
Assert.Equal (2, view.ViewportChangedEventCallCount);
}
//[Theory]
//[InlineData (0, 0, true)]
//[InlineData (-1, 0, true)]