Browse Source

Fixed leak tests.

`IRenderer` mock was keeping hold of references passed to `AddDirty` -
tried resetting the mock but references were still held, so replaced the
mock `IRenderer` with a `NullRenderer` that fixes the problem.
pull/968/head
Steven Kirk 10 years ago
parent
commit
9a015afa99
  1. 46
      tests/Avalonia.LeakTests/ControlTests.cs

46
tests/Avalonia.LeakTests/ControlTests.cs

@ -30,7 +30,7 @@ namespace Avalonia.LeakTests
[Fact] [Fact]
public void Canvas_Is_Freed() public void Canvas_Is_Freed()
{ {
using (UnitTestApplication.Start(TestServices.StyledWindow)) using (Start())
{ {
Func<Window> run = () => Func<Window> run = () =>
{ {
@ -63,7 +63,7 @@ namespace Avalonia.LeakTests
[Fact] [Fact]
public void Named_Canvas_Is_Freed() public void Named_Canvas_Is_Freed()
{ {
using (UnitTestApplication.Start(TestServices.StyledWindow)) using (Start())
{ {
Func<Window> run = () => Func<Window> run = () =>
{ {
@ -100,7 +100,7 @@ namespace Avalonia.LeakTests
[Fact] [Fact]
public void ScrollViewer_With_Content_Is_Freed() public void ScrollViewer_With_Content_Is_Freed()
{ {
using (UnitTestApplication.Start(TestServices.StyledWindow)) using (Start())
{ {
Func<Window> run = () => Func<Window> run = () =>
{ {
@ -140,7 +140,7 @@ namespace Avalonia.LeakTests
[Fact] [Fact]
public void TextBox_Is_Freed() public void TextBox_Is_Freed()
{ {
using (UnitTestApplication.Start(TestServices.StyledWindow)) using (Start())
{ {
Func<Window> run = () => Func<Window> run = () =>
{ {
@ -175,7 +175,7 @@ namespace Avalonia.LeakTests
[Fact] [Fact]
public void TextBox_With_Xaml_Binding_Is_Freed() public void TextBox_With_Xaml_Binding_Is_Freed()
{ {
using (UnitTestApplication.Start(TestServices.StyledWindow)) using (Start())
{ {
Func<Window> run = () => Func<Window> run = () =>
{ {
@ -222,7 +222,7 @@ namespace Avalonia.LeakTests
[Fact] [Fact]
public void TextBox_Class_Listeners_Are_Freed() public void TextBox_Class_Listeners_Are_Freed()
{ {
using (UnitTestApplication.Start(TestServices.StyledWindow)) using (Start())
{ {
TextBox textBox; TextBox textBox;
@ -258,7 +258,7 @@ namespace Avalonia.LeakTests
[Fact] [Fact]
public void TreeView_Is_Freed() public void TreeView_Is_Freed()
{ {
using (UnitTestApplication.Start(TestServices.StyledWindow)) using (Start())
{ {
Func<Window> run = () => Func<Window> run = () =>
{ {
@ -311,7 +311,7 @@ namespace Avalonia.LeakTests
[Fact] [Fact]
public void RendererIsDisposed() public void RendererIsDisposed()
{ {
using (UnitTestApplication.Start(TestServices.StyledWindow)) using (Start())
{ {
var renderer = new Mock<IRenderer>(); var renderer = new Mock<IRenderer>();
renderer.Setup(x => x.Dispose()); renderer.Setup(x => x.Dispose());
@ -334,10 +334,40 @@ namespace Avalonia.LeakTests
} }
} }
private IDisposable Start()
{
var services = TestServices.StyledWindow.With(renderer: (root, loop) => new NullRenderer());
return UnitTestApplication.Start(services);
}
private class Node private class Node
{ {
public string Name { get; set; } public string Name { get; set; }
public IEnumerable<Node> Children { get; set; } public IEnumerable<Node> Children { get; set; }
} }
private class NullRenderer : IRenderer
{
public bool DrawFps { get; set; }
public bool DrawDirtyRects { get; set; }
public void AddDirty(IVisual visual)
{
}
public void Dispose()
{
}
public IEnumerable<IVisual> HitTest(Point p, Func<IVisual, bool> filter) => null;
public void Paint(Rect rect)
{
}
public void Resized(Size size)
{
}
}
} }
} }

Loading…
Cancel
Save