Exemple #1
0
        public static void RemoveRange_Removes_Coordinates_from_Boundary_if_Present()
        {
            List <CartesianCoordinate> coordinates = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(0, 0),
                new CartesianCoordinate(1, 2),
                new CartesianCoordinate(3, 4),
                new CartesianCoordinate(5, 6)
            };

            PointBoundary boundary = new PointBoundary(coordinates);

            Assert.AreEqual(4, boundary.Count);
            Assert.AreEqual(1, boundary[1].X);
            Assert.AreEqual(2, boundary[1].Y);

            List <CartesianCoordinate> coordinatesRemove = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(1, 2), // Existing coordinate
                new CartesianCoordinate(7, 8)
            };                                 // Non-existing coordinate

            boundary.RemoveRange(coordinatesRemove);
            Assert.AreEqual(3, boundary.Count);
            Assert.AreEqual(3, boundary[1].X);
            Assert.AreEqual(4, boundary[1].Y);
        }
        public static void PointBoundary_Returns_PointBoundary_of_Boundary()
        {
            List <CartesianCoordinate> coordinates = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(0, 0),
                new CartesianCoordinate(1, 2),
                new CartesianCoordinate(3, 4),
                new CartesianCoordinate(5, 6)
            };

            List <LineSegment> segments = new List <LineSegment>()
            {
                new LineSegment(coordinates[0], coordinates[1]),
                new LineSegment(coordinates[1], coordinates[2]),
                new LineSegment(coordinates[2], coordinates[3])
            };

            SegmentsBoundary boundary = new SegmentsBoundary(segments);

            Assert.IsTrue(boundary.IsReadOnly);
            Assert.AreEqual(3, boundary.Count);

            PointBoundary pointBoundary = boundary.PointBoundary() as PointBoundary;

            Assert.IsTrue(pointBoundary.IsReadOnly);
            Assert.AreEqual(4, pointBoundary.Count);
            Assert.AreEqual(3, pointBoundary[2].X);
            Assert.AreEqual(4, pointBoundary[2].Y);
        }
Exemple #3
0
        public static void GetEnumerator_Allows_Enumeration_Over_Coordinates()
        {
            List <CartesianCoordinate> coordinates = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(0, 0),
                new CartesianCoordinate(1, 2),
                new CartesianCoordinate(3, 4),
                new CartesianCoordinate(5, 6)
            };

            PointBoundary boundary = new PointBoundary(coordinates);

            IEnumerator enumerator = boundary.GetEnumerator();

            enumerator.MoveNext();
            Assert.AreEqual(coordinates[0], enumerator.Current);
            enumerator.MoveNext();
            Assert.AreEqual(coordinates[1], enumerator.Current);
            enumerator.MoveNext();
            Assert.AreEqual(coordinates[2], enumerator.Current);
            enumerator.MoveNext();
            Assert.AreEqual(coordinates[3], enumerator.Current);

            enumerator.Reset();
            enumerator.MoveNext();
            Assert.AreEqual(coordinates[0], enumerator.Current);
        }
        public static void PointBoundary()
        {
            Polygon       polygon       = new Polygon(bowTieNonCrossingSegments);
            PointBoundary pointBoundary = polygon.PointBoundary();

            Assert.AreEqual(bowTieNonCrossingSegments[2], pointBoundary[2]);
        }
