public void testUnionSloppySuccess()
        {
            var polygons = new List <S2Polygon>();

            polygons.Add(adj0);
            polygons.Add(adj1);
            var union = S2Polygon.DestructiveUnionSloppy(polygons, S1Angle.FromDegrees(0.1));

            assertEquals(1, union.NumLoops);
            if (union.NumLoops != 1)
            {
                return;
            }
            var s2Loop = union.Loop(0);

            assertEquals(8, s2Loop.NumVertices);
            if (s2Loop.NumVertices != 8)
            {
                return;
            }
            assertPointApproximatelyEquals(s2Loop, 0, 2.0, 0.0, 0.01);
            assertPointApproximatelyEquals(s2Loop, 1, 1.0, 0.0, 0.01);
            assertPointApproximatelyEquals(s2Loop, 2, 0.0, 0.0, 0.01);
            assertPointApproximatelyEquals(s2Loop, 3, 0.0, 1.0, 0.01);
            assertPointApproximatelyEquals(s2Loop, 4, 0.0, 2.0, 0.01);
            assertPointApproximatelyEquals(s2Loop, 5, 1.0, 2.0, 0.01);
            assertPointApproximatelyEquals(s2Loop, 6, 2.0, 2.0, 0.01);
            assertPointApproximatelyEquals(s2Loop, 7, 2.0, 1.0, 0.01);
        }
        public void testUnionSloppyFailure()
        {
            var polygons = new List <S2Polygon>();

            polygons.Add(adj0);
            polygons.Add(unAdj);
            // The polygons are sufficiently far apart that this angle will not
            // bring them together:
            var union = S2Polygon.DestructiveUnionSloppy(polygons, S1Angle.FromDegrees(0.1));

            assertEquals(2, union.NumLoops);
        }