diff --git a/tests/Avalonia.Visuals.UnitTests/Avalonia.Visuals.UnitTests.csproj b/tests/Avalonia.Visuals.UnitTests/Avalonia.Visuals.UnitTests.csproj
index 642172fe25..fd9fb82cfd 100644
--- a/tests/Avalonia.Visuals.UnitTests/Avalonia.Visuals.UnitTests.csproj
+++ b/tests/Avalonia.Visuals.UnitTests/Avalonia.Visuals.UnitTests.csproj
@@ -80,6 +80,8 @@
+
+
diff --git a/tests/Avalonia.Visuals.UnitTests/RectTests.cs b/tests/Avalonia.Visuals.UnitTests/RectTests.cs
new file mode 100644
index 0000000000..6e3f654bfb
--- /dev/null
+++ b/tests/Avalonia.Visuals.UnitTests/RectTests.cs
@@ -0,0 +1,42 @@
+// Copyright (c) The Avalonia Project. All rights reserved.
+// Licensed under the MIT license. See licence.md file in the project root for full license information.
+
+using Xunit;
+
+namespace Avalonia.Visuals.UnitTests
+{
+ public class RectTests
+ {
+ [Fact]
+ public void Union_Should_Return_Correct_Value_For_Intersecting_Rects()
+ {
+ var result = new Rect(0, 0, 100, 100).Union(new Rect(50, 50, 100, 100));
+
+ Assert.Equal(new Rect(0, 0, 150, 150), result);
+ }
+
+ [Fact]
+ public void Union_Should_Return_Correct_Value_For_NonIntersecting_Rects()
+ {
+ var result = new Rect(0, 0, 100, 100).Union(new Rect(150, 150, 100, 100));
+
+ Assert.Equal(new Rect(0, 0, 250, 250), result);
+ }
+
+ [Fact]
+ public void Union_Should_Ignore_Empty_This_rect()
+ {
+ var result = new Rect(0, 0, 0, 0).Union(new Rect(150, 150, 100, 100));
+
+ Assert.Equal(new Rect(150, 150, 100, 100), result);
+ }
+
+ [Fact]
+ public void Union_Should_Ignore_Empty_Other_rect()
+ {
+ var result = new Rect(0, 0, 100, 100).Union(new Rect(150, 150, 0, 0));
+
+ Assert.Equal(new Rect(0, 0, 100, 100), result);
+ }
+ }
+}
diff --git a/tests/Avalonia.Visuals.UnitTests/SizeTests.cs b/tests/Avalonia.Visuals.UnitTests/SizeTests.cs
new file mode 100644
index 0000000000..10a012bb7f
--- /dev/null
+++ b/tests/Avalonia.Visuals.UnitTests/SizeTests.cs
@@ -0,0 +1,26 @@
+// Copyright (c) The Avalonia Project. All rights reserved.
+// Licensed under the MIT license. See licence.md file in the project root for full license information.
+
+using Xunit;
+
+namespace Avalonia.Visuals.UnitTests
+{
+ public class SizeTests
+ {
+ [Fact]
+ public void Should_Produce_Correct_Aspect_Ratio()
+ {
+ var result = new Size(3, 2).AspectRatio;
+
+ Assert.Equal(1.5, result);
+ }
+
+ [Fact]
+ public void Dividing_Should_Produce_Scaling_Factor()
+ {
+ var result = new Size(15, 10) / new Size(5, 5);
+
+ Assert.Equal(new Vector(3, 2), result);
+ }
+ }
+}