Exemple #5
0
        public static void InsertRange_Inserts_Coordinates_at_Specified_Index()
        {
            List <CartesianCoordinate> coordinates = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(0, 0),
                new CartesianCoordinate(1, 2),
                new CartesianCoordinate(3, 4),
                new CartesianCoordinate(5, 6)
            };

            PointBoundary boundary = new PointBoundary(coordinates);

            Assert.AreEqual(4, boundary.Count);
            Assert.AreEqual(1, boundary[1].X);
            Assert.AreEqual(2, boundary[1].Y);

            List <CartesianCoordinate> newCoordinates = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(7, 8),
                new CartesianCoordinate(9, 10),
                new CartesianCoordinate(11, 12)
            };

            boundary.InsertRange(1, newCoordinates);
            Assert.AreEqual(7, boundary.Count);
            Assert.AreEqual(7, boundary[1].X);
            Assert.AreEqual(8, boundary[1].Y);
            Assert.AreEqual(9, boundary[2].X);
            Assert.AreEqual(10, boundary[2].Y);
            Assert.AreEqual(11, boundary[3].X);
            Assert.AreEqual(12, boundary[3].Y);
            Assert.AreEqual(1, boundary[4].X);
            Assert.AreEqual(2, boundary[4].Y);
        }
Exemple #6
0
        public static void InsertRange_Throws_Index_Out_of_Range_Exception_for_Out_of_Range_Index()
        {
            List <CartesianCoordinate> coordinates = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(0, 0),
                new CartesianCoordinate(1, 2),
                new CartesianCoordinate(3, 4),
                new CartesianCoordinate(5, 6)
            };

            PointBoundary boundary = new PointBoundary(coordinates);

            Assert.AreEqual(4, boundary.Count);
            Assert.AreEqual(1, boundary[1].X);
            Assert.AreEqual(2, boundary[1].Y);

            List <CartesianCoordinate> newCoordinates = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(7, 8),
                new CartesianCoordinate(9, 10),
                new CartesianCoordinate(11, 12)
            };

            Assert.Throws <IndexOutOfRangeException>(() => boundary.InsertRange(4, newCoordinates));
        }
Exemple #7
0
        public static void AddRange_Adds_Coordinates_to_Boundary()
        {
            List <CartesianCoordinate> coordinates = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(0, 0),
                new CartesianCoordinate(1, 2),
                new CartesianCoordinate(3, 4),
                new CartesianCoordinate(5, 6)
            };

            PointBoundary boundary = new PointBoundary(coordinates);

            Assert.AreEqual(4, boundary.Count);

            List <CartesianCoordinate> coordinatesAdded = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(7, 8),
                new CartesianCoordinate(9, 10)
            };

            boundary.AddRange(coordinatesAdded);
            Assert.AreEqual(6, boundary.Count);
            Assert.AreEqual(7, boundary[4].X);
            Assert.AreEqual(8, boundary[4].Y);
            Assert.AreEqual(9, boundary[5].X);
            Assert.AreEqual(10, boundary[5].Y);
        }
Exemple #8
0
        public static void Remove_Removes_Coordinate_from_Boundary_if_Present()
        {
            List <CartesianCoordinate> coordinates = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(0, 0),
                new CartesianCoordinate(1, 2),
                new CartesianCoordinate(3, 4),
                new CartesianCoordinate(5, 6)
            };

            PointBoundary boundary = new PointBoundary(coordinates);

            Assert.AreEqual(4, boundary.Count);
            Assert.AreEqual(1, boundary[1].X);
            Assert.AreEqual(2, boundary[1].Y);

            // Existing coordinate
            Assert.IsTrue(boundary.Remove(new CartesianCoordinate(1, 2)));
            Assert.AreEqual(3, boundary.Count);
            Assert.AreEqual(3, boundary[1].X);
            Assert.AreEqual(4, boundary[1].Y);

            // Non-existing coordinate
            Assert.IsFalse(boundary.Remove(new CartesianCoordinate(7, 8)));
            Assert.AreEqual(3, boundary.Count);
            Assert.AreEqual(3, boundary[1].X);
            Assert.AreEqual(4, boundary[1].Y);
        }
