|
|
@@ -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<Canvas>()).ObjectsCount));
|
|
|
@@ -87,6 +90,7 @@ namespace Avalonia.LeakTests
|
|
|
};
|
|
|
|
|
|
var result = run();
|
|
|
+ PurgeMoqReferences();
|
|
|
|
|
|
dotMemory.Check(memory =>
|
|
|
Assert.Equal(0, memory.GetObjects(where => where.Type.Is<Canvas>()).ObjectsCount));
|
|
|
@@ -123,6 +127,7 @@ namespace Avalonia.LeakTests
|
|
|
};
|
|
|
|
|
|
var result = run();
|
|
|
+ PurgeMoqReferences();
|
|
|
|
|
|
dotMemory.Check(memory =>
|
|
|
Assert.Equal(0, memory.GetObjects(where => where.Type.Is<TextBox>()).ObjectsCount));
|
|
|
@@ -158,6 +163,7 @@ namespace Avalonia.LeakTests
|
|
|
};
|
|
|
|
|
|
var result = run();
|
|
|
+ PurgeMoqReferences();
|
|
|
|
|
|
dotMemory.Check(memory =>
|
|
|
Assert.Equal(0, memory.GetObjects(where => where.Type.Is<TextBox>()).ObjectsCount));
|
|
|
@@ -201,6 +207,7 @@ namespace Avalonia.LeakTests
|
|
|
};
|
|
|
|
|
|
var result = run();
|
|
|
+ PurgeMoqReferences();
|
|
|
|
|
|
dotMemory.Check(memory =>
|
|
|
Assert.Equal(0, memory.GetObjects(where => where.Type.Is<TextBox>()).ObjectsCount));
|
|
|
@@ -287,25 +294,19 @@ namespace Avalonia.LeakTests
|
|
|
};
|
|
|
|
|
|
var result = run();
|
|
|
+ PurgeMoqReferences();
|
|
|
|
|
|
dotMemory.Check(memory =>
|
|
|
Assert.Equal(0, memory.GetObjects(where => where.Type.Is<TreeView>()).ObjectsCount));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private class TestTemplatedControl : TemplatedControl
|
|
|
+ private static void PurgeMoqReferences()
|
|
|
{
|
|
|
- public static readonly StyledProperty<int> IsCanvasVisibleProperty =
|
|
|
- AvaloniaProperty.Register<TestTemplatedControl, int>("IsCanvasVisible");
|
|
|
-
|
|
|
- public TestTemplatedControl()
|
|
|
- {
|
|
|
- Template = new FuncControlTemplate<TestTemplatedControl>(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<IRenderer>());
|
|
|
+ renderer.ResetCalls();
|
|
|
}
|
|
|
|
|
|
private class Node
|