diff --git a/src/Headless/Avalonia.Headless.NUnit/Avalonia.Headless.NUnit.csproj b/src/Headless/Avalonia.Headless.NUnit/Avalonia.Headless.NUnit.csproj
index 09b72961e6..e69562e55a 100644
--- a/src/Headless/Avalonia.Headless.NUnit/Avalonia.Headless.NUnit.csproj
+++ b/src/Headless/Avalonia.Headless.NUnit/Avalonia.Headless.NUnit.csproj
@@ -5,8 +5,7 @@
-
-
+
diff --git a/tests/Avalonia.Headless.NUnit.PerAssembly.UnitTests/Avalonia.Headless.NUnit.PerAssembly.UnitTests.csproj b/tests/Avalonia.Headless.NUnit.PerAssembly.UnitTests/Avalonia.Headless.NUnit.PerAssembly.UnitTests.csproj
index eca602cf16..2eec8e6e0c 100644
--- a/tests/Avalonia.Headless.NUnit.PerAssembly.UnitTests/Avalonia.Headless.NUnit.PerAssembly.UnitTests.csproj
+++ b/tests/Avalonia.Headless.NUnit.PerAssembly.UnitTests/Avalonia.Headless.NUnit.PerAssembly.UnitTests.csproj
@@ -12,8 +12,8 @@
-
-
+
+
diff --git a/tests/Avalonia.Headless.NUnit.PerTest.UnitTests/Avalonia.Headless.NUnit.PerTest.UnitTests.csproj b/tests/Avalonia.Headless.NUnit.PerTest.UnitTests/Avalonia.Headless.NUnit.PerTest.UnitTests.csproj
index eca602cf16..2eec8e6e0c 100644
--- a/tests/Avalonia.Headless.NUnit.PerTest.UnitTests/Avalonia.Headless.NUnit.PerTest.UnitTests.csproj
+++ b/tests/Avalonia.Headless.NUnit.PerTest.UnitTests/Avalonia.Headless.NUnit.PerTest.UnitTests.csproj
@@ -12,8 +12,8 @@
-
-
+
+
diff --git a/tests/Avalonia.Headless.UnitTests/AssertHelper.cs b/tests/Avalonia.Headless.UnitTests/AssertHelper.cs
new file mode 100644
index 0000000000..a3443492b0
--- /dev/null
+++ b/tests/Avalonia.Headless.UnitTests/AssertHelper.cs
@@ -0,0 +1,52 @@
+#nullable enable
+
+namespace Avalonia.Headless.UnitTests;
+
+internal static class AssertHelper
+{
+ public static void True(bool condition, string? message = null)
+ {
+#if NUNIT
+ Assert.That(condition, Is.True, message);
+#elif XUNIT
+ Assert.True(condition, message);
+#endif
+ }
+
+ public static void False(bool condition, string? message = null)
+ {
+#if NUNIT
+ Assert.That(condition, Is.False, message);
+#elif XUNIT
+ Assert.False(condition, message);
+#endif
+ }
+
+ public static void NotNull(object? value)
+ {
+#if NUNIT
+ Assert.That(value, Is.Not.Null);
+#elif XUNIT
+ Assert.NotNull(value);
+#endif
+ }
+
+ public static void Equal(T expected, T actual)
+ {
+#if NUNIT
+ Assert.That(expected, Is.EqualTo(actual));
+#elif XUNIT
+ Assert.Equal(expected, actual);
+#endif
+ }
+
+ public static void Same(object? expected, object? actual)
+ {
+#if NUNIT
+ Assert.That(expected, Is.SameAs(actual));
+#elif XUNIT
+ Assert.Same(expected, actual);
+#endif
+ }
+
+}
diff --git a/tests/Avalonia.Headless.UnitTests/InputTests.cs b/tests/Avalonia.Headless.UnitTests/InputTests.cs
index c643c4b96d..48b38118a3 100644
--- a/tests/Avalonia.Headless.UnitTests/InputTests.cs
+++ b/tests/Avalonia.Headless.UnitTests/InputTests.cs
@@ -34,13 +34,13 @@ public class InputTests
}
#if NUNIT
- [AvaloniaTest, Timeout(10000)]
+ [AvaloniaTest]
#elif XUNIT
[AvaloniaFact]
#endif
public void Should_Click_Button_On_Window()
{
- Assert.True(_setupApp == Application.Current);
+ AssertHelper.Same(_setupApp, Application.Current);
var buttonClicked = false;
var button = new Button
{
@@ -56,11 +56,11 @@ public class InputTests
_window.MouseDown(new Point(50, 50), MouseButton.Left);
_window.MouseUp(new Point(50, 50), MouseButton.Left);
- Assert.True(buttonClicked);
+ AssertHelper.True(buttonClicked);
}
#if NUNIT
- [AvaloniaTest, Timeout(10000)]
+ [AvaloniaTest]
#elif XUNIT
[AvaloniaFact]
#endif
@@ -69,11 +69,11 @@ public class InputTests
var newWindowPosition = new PixelPoint(100, 150);
_window.Position = newWindowPosition;
_window.Show();
- Assert.True(_window.Position == newWindowPosition);
+ AssertHelper.Equal(newWindowPosition, _window.Position);
}
#if NUNIT
- [AvaloniaTest, Timeout(10000)]
+ [AvaloniaTest]
#elif XUNIT
[AvaloniaFact]
#endif
@@ -100,7 +100,7 @@ public class InputTests
_window.MouseDown(translatePoint.Value, MouseButton.Left, RawInputModifiers.None);
_window.MouseUp(translatePoint.Value, MouseButton.Left, RawInputModifiers.None);
- Assert.True(clickCount == 1);
+ AssertHelper.Equal(1, clickCount);
}
#if NUNIT
@@ -110,7 +110,7 @@ public class InputTests
public void Dispose()
#endif
{
- Assert.True(_setupApp == Application.Current);
+ AssertHelper.Same(_setupApp, Application.Current);
Dispatcher.UIThread.VerifyAccess();
_window.Close();
diff --git a/tests/Avalonia.Headless.UnitTests/IsolationTests.cs b/tests/Avalonia.Headless.UnitTests/IsolationTests.cs
index 1f3495a194..606e2e35f6 100644
--- a/tests/Avalonia.Headless.UnitTests/IsolationTests.cs
+++ b/tests/Avalonia.Headless.UnitTests/IsolationTests.cs
@@ -10,7 +10,7 @@ public class IsolationTests
private static WeakReference s_previousDispatcherRef;
#if NUNIT
- [AvaloniaTheory, Timeout(10000)]
+ [AvaloniaTheory]
[TestCase(1), TestCase(2), TestCase(3)]
#elif XUNIT
[AvaloniaTheory]
@@ -37,23 +37,23 @@ public class IsolationTests
GC.WaitForPendingFinalizers();
GC.Collect();
- Assert.False(s_previousAppRef.TryGetTarget(out var previousApp),
+ AssertHelper.False(s_previousAppRef.TryGetTarget(out var previousApp),
"Previous Application instance should have been collected.");
- Assert.False(s_previousDispatcherRef.TryGetTarget(out var previousDispatcher),
+ AssertHelper.False(s_previousDispatcherRef.TryGetTarget(out var previousDispatcher),
"Previous Dispatcher instance should have been collected.");
- Assert.False(previousApp == currentApp);
- Assert.False(previousDispatcher == currentDispatcher);
+ AssertHelper.False(previousApp == currentApp);
+ AssertHelper.False(previousDispatcher == currentDispatcher);
}
else if (isolationLevel == AvaloniaTestIsolationLevel.PerAssembly)
{
- Assert.True(s_previousAppRef.TryGetTarget(out var previousApp),
+ AssertHelper.True(s_previousAppRef.TryGetTarget(out var previousApp),
"Previous Application instance should still be alive.");
- Assert.True(s_previousDispatcherRef.TryGetTarget(out var previousDispatcher),
+ AssertHelper.True(s_previousDispatcherRef.TryGetTarget(out var previousDispatcher),
"Previous Dispatcher instance should still be alive.");
- Assert.True(previousApp == currentApp);
- Assert.True(previousDispatcher == currentDispatcher);
+ AssertHelper.True(previousApp == currentApp);
+ AssertHelper.True(previousDispatcher == currentDispatcher);
}
else
{
diff --git a/tests/Avalonia.Headless.UnitTests/LeakTests.cs b/tests/Avalonia.Headless.UnitTests/LeakTests.cs
index 29ade72b57..d8eb7705fa 100644
--- a/tests/Avalonia.Headless.UnitTests/LeakTests.cs
+++ b/tests/Avalonia.Headless.UnitTests/LeakTests.cs
@@ -16,7 +16,7 @@ public class LeakTests
#if NUNIT
[TestCaseSource(nameof(TestData))]
- [AvaloniaTest, Timeout(10000)]
+ [AvaloniaTest]
#elif XUNIT
[MemberData(nameof(TestData))]
[AvaloniaTheory]
@@ -45,7 +45,7 @@ public class LeakTests
// Either previous font manager is collected (IsAlive == false), or it is the same as current (shared isolation mode).
if (s_previousFontManager is not null && s_previousFontManager.Target != fontManager.Target)
{
- Assert.False(s_previousFontManager.IsAlive);
+ AssertHelper.False(s_previousFontManager.IsAlive);
}
s_previousFontManager = fontManager;
diff --git a/tests/Avalonia.Headless.UnitTests/RenderingTests.cs b/tests/Avalonia.Headless.UnitTests/RenderingTests.cs
index 7bb9e1c5b0..a4eab3deda 100644
--- a/tests/Avalonia.Headless.UnitTests/RenderingTests.cs
+++ b/tests/Avalonia.Headless.UnitTests/RenderingTests.cs
@@ -1,18 +1,16 @@
using System.Collections.ObjectModel;
using System.Threading.Tasks;
using Avalonia.Controls;
-using Avalonia.Controls.Shapes;
using Avalonia.Layout;
using Avalonia.Media;
using Avalonia.Rendering.Composition;
-using Avalonia.Threading;
namespace Avalonia.Headless.UnitTests;
public class RenderingTests
{
#if NUNIT
- [AvaloniaTest, Timeout(10000)]
+ [AvaloniaTest]
#elif XUNIT
[AvaloniaFact]
#endif
@@ -37,11 +35,11 @@ public class RenderingTests
var frame = window.CaptureRenderedFrame();
- Assert.NotNull(frame);
+ AssertHelper.NotNull(frame);
}
#if NUNIT
- [AvaloniaTest, Timeout(10000)]
+ [AvaloniaTest]
#elif XUNIT
[AvaloniaFact]
#endif
@@ -73,11 +71,11 @@ public class RenderingTests
var frame = window.CaptureRenderedFrame();
- Assert.NotNull(frame);
+ AssertHelper.NotNull(frame);
}
#if NUNIT
- [AvaloniaTest, Timeout(10000)]
+ [AvaloniaTest]
#elif XUNIT
[AvaloniaFact]
#endif
@@ -104,11 +102,11 @@ public class RenderingTests
var frame = window.CaptureRenderedFrame();
- Assert.NotNull(frame);
+ AssertHelper.NotNull(frame);
}
#if NUNIT
- [AvaloniaTest, Timeout(10000)]
+ [AvaloniaTest]
#elif XUNIT
[AvaloniaFact]
#endif
@@ -136,13 +134,13 @@ public class RenderingTests
window.Show();
var frame = window.CaptureRenderedFrame();
- Assert.NotNull(frame);
+ AssertHelper.NotNull(frame);
}
#if NUNIT
- [AvaloniaTest, Timeout(10000)]
+ [AvaloniaTest]
#elif XUNIT
- [AvaloniaFact(Timeout = 10000)]
+ [AvaloniaFact]
#endif
public async Task Should_Render_To_A_Compositor_Snapshot_Capture()
{
@@ -164,10 +162,8 @@ public class RenderingTests
var compositionVisual = ElementComposition.GetElementVisual(window)!;
var snapshot = await compositionVisual.Compositor.CreateCompositionVisualSnapshot(compositionVisual, 1);
- Assert.NotNull(snapshot);
- // ReSharper disable CompareOfFloatsByEqualityOperator
- Assert.True(100 == snapshot.Size.Width);
- Assert.True(100 == snapshot.Size.Height);
- // ReSharper restore CompareOfFloatsByEqualityOperator
+ AssertHelper.NotNull(snapshot);
+ AssertHelper.Equal(100, snapshot.Size.Width);
+ AssertHelper.Equal(100, snapshot.Size.Height);
}
}
diff --git a/tests/Avalonia.Headless.UnitTests/ServicesTests.cs b/tests/Avalonia.Headless.UnitTests/ServicesTests.cs
index 8a6b03cf15..a0504e40a9 100644
--- a/tests/Avalonia.Headless.UnitTests/ServicesTests.cs
+++ b/tests/Avalonia.Headless.UnitTests/ServicesTests.cs
@@ -1,17 +1,11 @@
-using System;
-using System.Reactive.Disposables;
-using System.Threading;
using Avalonia.Controls;
-using Avalonia.Input;
-using Avalonia.Layout;
-using Avalonia.Threading;
namespace Avalonia.Headless.UnitTests;
public class ServicesTests
{
#if NUNIT
- [AvaloniaTest, Timeout(10000)]
+ [AvaloniaTest]
#elif XUNIT
[AvaloniaFact]
#endif
@@ -19,11 +13,11 @@ public class ServicesTests
{
var window = new Window();
var screens = window.Screens;
- Assert.NotNull(screens);
+ AssertHelper.NotNull(screens);
var currentScreenFromWindow = screens.ScreenFromWindow(window);
var currentScreenFromVisual = screens.ScreenFromVisual(window);
- Assert.True(ReferenceEquals(currentScreenFromWindow, currentScreenFromVisual));
+ AssertHelper.Same(currentScreenFromWindow, currentScreenFromVisual);
}
}
diff --git a/tests/Avalonia.Headless.UnitTests/ThreadingTests.cs b/tests/Avalonia.Headless.UnitTests/ThreadingTests.cs
index 4becb43b3b..abcc35c063 100644
--- a/tests/Avalonia.Headless.UnitTests/ThreadingTests.cs
+++ b/tests/Avalonia.Headless.UnitTests/ThreadingTests.cs
@@ -10,7 +10,7 @@ namespace Avalonia.Headless.UnitTests;
public class ThreadingTests
{
#if NUNIT
- [AvaloniaTest, Timeout(10000)]
+ [AvaloniaTest]
#elif XUNIT
[AvaloniaFact]
#endif
@@ -31,20 +31,20 @@ public class ThreadingTests
}
#if NUNIT
- [AvaloniaTheory, Timeout(10000), TestCase(1), TestCase(10), TestCase(100)]
+ [AvaloniaTheory, TestCase(1), TestCase(10), TestCase(100)]
#elif XUNIT
- [AvaloniaTheory(Timeout = 10000), InlineData(1), InlineData(10), InlineData(100)]
+ [AvaloniaTheory, InlineData(1), InlineData(10), InlineData(100)]
#endif
public async Task DispatcherTimer_Works_On_The_Same_Thread(int interval)
{
- Assert.NotNull(SynchronizationContext.Current);
+ AssertHelper.NotNull(SynchronizationContext.Current);
ValidateTestContext();
var currentThread = Thread.CurrentThread;
await Task.Delay(100);
ValidateTestContext();
- Assert.True(currentThread == Thread.CurrentThread);
+ AssertHelper.Same(currentThread, Thread.CurrentThread);
var tcs = new TaskCompletionSource();
@@ -53,7 +53,7 @@ public class ThreadingTests
try
{
ValidateTestContext();
- Assert.True(currentThread == Thread.CurrentThread);
+ AssertHelper.Same(currentThread, Thread.CurrentThread);
tcs.SetResult();
}
catch (Exception ex)
@@ -70,7 +70,7 @@ public class ThreadingTests
#if NUNIT
var testName = TestContext.CurrentContext.Test.Name;
// Test.Name also includes parameters.
- Assert.AreEqual(testName.Split('(').First(), runningMethodName);
+ AssertHelper.Equal(testName.Split('(').First(), runningMethodName);
#endif
}
}