Exemple #9
0
        public static void Reset_Resets_Coordinates_in_Boundary()
        {
            List <CartesianCoordinate> coordinates = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(0, 0),
                new CartesianCoordinate(1, 2),
                new CartesianCoordinate(3, 4),
                new CartesianCoordinate(5, 6)
            };

            PointBoundary boundary = new PointBoundary(coordinates);

            Assert.AreEqual(4, boundary.Count);
            Assert.AreEqual(1, boundary[1].X);
            Assert.AreEqual(2, boundary[1].Y);

            List <CartesianCoordinate> coordinatesReset = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(7, 8),
                new CartesianCoordinate(9, 10)
            };

            boundary.Reset(coordinatesReset);
            Assert.AreEqual(2, boundary.Count);
            Assert.AreEqual(9, boundary[1].X);
            Assert.AreEqual(10, boundary[1].Y);
        }
Exemple #10
0
        public static void Initialization_with_Coordinates_Array_Results_in_Object_with_Immutable_Coordinates_Properties_List()
        {
            int    index = 1;
            double xOld  = 1;
            double yOld  = 2;

            CartesianCoordinate[] coordinates = new CartesianCoordinate[4];
            coordinates[0] = new CartesianCoordinate(0, 0);
            coordinates[1] = new CartesianCoordinate(xOld, yOld);
            coordinates[2] = new CartesianCoordinate(3, 4);
            coordinates[3] = new CartesianCoordinate(5, 6);

            double xNew = 7;
            double yNew = 8;

            PointBoundary boundary = new PointBoundary(coordinates);

            Assert.AreEqual(GeometryLibrary.ZeroTolerance, boundary.Tolerance);
            Assert.IsTrue(boundary.IsReadOnly);
            Assert.AreEqual(4, boundary.Count);
            Assert.AreEqual(xOld, boundary[index].X);
            Assert.AreEqual(yOld, boundary[index].Y);

            // Alter existing coordinates to passed in reference to prove immutable
            coordinates[1] = new CartesianCoordinate(xNew, yNew);
            Assert.AreEqual(4, boundary.Count);
            Assert.AreEqual(xOld, boundary[index].X);
            Assert.AreEqual(yOld, boundary[index].Y);
            Assert.AreNotEqual(xNew, boundary[index].X);
            Assert.AreNotEqual(yNew, boundary[index].Y);
        }
Exemple #11
0
        public static void CopyTo_Copies_Coordinates_to_Array()
        {
            List <CartesianCoordinate> coordinates = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(0, 0),
                new CartesianCoordinate(1, 2),
                new CartesianCoordinate(3, 4),
                new CartesianCoordinate(5, 6)
            };

            PointBoundary boundary = new PointBoundary(coordinates);

            Assert.AreEqual(4, boundary.Count);
            Assert.AreEqual(1, boundary[1].X);
            Assert.AreEqual(2, boundary[1].Y);

            CartesianCoordinate[] newCoordinates = new CartesianCoordinate[5];
            newCoordinates[0] = new CartesianCoordinate(7, 8);

            boundary.CopyTo(newCoordinates, 1);
            Assert.AreEqual(5, newCoordinates.Length);
            Assert.AreEqual(7, newCoordinates[0].X);
            Assert.AreEqual(8, newCoordinates[0].Y);
            Assert.AreEqual(0, newCoordinates[1].X);
            Assert.AreEqual(0, newCoordinates[1].Y);
            Assert.AreEqual(5, newCoordinates[4].X);
            Assert.AreEqual(6, newCoordinates[4].Y);
        }
Exemple #12
0
        public static void Replace_Replaces_Coordinate_if_Present()
        {
            List <CartesianCoordinate> coordinates = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(0, 0),
                new CartesianCoordinate(1, 2),
                new CartesianCoordinate(3, 4),
                new CartesianCoordinate(5, 6)
            };

            PointBoundary boundary = new PointBoundary(coordinates);

            Assert.AreEqual(4, boundary.Count);
            Assert.AreEqual(1, boundary[1].X);
            Assert.AreEqual(2, boundary[1].Y);

            // Replaces existing coordinate
            boundary.Replace(new CartesianCoordinate(1, 2), new CartesianCoordinate(7, 8));
            Assert.AreEqual(4, boundary.Count);
            Assert.AreEqual(7, boundary[1].X);
            Assert.AreEqual(8, boundary[1].Y);

            // Does not replace non-existing coordinate
            boundary.Replace(new CartesianCoordinate(9, 10), new CartesianCoordinate(11, 12));
            Assert.AreEqual(4, boundary.Count);
            Assert.IsFalse(boundary.Contains(new CartesianCoordinate(11, 12)));
        }
