public void LiangBarskyAlgorithmClipBasicPolygonTest() { BasicPolygon source = new BasicPolygon(new[] { new Coordinate(5, 12), new Coordinate(25, 12), new Coordinate(25, 18), new Coordinate(5, 18) }); IReadOnlyList <IReadOnlyList <Coordinate> > actual = LiangBarskyAlgorithm.Clip(source, this.clippingWindow); Coordinate[][] expected = new[] { new[] { new Coordinate(10, 12), new Coordinate(20, 12) }, new[] { new Coordinate(20, 18), new Coordinate(10, 18) } }; actual.ShouldBe(expected); }
public void LiangBarskyAlgorithmClipTest() { List <BasicLineString> actual = LiangBarskyAlgorithm.Clip(_basicLineString, _envelope).Select(l => new BasicLineString(l)).ToList(); List <BasicLineString> expected = new List <BasicLineString>() { new BasicLineString(new Coordinate[] { new Coordinate(10, 15), new Coordinate(15, 15), new Coordinate(20, 15) }) }; Assert.AreEqual(0, _comparer.Compare(actual, expected)); actual = LiangBarskyAlgorithm.Clip(_basicPolygons[0], _envelope).Select(l => new BasicLineString(l)).ToList(); expected = new List <BasicLineString>() { new BasicLineString(new Coordinate[] { new Coordinate(10, 12), new Coordinate(20, 12) }), new BasicLineString(new Coordinate[] { new Coordinate(20, 18), new Coordinate(10, 18) }) }; Assert.AreEqual(0, _comparer.Compare(actual, expected)); actual = LiangBarskyAlgorithm.Clip(_basicPolygons, _envelope).Select(l => new BasicLineString(l)).ToList(); expected = new List <BasicLineString>() { new BasicLineString(new Coordinate[] { new Coordinate(10, 12), new Coordinate(20, 12) }), new BasicLineString(new Coordinate[] { new Coordinate(20, 18), new Coordinate(10, 18) }), new BasicLineString(new Coordinate[] { new Coordinate(10, 12), new Coordinate(20, 12) }), new BasicLineString(new Coordinate[] { new Coordinate(20, 18), new Coordinate(10, 18) }) }; Assert.AreEqual(0, _comparer.Compare(actual, expected)); }
public void LiangBarskyAlgorithmComputeTest() { List <IReadOnlyList <Coordinate> > totalExpected = new List <IReadOnlyList <Coordinate> >(); Coordinate[][] expected = new[] { new[] { new Coordinate(10, 15), new Coordinate(15, 15), new Coordinate(20, 15) } }; totalExpected.AddRange(expected); LiangBarskyAlgorithm algorithm = new LiangBarskyAlgorithm(this.coordinates[0], this.clippingWindow); algorithm.Compute(); algorithm.Result.ShouldBe(expected); expected = new[] { new[] { new Coordinate(10, 15), new Coordinate(14, 15), new Coordinate(18, 15), new Coordinate(20, 15) } }; totalExpected.AddRange(expected); algorithm = new LiangBarskyAlgorithm(this.coordinates[1], this.clippingWindow); algorithm.Compute(); algorithm.Result.ShouldBe(expected); expected = new[] { new[] { new Coordinate(10, 15), new Coordinate(20, 15) } }; totalExpected.AddRange(expected); algorithm = new LiangBarskyAlgorithm(this.coordinates[2], this.clippingWindow); algorithm.Compute(); algorithm.Result.ShouldBe(expected); expected = new[] { new[] { new Coordinate(10, 12), new Coordinate(20, 12) }, new[] { new Coordinate(20, 18), new Coordinate(10, 18) } }; totalExpected.AddRange(expected); algorithm = new LiangBarskyAlgorithm(this.coordinates[3], this.clippingWindow); algorithm.Compute(); algorithm.Result.ShouldBe(expected); algorithm = new LiangBarskyAlgorithm(this.coordinates, this.clippingWindow); algorithm.Compute(); IEnumerable <IReadOnlyList <Coordinate> > totalResult = algorithm.Result; Int32 index = 0; foreach (IReadOnlyList <Coordinate> result in totalResult) { result.ShouldBe(totalExpected[index]); index++; } }
public void LiangBarskyAlgorithmComputeTest() { List <BasicLineString> totalExpected = new List <BasicLineString>(); LiangBarskyAlgorithm liangBarskyAlgorithm = new LiangBarskyAlgorithm(_lineStrings[0], _envelope); liangBarskyAlgorithm.Compute(); List <BasicLineString> actual = liangBarskyAlgorithm.Result.Select(lineString => new BasicLineString(lineString)).ToList(); List <BasicLineString> expected = new List <BasicLineString>() { new BasicLineString(new Coordinate[] { new Coordinate(10, 15), new Coordinate(15, 15), new Coordinate(20, 15) }) }; totalExpected.AddRange(expected); Assert.AreEqual(0, _comparer.Compare(actual, expected)); liangBarskyAlgorithm = new LiangBarskyAlgorithm(_lineStrings[1], _envelope); liangBarskyAlgorithm.Compute(); actual = liangBarskyAlgorithm.Result.Select(l => new BasicLineString(l)).ToList(); expected = new List <BasicLineString>() { new BasicLineString(new Coordinate[] { new Coordinate(10, 15), new Coordinate(14, 15), new Coordinate(18, 15), new Coordinate(20, 15) }) }; totalExpected.AddRange(expected); Assert.AreEqual(0, _comparer.Compare(actual, expected)); liangBarskyAlgorithm = new LiangBarskyAlgorithm(_lineStrings[2], _envelope); liangBarskyAlgorithm.Compute(); actual = liangBarskyAlgorithm.Result.Select(l => new BasicLineString(l)).ToList(); expected = new List <BasicLineString>() { new BasicLineString(new Coordinate[] { new Coordinate(10, 15), new Coordinate(20, 15) }) }; totalExpected.AddRange(expected); Assert.AreEqual(0, _comparer.Compare(actual, expected)); liangBarskyAlgorithm = new LiangBarskyAlgorithm(_lineStrings[3], _envelope); liangBarskyAlgorithm.Compute(); actual = liangBarskyAlgorithm.Result.Select(l => new BasicLineString(l)).ToList(); expected = new List <BasicLineString>() { new BasicLineString(new Coordinate[] { new Coordinate(10, 12), new Coordinate(20, 12) }), new BasicLineString(new Coordinate[] { new Coordinate(20, 18), new Coordinate(10, 18) }) }; totalExpected.AddRange(expected); Assert.AreEqual(0, _comparer.Compare(actual, expected)); liangBarskyAlgorithm = new LiangBarskyAlgorithm(_lineStrings[4], _envelope); liangBarskyAlgorithm.Compute(); actual = liangBarskyAlgorithm.Result.Select(l => new BasicLineString(l)).ToList(); expected = new List <BasicLineString>(); totalExpected.AddRange(expected); Assert.AreEqual(0, _comparer.Compare(actual, expected)); liangBarskyAlgorithm = new LiangBarskyAlgorithm(_lineStrings, _envelope); liangBarskyAlgorithm.Compute(); List <BasicLineString> totalActualLinestrings = liangBarskyAlgorithm.Result.Select(l => new BasicLineString(l)).ToList(); Assert.AreEqual(0, _comparer.Compare(totalActualLinestrings, totalExpected)); }