diff options
Diffstat (limited to 'Xamarin.Forms.Core.UnitTests/RectangleUnitTests.cs')
-rw-r--r-- | Xamarin.Forms.Core.UnitTests/RectangleUnitTests.cs | 208 |
1 files changed, 208 insertions, 0 deletions
diff --git a/Xamarin.Forms.Core.UnitTests/RectangleUnitTests.cs b/Xamarin.Forms.Core.UnitTests/RectangleUnitTests.cs new file mode 100644 index 00000000..722020bb --- /dev/null +++ b/Xamarin.Forms.Core.UnitTests/RectangleUnitTests.cs @@ -0,0 +1,208 @@ +using NUnit.Framework; + + +namespace Xamarin.Forms.Core.UnitTests +{ + [TestFixture] + public class RectangleUnitTests : BaseTestFixture + { + [Test] + public void TestRectangleConstruction () + { + var rect = new Rectangle (); + Assert.AreEqual (0, rect.X); + Assert.AreEqual (0, rect.Y); + Assert.AreEqual (0, rect.Width); + Assert.AreEqual (0, rect.Height); + + rect = new Rectangle (2, 3, 4, 5); + Assert.AreEqual (2, rect.X); + Assert.AreEqual (3, rect.Y); + Assert.AreEqual (4, rect.Width); + Assert.AreEqual (5, rect.Height); + + rect = new Rectangle (new Point (2, 3), new Size (4, 5)); + Assert.AreEqual (2, rect.X); + Assert.AreEqual (3, rect.Y); + Assert.AreEqual (4, rect.Width); + Assert.AreEqual (5, rect.Height); + } + + [Test] + public void TestRectangleFromLTRB () + { + var rect = Rectangle.FromLTRB (10, 10, 30, 40); + + Assert.AreEqual (new Rectangle (10, 10, 20, 30), rect); + } + + [Test] + public void TestRectangleCalculatedPoints () + { + var rect = new Rectangle (2, 3, 4, 5); + Assert.AreEqual (2, rect.Left); + Assert.AreEqual (3, rect.Top); + Assert.AreEqual (6, rect.Right); + Assert.AreEqual (8, rect.Bottom); + + Assert.AreEqual (new Size (4, 5), rect.Size); + Assert.AreEqual (new Point (2, 3), rect.Location); + + Assert.AreEqual (new Point (4, 5.5), rect.Center); + + rect.Left = 1; + Assert.AreEqual (1, rect.X); + + rect.Right = 3; + Assert.AreEqual (2, rect.Width); + + rect.Top = 1; + Assert.AreEqual (1, rect.Y); + + rect.Bottom = 2; + Assert.AreEqual (1, rect.Height); + } + + [Test] + public void TestRectangleContains () + { + var rect = new Rectangle (0, 0, 10, 10); + Assert.True (rect.Contains (5, 5)); + Assert.True (rect.Contains (new Point (5, 5))); + Assert.True (rect.Contains (new Rectangle (1, 1, 3, 3))); + + Assert.True (rect.Contains (0, 0)); + Assert.False (rect.Contains (10, 10)); + } + + [Test] + public void TestRectangleInflate () + { + var rect = new Rectangle (0, 0, 10, 10); + rect = rect.Inflate (5, 5); + + Assert.AreEqual (new Rectangle (-5, -5, 20, 20), rect); + + rect = rect.Inflate (new Size (-5, -5)); + + Assert.AreEqual (new Rectangle (0, 0, 10, 10), rect); + } + + [Test] + public void TestRectangleOffset () + { + var rect = new Rectangle (0, 0, 10, 10); + rect = rect.Offset (10, 10); + + Assert.AreEqual (new Rectangle (10, 10, 10, 10), rect); + + rect = rect.Offset (new Point (-10, -10)); + + Assert.AreEqual (new Rectangle (0, 0, 10, 10), rect); + } + + [Test] + public void TestRectangleRound () + { + var rect = new Rectangle (0.2, 0.3, 0.6, 0.7); + + Assert.AreEqual (new Rectangle (0, 0, 1, 1), rect.Round ()); + } + + [Test] + public void TestRectangleIntersect () + { + var rect1 = new Rectangle (0, 0, 10, 10); + + var rect2 = new Rectangle (2, 2, 6, 6); + + var intersection = rect1.Intersect (rect2); + + Assert.AreEqual (rect2, intersection); + + rect2 = new Rectangle(2, 2, 12, 12); + intersection = rect1.Intersect (rect2); + + Assert.AreEqual (new Rectangle (2, 2, 8, 8), intersection); + + rect2 = new Rectangle (20, 20, 2, 2); + intersection = rect1.Intersect (rect2); + + Assert.AreEqual (Rectangle.Zero, intersection); + } + + [Test] + [TestCase(0, 0, ExpectedResult = true)] + [TestCase(0, 5, ExpectedResult = true)] + [TestCase(5, 0, ExpectedResult = true)] + [TestCase(2, 3, ExpectedResult = false)] + public bool TestIsEmpty (int w, int h) + { + return new Rectangle (0, 0, w, h).IsEmpty; + } + + [Test] + [TestCase(0, 0, 8, 8, 0, 0, 5, 5, ExpectedResult = true)] + [TestCase(0, 0, 5, 5, 5, 5, 5, 5, ExpectedResult = false)] + [TestCase(0, 0, 2, 2, 3, 0, 5, 5, ExpectedResult = false)] + public bool TestIntersectsWith (double x1, double y1, double w1, double h1, double x2, double y2, double w2, double h2) + { + return new Rectangle (x1, y1, w1, h1).IntersectsWith (new Rectangle (x2, y2, w2, h2)); + } + + [Test] + public void TestSetSize () + { + var rect = new Rectangle (); + rect.Size = new Size (10, 20); + + Assert.AreEqual (new Rectangle (0, 0, 10, 20), rect); + } + + [Test] + public void TestSetLocation () + { + var rect = new Rectangle (); + rect.Location = new Point (10, 20); + + Assert.AreEqual (new Rectangle (10, 20, 0, 0), rect); + } + + [Test] + public void TestUnion () + { + Assert.AreEqual (new Rectangle (0, 3, 13, 10), new Rectangle (3, 3, 10, 10).Union (new Rectangle(0, 5, 2, 2))); + } + + [Test] + [TestCase(0, 0, 2, 2, ExpectedResult = "{X=0 Y=0 Width=2 Height=2}")] + [TestCase(1, 0, 3, 2, ExpectedResult = "{X=1 Y=0 Width=3 Height=2}")] + public string TestRectangleToString (double x, double y, double w, double h) + { + return new Rectangle (x, y, w, h).ToString (); + } + + [Test] + public void TestRectangleEquals () + { + Assert.True (new Rectangle (0, 0, 10, 10).Equals (new Rectangle(0, 0, 10, 10))); + Assert.False (new Rectangle (0, 0, 10, 10).Equals ("Rectangle")); + Assert.False (new Rectangle (0, 0, 10, 10).Equals (null)); + + Assert.True (new Rectangle (0, 0, 10, 10) == new Rectangle (0, 0, 10, 10)); + Assert.True (new Rectangle (0, 0, 10, 10) != new Rectangle (0, 0, 10, 5)); + } + + [Test] + public void TestRectangleGetHashCode ([Range(3, 4)] double x1, [Range(3, 4)] double y1, [Range(3, 4)] double w1, [Range(3, 4)] double h1, + [Range(3, 4)] double x2, [Range(3, 4)] double y2, [Range(3, 4)] double w2, [Range(3, 4)] double h2) + { + bool result = new Rectangle (x1, y1, w1, h1).GetHashCode () == new Rectangle (x2, y2, w2, h2).GetHashCode (); + + if (x1 == x2 && y1 == y2 && w1 == w2 && h1 == h2) + Assert.True (result); + else + Assert.False (result); + } + } +} |