Exemple #13
0
        public static void Initialization_without_Coordinates_Results_in_Empty_Object()
        {
            PointBoundary boundary = new PointBoundary();

            Assert.AreEqual(GeometryLibrary.ZeroTolerance, boundary.Tolerance);
            Assert.AreEqual(0, boundary.Count);
            Assert.IsTrue(boundary.IsReadOnly);
        }
        public static void Translate_Translates_Shape()
        {
            Polygon         polygon     = new Polygon(bowTieNonCrossingSegments);
            CartesianOffset translation = new CartesianOffset(1, -3);

            Polygon       polygonTranslated = polygon.Translate(translation) as Polygon;
            PointBoundary pointBoundary     = polygonTranslated.PointBoundary();

            Assert.AreEqual(1, pointBoundary[1].X);
            Assert.AreEqual(0, pointBoundary[1].Y);
        }
Exemple #15
0
        public static void PointBoundary_Throws_IndexOutOfRangeException_when_Accessing_by_Index()
        {
            List <CartesianCoordinate> coordinates = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(0, 0),
                new CartesianCoordinate(1, 2),
                new CartesianCoordinate(3, 4),
                new CartesianCoordinate(5, 6)
            };

            PointBoundary boundary = new PointBoundary(coordinates);

            Assert.Throws <IndexOutOfRangeException>(() => { CartesianCoordinate coordinate = boundary[4]; });
        }
Exemple #16
0
        public static void PointBoundary_Throws_ReadOnlyException_if_Changing_Coordinate_by_Index()
        {
            List <CartesianCoordinate> coordinates = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(0, 0),
                new CartesianCoordinate(1, 2),
                new CartesianCoordinate(3, 4),
                new CartesianCoordinate(5, 6)
            };

            PointBoundary boundary = new PointBoundary(coordinates);

            Assert.Throws <ReadOnlyException>(() => boundary[2] = new CartesianCoordinate(7, 8));
        }
Exemple #17
0
        public static void Insert_Throws_Index_Out_of_Range_Exception_for_Out_of_Range_Index()
        {
            List <CartesianCoordinate> coordinates = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(0, 0),
                new CartesianCoordinate(1, 2),
                new CartesianCoordinate(3, 4),
                new CartesianCoordinate(5, 6)
            };

            PointBoundary boundary = new PointBoundary(coordinates);

            Assert.Throws <IndexOutOfRangeException>(() => boundary.Insert(4, new CartesianCoordinate(7, 8)));
        }
Exemple #18
0
        public static void LastCoordinate()
        {
            CartesianCoordinate        lastCoordinate = new CartesianCoordinate(5, 6);
            List <CartesianCoordinate> coordinates    = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(0, 0),
                new CartesianCoordinate(1, 2),
                new CartesianCoordinate(3, 4),
                lastCoordinate
            };

            PointBoundary boundary = new PointBoundary(coordinates);

            Assert.AreEqual(lastCoordinate, boundary.LastCoordinate());
        }
Exemple #19
0
        public static void FirstCoordinate()
        {
            CartesianCoordinate        firstCoordinate = new CartesianCoordinate(1, 1);
            List <CartesianCoordinate> coordinates     = new List <CartesianCoordinate>()
            {
                firstCoordinate,
                new CartesianCoordinate(1, 2),
                new CartesianCoordinate(3, 4),
                new CartesianCoordinate(5, 6)
            };

            PointBoundary boundary = new PointBoundary(coordinates);

            Assert.AreEqual(firstCoordinate, boundary.FirstCoordinate());
        }
