diff --git a/CityDoctorParent/CityDoctorModel/src/test/java/de/hft/stuttgart/citydoctor2/datastructure/AbstractBuildingTest.java b/CityDoctorParent/CityDoctorModel/src/test/java/de/hft/stuttgart/citydoctor2/datastructure/AbstractBuildingTest.java index e3d2e084ec7240033122e6652feff7bc93588ce6..e8dd88b4efdcbf936b3846cf0afba2a2b07fa6f1 100644 --- a/CityDoctorParent/CityDoctorModel/src/test/java/de/hft/stuttgart/citydoctor2/datastructure/AbstractBuildingTest.java +++ b/CityDoctorParent/CityDoctorModel/src/test/java/de/hft/stuttgart/citydoctor2/datastructure/AbstractBuildingTest.java @@ -52,7 +52,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.Requirement; import de.hft.stuttgart.citydoctor2.check.RequirementType; import de.hft.stuttgart.citydoctor2.check.ResultStatus; -import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType; import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration; public class AbstractBuildingTest { @@ -278,7 +277,7 @@ public class AbstractBuildingTest { @Test public void testReCreateGeometriesSolid() { - Geometry geom = createDummyGeometry(GeometryType.SOLID); + Geometry geom = GeometryTestUtils.createDummyGeometry(GeometryType.SOLID); AbstractBuilding ab = new AbstractBuilding() { private static final long serialVersionUID = -448362592456318541L; @@ -317,7 +316,7 @@ public class AbstractBuildingTest { @Test public void testReCreateGeometriesMultiSurface() { - Geometry geom = createDummyGeometry(GeometryType.MULTI_SURFACE); + Geometry geom = GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE); AbstractBuilding ab = new AbstractBuilding() { private static final long serialVersionUID = -448362592456318541L; @@ -332,26 +331,6 @@ public class AbstractBuildingTest { assertNotNull(gmlAb.getLod2MultiSurface().getGeometry()); } - private Geometry createDummyGeometry(GeometryType type) { - Geometry geom = new Geometry(type, Lod.LOD2); - ConcretePolygon polygon = new ConcretePolygon(); - geom.getPolygons().add(polygon); - polygon.setParent(geom); - LinearRing lr = new LinearRing(LinearRingType.EXTERIOR); - polygon.setExteriorRing(lr); - Vertex v1 = new Vertex(427583.301, 6003502.571, 9.711); - lr.getVertices().add(v1); - Vertex v2 = new Vertex(427583.304, 6003502.574, 9.713); - lr.getVertices().add(v2); - Vertex v3 = new Vertex(427583.304, 6003502.574, 4.097); - lr.getVertices().add(v3); - Vertex v4 = new Vertex(427583.301, 6003502.571, 4.097); - lr.getVertices().add(v4); - lr.getVertices().add(v1); - geom.updateEdgesAndVertices(); - return geom; - } - @Test public void testReCreateGeometriesBs() { BoundarySurface bsMock = Mockito.mock(BoundarySurface.class); @@ -359,7 +338,7 @@ public class AbstractBuildingTest { private static final long serialVersionUID = -448362592456318541L; }; List<Geometry> geometries = new ArrayList<>(); - geometries.add(createDummyGeometry(GeometryType.MULTI_SURFACE)); + geometries.add(GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE)); Mockito.when(bsMock.getGeometries()).thenReturn(geometries); ab.addBoundarySurface(bsMock); org.citygml4j.model.citygml.building.AbstractBuilding gmlAb = new org.citygml4j.model.citygml.building.Building(); diff --git a/CityDoctorParent/CityDoctorModel/src/test/java/de/hft/stuttgart/citydoctor2/datastructure/BoundarySurfaceTest.java b/CityDoctorParent/CityDoctorModel/src/test/java/de/hft/stuttgart/citydoctor2/datastructure/BoundarySurfaceTest.java new file mode 100644 index 0000000000000000000000000000000000000000..b86dd653115a68c04fa29a13bc950bcf9d354217 --- /dev/null +++ b/CityDoctorParent/CityDoctorModel/src/test/java/de/hft/stuttgart/citydoctor2/datastructure/BoundarySurfaceTest.java @@ -0,0 +1,481 @@ +/*- + * Copyright 2020 Beuth Hochschule für Technik Berlin, Hochschule für Technik Stuttgart + * + * This file is part of CityDoctor2. + * + * CityDoctor2 is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * CityDoctor2 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with CityDoctor2. If not, see <https://www.gnu.org/licenses/>. + */ +package de.hft.stuttgart.citydoctor2.datastructure; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.concurrent.atomic.AtomicInteger; + +import org.citygml4j.factory.GMLGeometryFactory; +import org.citygml4j.model.citygml.building.WallSurface; +import org.citygml4j.model.citygml.core.AbstractCityObject; +import org.citygml4j.model.gml.geometry.aggregates.MultiSurfaceProperty; +import org.junit.Test; +import org.mockito.Mockito; + +import de.hft.stuttgart.citydoctor2.check.Check; +import de.hft.stuttgart.citydoctor2.check.CheckError; +import de.hft.stuttgart.citydoctor2.check.CheckId; +import de.hft.stuttgart.citydoctor2.check.CheckResult; +import de.hft.stuttgart.citydoctor2.check.Requirement; +import de.hft.stuttgart.citydoctor2.check.RequirementType; +import de.hft.stuttgart.citydoctor2.check.ResultStatus; +import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration; + +public class BoundarySurfaceTest { + + @Test + public void testAccept() { + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.WALL, null); + Opening oMock = Mockito.mock(Opening.class); + bs.addOpening(oMock); + AtomicInteger bsCounter = new AtomicInteger(0); + Check c = new Check() { + + @Override + public Set<Requirement> appliesToRequirements() { + return null; + } + + @Override + public CheckId getCheckId() { + return null; + } + + @Override + public RequirementType getType() { + return null; + } + + @Override + public Check createNewInstance() { + return null; + } + + @Override + public void check(BoundarySurface bs) { + bsCounter.incrementAndGet(); + } + }; + bs.accept(c); + Mockito.verify(oMock).accept(c); + assertEquals(1, bsCounter.intValue()); + } + + @Test + public void testAcceptWithoutFittingCheck() { + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.WALL, null); + Opening oMock = Mockito.mock(Opening.class); + bs.addOpening(oMock); + AtomicInteger bsCounter = new AtomicInteger(0); + Check c = new Check() { + + @Override + public Set<Requirement> appliesToRequirements() { + return null; + } + + @Override + public CheckId getCheckId() { + return null; + } + + @Override + public RequirementType getType() { + return null; + } + + @Override + public Check createNewInstance() { + return null; + } + + @Override + public void check(BridgeObject bo) { + bsCounter.incrementAndGet(); + } + }; + bs.accept(c); + Mockito.verify(oMock).accept(c); + assertEquals(0, bsCounter.intValue()); + } + + @Test + public void testPrepareForChecking() { + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.WALL, null); + Opening oMock = Mockito.mock(Opening.class); + bs.addOpening(oMock); + bs.prepareForChecking(); + Mockito.verify(oMock).prepareForChecking(); + } + + @Test + public void testClearMetaInformation() { + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.WALL, null); + Opening oMock = Mockito.mock(Opening.class); + bs.addOpening(oMock); + bs.clearMetaInformation(); + Mockito.verify(oMock).clearMetaInformation(); + } + + @Test + public void testContainsError() { + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.WALL, null); + assertFalse(bs.containsError(CheckId.C_GE_P_HOLE_OUTSIDE)); + bs.addCheckResult( + new CheckResult(CheckId.C_GE_P_HOLE_OUTSIDE, ResultStatus.ERROR, Mockito.mock(CheckError.class))); + assertTrue(bs.containsError(CheckId.C_GE_P_HOLE_OUTSIDE)); + assertFalse(bs.containsError(CheckId.C_GE_P_INNER_RINGS_NESTED)); + } + + @Test + public void testContainsErrorInOpening() { + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.WALL, null); + assertFalse(bs.containsError(CheckId.C_GE_P_HOLE_OUTSIDE)); + Opening o = new Opening(OpeningType.WINDOW, SurfaceFeatureType.BUILDING, bs, null); + bs.addOpening(o); + o.addCheckResult( + new CheckResult(CheckId.C_GE_P_HOLE_OUTSIDE, ResultStatus.ERROR, Mockito.mock(CheckError.class))); + assertTrue(bs.containsError(CheckId.C_GE_P_HOLE_OUTSIDE)); + assertFalse(bs.containsError(CheckId.C_GE_P_INNER_RINGS_NESTED)); + } + + @Test + public void testClearAllContainedCheckResults() { + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.WALL, null); + Opening oMock = Mockito.mock(Opening.class); + bs.addCheckResult( + new CheckResult(CheckId.C_GE_P_HOLE_OUTSIDE, ResultStatus.ERROR, Mockito.mock(CheckError.class))); + assertFalse(bs.getAllCheckResults().isEmpty()); + bs.addOpening(oMock); + bs.clearAllContainedCheckResults(); + Mockito.verify(oMock).clearAllContainedCheckResults(); + assertTrue(bs.getAllCheckResults().isEmpty()); + } + + @Test + public void testContainsAnyError() { + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.WALL, null); + Opening oMock = Mockito.mock(Opening.class); + bs.addOpening(oMock); + assertFalse(bs.containsAnyError()); + Mockito.verify(oMock).containsAnyError(); + bs.addCheckResult( + new CheckResult(CheckId.C_GE_P_HOLE_OUTSIDE, ResultStatus.ERROR, Mockito.mock(CheckError.class))); + assertTrue(bs.containsAnyError()); + } + + @Test + public void testContainsAnyErrorInOpeing() { + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.WALL, null); + Opening oMock = Mockito.mock(Opening.class); + bs.addOpening(oMock); + Mockito.when(oMock.containsAnyError()).thenReturn(true); + assertTrue(bs.containsAnyError()); + } + + @Test + public void testCollectContainedErrors() { + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.WALL, null); + Opening oMock = Mockito.mock(Opening.class); + bs.addCheckResult( + new CheckResult(CheckId.C_GE_P_HOLE_OUTSIDE, ResultStatus.ERROR, Mockito.mock(CheckError.class))); + bs.addOpening(oMock); + + List<CheckError> errors = new ArrayList<>(); + bs.collectContainedErrors(errors); + assertEquals(1, errors.size()); + Mockito.verify(oMock).collectContainedErrors(errors); + } + + @Test + public void testReCreateGeometriesWithoutId() { + WallSurface ws = new WallSurface(); + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.WALL, ws); + bs.reCreateGeometries(new GMLGeometryFactory(), new ParserConfiguration(8, false)); + assertNotNull(ws.getId()); + } + + @Test + public void testReCreateGeometriesWithId() { + WallSurface ws = new WallSurface(); + ws.setId("test"); + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.WALL, ws); + bs.reCreateGeometries(new GMLGeometryFactory(), new ParserConfiguration(8, false)); + // nothing has changed + assertEquals("test", ws.getId()); + assertNull(ws.getLod2MultiSurface()); + assertNull(ws.getLod3MultiSurface()); + assertNull(ws.getLod4MultiSurface()); + } + + @Test + public void testReCreateGeometriesMultiSurfaceLod2() { + WallSurface ws = new WallSurface(); + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.WALL, ws); + bs.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE)); + bs.reCreateGeometries(new GMLGeometryFactory(), new ParserConfiguration(8, false)); + assertNotNull(ws.getLod2MultiSurface()); + assertNull(ws.getLod3MultiSurface()); + assertNull(ws.getLod4MultiSurface()); + } + + @Test + public void testReCreateGeometriesMultiSurfaceBridgeLod2() { + org.citygml4j.model.citygml.bridge.WallSurface ws = new org.citygml4j.model.citygml.bridge.WallSurface(); + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BRIDGE, BoundarySurfaceType.WALL, ws); + bs.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE)); + bs.reCreateGeometries(new GMLGeometryFactory(), new ParserConfiguration(8, false)); + assertNotNull(ws.getLod2MultiSurface()); + assertNull(ws.getLod3MultiSurface()); + assertNull(ws.getLod4MultiSurface()); + } + + @Test + public void testReCreateGeometriesMultiSurfaceBridgeLod3() { + org.citygml4j.model.citygml.bridge.WallSurface ws = new org.citygml4j.model.citygml.bridge.WallSurface(); + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BRIDGE, BoundarySurfaceType.WALL, ws); + bs.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE, Lod.LOD3)); + bs.reCreateGeometries(new GMLGeometryFactory(), new ParserConfiguration(8, false)); + assertNull(ws.getLod2MultiSurface()); + assertNotNull(ws.getLod3MultiSurface()); + assertNull(ws.getLod4MultiSurface()); + } + + @Test + public void testReCreateGeometriesMultiSurfaceBridgeLod4() { + org.citygml4j.model.citygml.bridge.WallSurface ws = new org.citygml4j.model.citygml.bridge.WallSurface(); + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BRIDGE, BoundarySurfaceType.WALL, ws); + bs.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE, Lod.LOD4)); + bs.reCreateGeometries(new GMLGeometryFactory(), new ParserConfiguration(8, false)); + assertNull(ws.getLod2MultiSurface()); + assertNull(ws.getLod3MultiSurface()); + assertNotNull(ws.getLod4MultiSurface()); + } + + @Test + public void testReCreateGeometriesMultiSurfaceTunnelLod2() { + org.citygml4j.model.citygml.tunnel.WallSurface ws = new org.citygml4j.model.citygml.tunnel.WallSurface(); + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.TUNNEL, BoundarySurfaceType.WALL, ws); + bs.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE)); + bs.reCreateGeometries(new GMLGeometryFactory(), new ParserConfiguration(8, false)); + assertNotNull(ws.getLod2MultiSurface()); + assertNull(ws.getLod3MultiSurface()); + assertNull(ws.getLod4MultiSurface()); + } + + @Test + public void testReCreateGeometriesMultiSurfaceTunnelLod3() { + org.citygml4j.model.citygml.tunnel.WallSurface ws = new org.citygml4j.model.citygml.tunnel.WallSurface(); + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.TUNNEL, BoundarySurfaceType.WALL, ws); + bs.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE, Lod.LOD3)); + bs.reCreateGeometries(new GMLGeometryFactory(), new ParserConfiguration(8, false)); + assertNull(ws.getLod2MultiSurface()); + assertNotNull(ws.getLod3MultiSurface()); + assertNull(ws.getLod4MultiSurface()); + } + + @Test + public void testReCreateGeometriesMultiSurfaceTunnelLod4() { + org.citygml4j.model.citygml.tunnel.WallSurface ws = new org.citygml4j.model.citygml.tunnel.WallSurface(); + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.TUNNEL, BoundarySurfaceType.WALL, ws); + bs.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE, Lod.LOD4)); + bs.reCreateGeometries(new GMLGeometryFactory(), new ParserConfiguration(8, false)); + assertNull(ws.getLod2MultiSurface()); + assertNull(ws.getLod3MultiSurface()); + assertNotNull(ws.getLod4MultiSurface()); + } + + @Test + public void testReCreateGeometriesMultiSurfaceLod3() { + WallSurface ws = new WallSurface(); + ws.setId("test"); + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.WALL, ws); + bs.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE, Lod.LOD3)); + bs.reCreateGeometries(new GMLGeometryFactory(), new ParserConfiguration(8, false)); + assertNull(ws.getLod2MultiSurface()); + assertNotNull(ws.getLod3MultiSurface()); + assertNull(ws.getLod4MultiSurface()); + } + + @Test + public void testReCreateGeometriesMultiSurfaceLod4() { + WallSurface ws = new WallSurface(); + ws.setId("test"); + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.WALL, ws); + bs.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE, Lod.LOD4)); + bs.reCreateGeometries(new GMLGeometryFactory(), new ParserConfiguration(8, false)); + assertNull(ws.getLod2MultiSurface()); + assertNull(ws.getLod3MultiSurface()); + assertNotNull(ws.getLod4MultiSurface()); + } + + @Test(expected = IllegalStateException.class) + public void testReCreateGeometriesMultiSurfaceLod1() { + WallSurface ws = new WallSurface(); + ws.setId("test"); + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.WALL, ws); + bs.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE, Lod.LOD1)); + bs.reCreateGeometries(new GMLGeometryFactory(), new ParserConfiguration(8, false)); + } + + @Test(expected = IllegalStateException.class) + public void testReCreateGeometriesSolid() { + WallSurface ws = new WallSurface(); + ws.setId("test"); + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.WALL, ws); + bs.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.SOLID)); + bs.reCreateGeometries(new GMLGeometryFactory(), new ParserConfiguration(8, false)); + } + + @Test + public void testReCreateGeometriesOpenings() { + WallSurface ws = new WallSurface(); + ws.setId("test"); + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.WALL, ws); + Opening oMock = Mockito.mock(Opening.class); + bs.addOpening(oMock); + GMLGeometryFactory factory = new GMLGeometryFactory(); + ParserConfiguration config = new ParserConfiguration(8, false); + bs.reCreateGeometries(factory, config); + Mockito.verify(oMock).reCreateGeometries(factory, config); + } + + @Test + public void testGetGmlObject() { + WallSurface ws = new WallSurface(); + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.WALL, ws); + assertEquals(ws, bs.getGmlObject()); + } + + @Test + public void testUnsetGmlGeometriesBuilding() { + WallSurface ws = new WallSurface(); + ws.setLod2MultiSurface(new MultiSurfaceProperty()); + ws.setLod3MultiSurface(new MultiSurfaceProperty()); + ws.setLod4MultiSurface(new MultiSurfaceProperty()); + assertNotNull(ws.getLod2MultiSurface()); + assertNotNull(ws.getLod3MultiSurface()); + assertNotNull(ws.getLod4MultiSurface()); + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.WALL, ws); + Opening oMock = Mockito.mock(Opening.class); + bs.addOpening(oMock); + bs.unsetGmlGeometries(); + Mockito.verify(oMock).unsetGmlGeometries(); + assertNull(ws.getLod2MultiSurface()); + assertNull(ws.getLod3MultiSurface()); + assertNull(ws.getLod4MultiSurface()); + } + + @Test + public void testUnsetGmlGeometriesBridge() { + org.citygml4j.model.citygml.bridge.WallSurface ws = new org.citygml4j.model.citygml.bridge.WallSurface(); + ws.setLod2MultiSurface(new MultiSurfaceProperty()); + ws.setLod3MultiSurface(new MultiSurfaceProperty()); + ws.setLod4MultiSurface(new MultiSurfaceProperty()); + assertNotNull(ws.getLod2MultiSurface()); + assertNotNull(ws.getLod3MultiSurface()); + assertNotNull(ws.getLod4MultiSurface()); + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BRIDGE, BoundarySurfaceType.WALL, ws); + bs.unsetGmlGeometries(); + assertNull(ws.getLod2MultiSurface()); + assertNull(ws.getLod3MultiSurface()); + assertNull(ws.getLod4MultiSurface()); + } + + @Test + public void testUnsetGmlGeometriesTunnel() { + org.citygml4j.model.citygml.tunnel.WallSurface ws = new org.citygml4j.model.citygml.tunnel.WallSurface(); + ws.setLod2MultiSurface(new MultiSurfaceProperty()); + ws.setLod3MultiSurface(new MultiSurfaceProperty()); + ws.setLod4MultiSurface(new MultiSurfaceProperty()); + assertNotNull(ws.getLod2MultiSurface()); + assertNotNull(ws.getLod3MultiSurface()); + assertNotNull(ws.getLod4MultiSurface()); + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.TUNNEL, BoundarySurfaceType.WALL, ws); + bs.unsetGmlGeometries(); + assertNull(ws.getLod2MultiSurface()); + assertNull(ws.getLod3MultiSurface()); + assertNull(ws.getLod4MultiSurface()); + } + + @Test(expected = UnsupportedOperationException.class) + public void testCopy() { + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.TUNNEL, BoundarySurfaceType.WALL, null); + bs.copy(); + } + + @Test + public void testGetFeatureType() { + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.TUNNEL, BoundarySurfaceType.WALL, null); + assertEquals(FeatureType.BOUNDARY_SURFACE, bs.getFeatureType()); + } + + @Test + public void testBoundarySurfaceAbstractCityObject() { + AbstractCityObject aco = Mockito.mock(AbstractCityObject.class); + BoundarySurface bs = new BoundarySurface(aco); + assertEquals(aco, bs.getGmlObject()); + } + + @Test + public void testSetFeatureType() { + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.TUNNEL, BoundarySurfaceType.WALL, null); + bs.setFeatureType(SurfaceFeatureType.BRIDGE); + assertEquals(SurfaceFeatureType.BRIDGE, bs.getSurfaceFeatureType()); + } + + @Test + public void testSetType() { + BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.TUNNEL, BoundarySurfaceType.WALL, null); + bs.setType(BoundarySurfaceType.ROOF); + assertEquals(BoundarySurfaceType.ROOF, bs.getType()); + } + + @Test + public void testSetGmlObject() { + AbstractCityObject aco = Mockito.mock(AbstractCityObject.class); + BoundarySurface bs = new BoundarySurface(null); + bs.setGmlObject(aco); + assertEquals(aco, bs.getGmlObject()); + } + + @Test + public void testGetOpenings() { + Opening oMock = Mockito.mock(Opening.class); + BoundarySurface bs = new BoundarySurface(null); + bs.addOpening(oMock); + assertEquals(oMock, bs.getOpenings().get(0)); + } + + @Test + public void testSetParent() { + BoundarySurface bs = new BoundarySurface(null); + CityObject co = Mockito.mock(CityObject.class); + bs.setParent(co); + assertEquals(co, bs.getParent()); + } +} diff --git a/CityDoctorParent/CityDoctorModel/src/test/java/de/hft/stuttgart/citydoctor2/datastructure/GeometryTestUtils.java b/CityDoctorParent/CityDoctorModel/src/test/java/de/hft/stuttgart/citydoctor2/datastructure/GeometryTestUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..1b3f78fe55a26d005a6bf95d8bf086df199d3414 --- /dev/null +++ b/CityDoctorParent/CityDoctorModel/src/test/java/de/hft/stuttgart/citydoctor2/datastructure/GeometryTestUtils.java @@ -0,0 +1,52 @@ +/*- + * Copyright 2020 Beuth Hochschule für Technik Berlin, Hochschule für Technik Stuttgart + * + * This file is part of CityDoctor2. + * + * CityDoctor2 is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * CityDoctor2 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with CityDoctor2. If not, see <https://www.gnu.org/licenses/>. + */ +package de.hft.stuttgart.citydoctor2.datastructure; + +import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType; + +public class GeometryTestUtils { + + private GeometryTestUtils() { + } + + public static Geometry createDummyGeometry(GeometryType type) { + return createDummyGeometry(type, Lod.LOD2); + } + + public static Geometry createDummyGeometry(GeometryType type, Lod lod) { + Geometry geom = new Geometry(type, lod); + ConcretePolygon polygon = new ConcretePolygon(); + geom.getPolygons().add(polygon); + polygon.setParent(geom); + LinearRing lr = new LinearRing(LinearRingType.EXTERIOR); + polygon.setExteriorRing(lr); + Vertex v1 = new Vertex(427583.301, 6003502.571, 9.711); + lr.getVertices().add(v1); + Vertex v2 = new Vertex(427583.304, 6003502.574, 9.713); + lr.getVertices().add(v2); + Vertex v3 = new Vertex(427583.304, 6003502.574, 4.097); + lr.getVertices().add(v3); + Vertex v4 = new Vertex(427583.301, 6003502.571, 4.097); + lr.getVertices().add(v4); + lr.getVertices().add(v1); + geom.updateEdgesAndVertices(); + return geom; + } + +}