/*- * 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 . */ package de.hft.stuttgart.citydoctor2.check.error; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.List; import org.junit.Test; import de.hft.stuttgart.citydoctor2.check.QualityAdeErrorVisitor; import de.hft.stuttgart.citydoctor2.datastructure.Edge; import de.hft.stuttgart.citydoctor2.datastructure.Geometry; import de.hft.stuttgart.citydoctor2.datastructure.GeometryType; import de.hft.stuttgart.citydoctor2.datastructure.GmlId; import de.hft.stuttgart.citydoctor2.datastructure.Lod; import de.hft.stuttgart.citydoctor2.datastructure.Vertex; import de.hft.stuttgart.quality.model.properties.AbstractErrorProperty; import de.hft.stuttgart.quality.model.properties.EdgeProperty; import de.hft.stuttgart.quality.model.types.AbstractError; import de.hft.stuttgart.quality.model.types.ValidationResult; public class PolygonWrongOrientationErrorTest { @Test public void testConvertToQualityAdeDatastructure() { Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2); GmlId geomId = new GmlId("geomId"); geom.setGmlId(geomId); Vertex v1 = new Vertex(1, 2, 3); Vertex v2 = new Vertex(4, 5, 6); Vertex v3 = new Vertex(7, 8, 9); Edge e1 = new Edge(v1, v2); Edge e2 = new Edge(v2, v3); List edges = new ArrayList<>(); edges.add(e1); edges.add(e2); PolygonWrongOrientationError err = new PolygonWrongOrientationError(geom, edges); ValidationResult result = new ValidationResult(); QualityAdeErrorVisitor visitor = new QualityAdeErrorVisitor(result); err.accept(visitor); List errors = result.getErrors(); assertEquals(1, errors.size()); AbstractError ae = errors.get(0).getObject(); assertTrue(ae instanceof de.hft.stuttgart.quality.model.types.PolygonWrongOrientationError); var adeErr = (de.hft.stuttgart.quality.model.types.PolygonWrongOrientationError) ae; assertEquals(geomId.getGmlString(), adeErr.getGeometryId()); List adeEdges = adeErr.getEdges().getObject().getEdges(); de.hft.stuttgart.quality.model.types.Edge adeE1 = adeEdges.get(0).getObject(); de.hft.stuttgart.quality.model.types.Edge adeE2 = adeEdges.get(1).getObject(); assertEquals(1, adeE1.getFrom().getValue().get(0), 0.00001); assertEquals(4, adeE1.getTo().getValue().get(0), 0.00001); assertEquals(7, adeE2.getTo().getValue().get(0), 0.00001); } }