Exemple #20
0
        public static void Contains_Returns_True_or_False_Indicating_Presence_of_Coordinate()
        {
            List <CartesianCoordinate> coordinates = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(1, 1),
                new CartesianCoordinate(1, 2),
                new CartesianCoordinate(3, 4),
                new CartesianCoordinate(5, 6)
            };

            PointBoundary boundary = new PointBoundary(coordinates);

            Assert.IsTrue(boundary.Contains(new CartesianCoordinate(3, 4)));
            Assert.IsFalse(boundary.Contains(new CartesianCoordinate(7, 8)));
            Assert.IsFalse(boundary.Contains(new CartesianCoordinate(0, 0)));
        }
Exemple #21
0
        public static void GetEnumerator_Current_Throws_Invalid_Operation_Exception_if_Not_Initialized()
        {
            List <CartesianCoordinate> coordinates = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(0, 0),
                new CartesianCoordinate(1, 2),
                new CartesianCoordinate(3, 4),
                new CartesianCoordinate(5, 6)
            };

            PointBoundary boundary = new PointBoundary(coordinates);

            IEnumerator enumerator = boundary.GetEnumerator();

            Assert.Throws <InvalidOperationException>(() => { var item = enumerator.Current; });
        }
Exemple #22
0
        public static void PointBoundary_Returns_Coordinate_by_Index()
        {
            List <CartesianCoordinate> coordinates = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(-5, -5),
                new CartesianCoordinate(6, -5),
                new CartesianCoordinate(4, 5),
                new CartesianCoordinate(-5, 5),
                new CartesianCoordinate(-5, 2)
            };

            PointBoundary       boundary   = new PointBoundary(coordinates);
            CartesianCoordinate coordinate = boundary[1];

            Assert.AreEqual(6, coordinate.X);
            Assert.AreEqual(-5, coordinate.Y);
        }
Exemple #23
0
        public static void Clear_Clears_Coordinates_from_Boundary()
        {
            List <CartesianCoordinate> coordinates = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(0, 0),
                new CartesianCoordinate(1, 2),
                new CartesianCoordinate(3, 4),
                new CartesianCoordinate(5, 6)
            };

            PointBoundary boundary = new PointBoundary(coordinates);

            Assert.AreEqual(4, boundary.Count);

            boundary.Clear();
            Assert.AreEqual(0, boundary.Count);
        }
Exemple #24
0
        public static void IndexOf_Returns_Index_of_Coordinate_if_Present()
        {
            List <CartesianCoordinate> coordinates = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(0, 0),
                new CartesianCoordinate(1, 2),
                new CartesianCoordinate(3, 4),
                new CartesianCoordinate(5, 6)
            };

            PointBoundary boundary = new PointBoundary(coordinates);

            // Present coordinate
            Assert.AreEqual(2, boundary.IndexOf(new CartesianCoordinate(3, 4)));

            // Non-present coordinate
            Assert.AreEqual(-1, boundary.IndexOf(new CartesianCoordinate(7, 8)));
        }
Exemple #25
0
        public static void ReplaceAt_Throws_Index_Out_of_Range_Exception_for_Coordinate_at_Out_of_Range_Index()
        {
            List <CartesianCoordinate> coordinates = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(0, 0),
                new CartesianCoordinate(1, 2),
                new CartesianCoordinate(3, 4),
                new CartesianCoordinate(5, 6)
            };

            PointBoundary boundary = new PointBoundary(coordinates);

            Assert.AreEqual(4, boundary.Count);

            CartesianCoordinate newCoordinate = new CartesianCoordinate(7, 8);

            Assert.Throws <IndexOutOfRangeException>(() => boundary.ReplaceAt(4, newCoordinate));
        }
