diff --git a/tests/Avalonia.LeakTests/ControlTests.cs b/tests/Avalonia.LeakTests/ControlTests.cs index 99a7bbbcd2..1e257a698c 100644 --- a/tests/Avalonia.LeakTests/ControlTests.cs +++ b/tests/Avalonia.LeakTests/ControlTests.cs @@ -11,9 +11,11 @@ using Avalonia.Controls.Primitives; using Avalonia.Controls.Templates; using Avalonia.Diagnostics; using Avalonia.Layout; +using Avalonia.Rendering; using Avalonia.Styling; using Avalonia.UnitTests; using Avalonia.VisualTree; +using Moq; using Xunit; using Xunit.Abstractions; @@ -52,6 +54,7 @@ namespace Avalonia.LeakTests }; var result = run(); + PurgeMoqReferences(); dotMemory.Check(memory => Assert.Equal(0, memory.GetObjects(where => where.Type.Is()).ObjectsCount)); @@ -87,6 +90,7 @@ namespace Avalonia.LeakTests }; var result = run(); + PurgeMoqReferences(); dotMemory.Check(memory => Assert.Equal(0, memory.GetObjects(where => where.Type.Is()).ObjectsCount)); @@ -123,6 +127,7 @@ namespace Avalonia.LeakTests }; var result = run(); + PurgeMoqReferences(); dotMemory.Check(memory => Assert.Equal(0, memory.GetObjects(where => where.Type.Is()).ObjectsCount)); @@ -158,6 +163,7 @@ namespace Avalonia.LeakTests }; var result = run(); + PurgeMoqReferences(); dotMemory.Check(memory => Assert.Equal(0, memory.GetObjects(where => where.Type.Is()).ObjectsCount)); @@ -201,6 +207,7 @@ namespace Avalonia.LeakTests }; var result = run(); + PurgeMoqReferences(); dotMemory.Check(memory => Assert.Equal(0, memory.GetObjects(where => where.Type.Is()).ObjectsCount)); @@ -287,25 +294,19 @@ namespace Avalonia.LeakTests }; var result = run(); + PurgeMoqReferences(); dotMemory.Check(memory => Assert.Equal(0, memory.GetObjects(where => where.Type.Is()).ObjectsCount)); } } - private class TestTemplatedControl : TemplatedControl + private static void PurgeMoqReferences() { - public static readonly StyledProperty IsCanvasVisibleProperty = - AvaloniaProperty.Register("IsCanvasVisible"); - - public TestTemplatedControl() - { - Template = new FuncControlTemplate(parent => - new Canvas - { - [~IsVisibleProperty] = parent[~IsCanvasVisibleProperty] - }); - } + // Moq holds onto references in its mock of IRenderer in case we want to check if a method has been called; + // clear these. + var renderer = Mock.Get(AvaloniaLocator.Current.GetService()); + renderer.ResetCalls(); } private class Node