Exemple #26
0
        public static void RemoveAt_Throws_Index_Out_of_Range_Exception_for_Out_Of_Range_Index()
        {
            List <CartesianCoordinate> coordinates = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(0, 0),
                new CartesianCoordinate(1, 2),
                new CartesianCoordinate(3, 4),
                new CartesianCoordinate(5, 6)
            };

            PointBoundary boundary = new PointBoundary(coordinates);

            Assert.AreEqual(4, boundary.Count);
            Assert.AreEqual(1, boundary[1].X);
            Assert.AreEqual(2, boundary[1].Y);

            Assert.Throws <IndexOutOfRangeException>(() => boundary.RemoveAt(4));
        }
Exemple #27
0
        public static void Extents_Returns_Extends_of_Boundary()
        {
            List <CartesianCoordinate> coordinates = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(0, 0),
                new CartesianCoordinate(1, 2),
                new CartesianCoordinate(3, 4),
                new CartesianCoordinate(5, 6)
            };

            PointBoundary boundary = new PointBoundary(coordinates);

            PointExtents extents = boundary.Extents() as PointExtents;

            Assert.AreEqual(0, extents.MinX);
            Assert.AreEqual(0, extents.MinY);
            Assert.AreEqual(5, extents.MaxX);
            Assert.AreEqual(6, extents.MaxY);
        }
Exemple #28
0
        public static void Enumerator_Enumerates_Over_Coordinates()
        {
            List <CartesianCoordinate> coordinates = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(0, 0),
                new CartesianCoordinate(1, 2),
                new CartesianCoordinate(3, 4),
                new CartesianCoordinate(5, 6)
            };

            PointBoundary boundary = new PointBoundary(coordinates);

            int index = 0;

            foreach (CartesianCoordinate coordinate in boundary)
            {
                Assert.AreEqual(coordinates[index], coordinate);
                index++;
            }
        }
        public static void RotateAboutPoint_Rotates_Shape()
        {
            Polygon             polygon        = new Polygon(bowTieNonCrossingSegments);
            Angle               rotation       = new Angle(-Numbers.PiOver2);
            CartesianCoordinate referencePoint = new CartesianCoordinate(3, -1);

            Polygon       polygonRotated = polygon.RotateAboutPoint(rotation, referencePoint) as Polygon;
            PointBoundary pointBoundary  = polygonRotated.PointBoundary();

            Assert.AreEqual(6, pointBoundary[0].X, Tolerance);
            Assert.AreEqual(1, pointBoundary[0].Y, Tolerance);
            Assert.AreEqual(7, pointBoundary[1].X, Tolerance);
            Assert.AreEqual(2, pointBoundary[1].Y, Tolerance);
            Assert.AreEqual(5, pointBoundary[2].X, Tolerance);
            Assert.AreEqual(2, pointBoundary[2].Y, Tolerance);
            Assert.AreEqual(5, pointBoundary[4].X, Tolerance);
            Assert.AreEqual(0, pointBoundary[4].Y, Tolerance);
            Assert.AreEqual(7, pointBoundary[5].X, Tolerance);
            Assert.AreEqual(0, pointBoundary[5].Y, Tolerance);
        }
Exemple #30
0
        public static void RemoveAt_Removes_Coordinate_of_Specified_Index()
        {
            List <CartesianCoordinate> coordinates = new List <CartesianCoordinate>()
            {
                new CartesianCoordinate(0, 0),
                new CartesianCoordinate(1, 2),
                new CartesianCoordinate(3, 4),
                new CartesianCoordinate(5, 6)
            };

            PointBoundary boundary = new PointBoundary(coordinates);

            Assert.AreEqual(4, boundary.Count);
            Assert.AreEqual(1, boundary[1].X);
            Assert.AreEqual(2, boundary[1].Y);

            boundary.RemoveAt(1);
            Assert.AreEqual(3, boundary.Count);
            Assert.AreEqual(3, boundary[1].X);
            Assert.AreEqual(4, boundary[1].Y);
        }