Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
CityDoctor
CityDoctor2
Commits
d1ff5020
Commit
d1ff5020
authored
May 24, 2025
by
Beuster
Browse files
Merge remote-tracking branch 'origin/dev' into dev_cpp_code_conversion
parents
06ad5a8e
b50c5f13
Pipeline
#11130
passed with stage
in 1 minute and 28 seconds
Changes
179
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/utils/Copy.java
View file @
d1ff5020
...
...
@@ -27,6 +27,7 @@ import java.io.ByteArrayOutputStream;
import
java.io.IOException
;
import
java.io.ObjectInputStream
;
import
java.io.ObjectOutputStream
;
import
java.io.Serializable
;
public
class
Copy
{
...
...
@@ -36,7 +37,7 @@ public class Copy {
}
@SuppressWarnings
(
"unchecked"
)
public
static
<
T
extends
Copy
able
>
T
copy
(
T
original
)
{
public
static
<
T
extends
Serializ
able
>
T
copy
(
T
original
)
{
ByteArrayOutputStream
out
=
new
ByteArrayOutputStream
();
try
{
ObjectOutputStream
oos
=
new
ObjectOutputStream
(
out
);
...
...
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/utils/CopyHandler.java
deleted
100644 → 0
View file @
06ad5a8e
/*-
* 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.utils
;
import
java.util.Collection
;
import
java.util.HashSet
;
import
java.util.IdentityHashMap
;
import
java.util.Iterator
;
import
java.util.Map
;
import
java.util.Map.Entry
;
import
java.util.Set
;
public
class
CopyHandler
{
private
final
Set
<
Copyable
>
toBeDoneInstances
=
new
HashSet
<>();
private
final
Map
<
Copyable
,
Copyable
>
finishedInstances
=
new
IdentityHashMap
<>();
@SuppressWarnings
(
"unchecked"
)
public
<
T
extends
Copyable
>
T
copy
(
T
original
)
{
toBeDoneInstances
.
add
(
original
);
while
(!
toBeDoneInstances
.
isEmpty
())
{
handleNextInstance
();
}
for
(
Entry
<
Copyable
,
Copyable
>
e
:
finishedInstances
.
entrySet
())
{
e
.
getValue
().
fillValues
(
e
.
getKey
(),
this
);
}
return
(
T
)
finishedInstances
.
get
(
original
);
}
@SuppressWarnings
(
"unchecked"
)
public
<
T
extends
Copyable
>
T
getCopyInstance
(
T
original
)
{
if
(
original
==
null
)
{
// null gets copied to null
return
null
;
}
return
(
T
)
finishedInstances
.
get
(
original
);
}
public
void
addInstance
(
Copyable
copyable
)
{
if
(
copyable
==
null
)
{
// don't care for null instances
return
;
}
if
(
finishedInstances
.
containsKey
(
copyable
))
{
// already processed
return
;
}
toBeDoneInstances
.
add
(
copyable
);
}
private
void
handleNextInstance
()
{
Iterator
<
Copyable
>
iterator
=
toBeDoneInstances
.
iterator
();
Copyable
next
=
iterator
.
next
();
iterator
.
remove
();
finishedInstances
.
put
(
next
,
next
.
createCopyInstance
());
next
.
collectInstances
(
this
);
}
public
void
addInstance
(
Collection
<?
extends
Copyable
>
collection
)
{
if
(
collection
==
null
)
{
return
;
}
for
(
Copyable
c
:
collection
)
{
addInstance
(
c
);
}
}
}
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/utils/Copyable.java
deleted
100644 → 0
View file @
06ad5a8e
/*-
* 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.utils
;
public
interface
Copyable
{
public
void
collectInstances
(
CopyHandler
handler
);
public
Copyable
createCopyInstance
();
public
void
fillValues
(
Copyable
original
,
CopyHandler
handler
);
}
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/utils/ThrowUtils.java
0 → 100644
View file @
d1ff5020
package
de.hft.stuttgart.citydoctor2.utils
;
public
class
ThrowUtils
{
private
ThrowUtils
()
{
}
@SuppressWarnings
(
"unchecked"
)
private
static
<
T
extends
Throwable
>
void
uncheckThrowable
(
Throwable
t
)
throws
T
{
throw
(
T
)
t
;
}
/**
* Throws a Throwable as an unchecked generic Throwable
*/
public
static
void
sneakyThrow
(
Throwable
t
)
{
uncheckThrowable
(
t
);
}
}
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/utils/visitors/CheckableErrorCollector.java
0 → 100644
View file @
d1ff5020
package
de.hft.stuttgart.citydoctor2.utils.visitors
;
import
de.hft.stuttgart.citydoctor2.check.CheckableUtilsVisitor
;
import
de.hft.stuttgart.citydoctor2.check.CheckError
;
import
de.hft.stuttgart.citydoctor2.check.Checkable
;
import
java.util.List
;
/**
* This Visitor collects all CheckErrors in the datastructure of a checkable.
*/
public
class
CheckableErrorCollector
extends
CheckableUtilsVisitor
{
List
<
CheckError
>
errors
;
/**
* Collects all CheckErrors into a list
*
* @param errors the list
*/
public
CheckableErrorCollector
(
List
<
CheckError
>
errors
)
{
this
.
errors
=
errors
;
}
@Override
public
void
check
(
Checkable
checkable
)
{
checkable
.
collectErrors
(
errors
);
}
}
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/utils/visitors/CityObjectCollector.java
0 → 100644
View file @
d1ff5020
package
de.hft.stuttgart.citydoctor2.utils.visitors
;
import
de.hft.stuttgart.citydoctor2.check.CheckableUtilsVisitor
;
import
de.hft.stuttgart.citydoctor2.datastructure.CityObject
;
import
java.util.HashSet
;
import
java.util.Set
;
/**
* This Visitor collects all sub-CityObjects that are in the datastructure of a CityObject (including itself) in a Set.
*/
public
class
CityObjectCollector
extends
CheckableUtilsVisitor
{
private
final
Set
<
CityObject
>
objects
=
new
HashSet
<>();
/**
* Returns the collected CityObjects.
*
* @return A set of CityObjects
*/
public
Set
<
CityObject
>
getCityObjects
()
{
return
objects
;
}
@Override
public
void
check
(
CityObject
co
)
{
objects
.
add
(
co
);
}
}
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/utils/visitors/ClearMetaInformationVisitor.java
0 → 100644
View file @
d1ff5020
package
de.hft.stuttgart.citydoctor2.utils.visitors
;
import
de.hft.stuttgart.citydoctor2.check.CheckableUtilsVisitor
;
import
de.hft.stuttgart.citydoctor2.datastructure.Geometry
;
/**
* This Visitor removes the metadata created by the {@link PrepareForCheckingVisitor} for the low-memory consumption mode.
*/
public
class
ClearMetaInformationVisitor
extends
CheckableUtilsVisitor
{
@Override
public
void
check
(
Geometry
geometry
)
{
geometry
.
clearMetaData
();
}
}
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/utils/visitors/ClearVisitorResultsVisitor.java
0 → 100644
View file @
d1ff5020
package
de.hft.stuttgart.citydoctor2.utils.visitors
;
import
de.hft.stuttgart.citydoctor2.check.CheckableUtilsVisitor
;
import
de.hft.stuttgart.citydoctor2.check.Checkable
;
/**
* This Visitor removes the check results from a CityObject and the objects in its datastructure.
*/
public
class
ClearVisitorResultsVisitor
extends
CheckableUtilsVisitor
{
@Override
public
void
check
(
Checkable
checkable
)
{
checkable
.
clearCheckResults
();
}
}
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/utils/visitors/ContainsAnyErrorVisitor.java
0 → 100644
View file @
d1ff5020
package
de.hft.stuttgart.citydoctor2.utils.visitors
;
import
de.hft.stuttgart.citydoctor2.check.CheckableUtilsVisitor
;
import
de.hft.stuttgart.citydoctor2.check.Checkable
;
import
de.hft.stuttgart.citydoctor2.utils.CheckErrorFound
;
import
de.hft.stuttgart.citydoctor2.utils.ThrowUtils
;
/**
* This visitor checks if a checkable contains any error in its datastructure.
* <p><p/>
* This visitor's check method terminates early by throwing an unchecked {@link CheckErrorFound},
* use {@link #checkObject(Checkable) ContainsAnyErrorVisitor.checkObject(Checkable)} to handle the Throwable.
*/
public
class
ContainsAnyErrorVisitor
extends
CheckableUtilsVisitor
{
/**
* Checks if a Checkable, or any Object in its datastructure, contains any error.
* <p>
* Terminates early upon finding an error by throwing {@link CheckErrorFound}
*
* @param checkable The object to check
* @throws CheckErrorFound when any Error is found
*/
public
static
void
checkObject
(
Checkable
checkable
)
throws
CheckErrorFound
{
checkable
.
accept
(
new
ContainsAnyErrorVisitor
());
}
@Override
public
void
check
(
Checkable
checkable
)
{
if
(
checkable
.
hasAnyError
())
{
ThrowUtils
.
sneakyThrow
(
new
CheckErrorFound
());
}
}
}
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/utils/visitors/ContainsErrorVisitor.java
0 → 100644
View file @
d1ff5020
package
de.hft.stuttgart.citydoctor2.utils.visitors
;
import
de.hft.stuttgart.citydoctor2.check.CheckableUtilsVisitor
;
import
de.hft.stuttgart.citydoctor2.check.CheckId
;
import
de.hft.stuttgart.citydoctor2.check.Checkable
;
import
de.hft.stuttgart.citydoctor2.utils.CheckErrorFound
;
import
de.hft.stuttgart.citydoctor2.utils.ThrowUtils
;
/**
* This visitor checks if a checkable contains a specific error in its datastructure.
* <p><p/>
* This visitor's check method terminates early by throwing an unchecked {@link CheckErrorFound},
* use {@link #checkObject(Checkable, CheckId) ContainsAnyErrorVisitor.checkObject(Checkable, CheckId)} to handle the Throwable.
*/
public
class
ContainsErrorVisitor
extends
CheckableUtilsVisitor
{
private
CheckId
checkId
;
/**
* Checks if a Checkable, or any Object in its datastructure, contains a specific error.
* <p>
* Terminates early upon finding the error by throwing {@link CheckErrorFound}
*
* @param checkable The object to check
* @param checkIdentifier The specific error's associated ID
* @throws CheckErrorFound when the error is found
*/
public
static
void
checkObject
(
Checkable
checkable
,
CheckId
checkIdentifier
)
throws
CheckErrorFound
{
checkable
.
accept
(
new
ContainsErrorVisitor
(
checkIdentifier
));
}
@Override
public
void
check
(
Checkable
checkable
)
{
if
(
checkable
.
hasError
(
checkId
))
{
ThrowUtils
.
sneakyThrow
(
new
CheckErrorFound
());
}
}
public
ContainsErrorVisitor
(
CheckId
checkIdentifier
)
{
super
();
checkId
=
checkIdentifier
;
}
}
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/utils/visitors/GmlGeometryRebuilder.java
0 → 100644
View file @
d1ff5020
package
de.hft.stuttgart.citydoctor2.utils.visitors
;
import
de.hft.stuttgart.citydoctor2.check.CheckableUtilsVisitor
;
import
de.hft.stuttgart.citydoctor2.datastructure.CityObject
;
import
de.hft.stuttgart.citydoctor2.parser.ParserConfiguration
;
import
org.citygml4j.core.util.geometry.GeometryFactory
;
import
java.util.Objects
;
/**
* This Visitor recreates the Geometries of the original CityGml object from the associated Geometries in CityDoctor's
* internal model.
*/
public
class
GmlGeometryRebuilder
extends
CheckableUtilsVisitor
{
private
final
GeometryFactory
factory
;
private
final
ParserConfiguration
config
;
/**
* Creates a new Rebuilder for reconstruction of CityGml geometries.
*
* @param factory the GeometryFactory used for creation of CityGml geometry objects.
* @param configuration the configuration settings of the parser
*/
public
GmlGeometryRebuilder
(
GeometryFactory
factory
,
ParserConfiguration
configuration
)
{
Objects
.
requireNonNull
(
factory
);
Objects
.
requireNonNull
(
configuration
);
this
.
factory
=
factory
;
this
.
config
=
configuration
;
}
@Override
public
void
check
(
CityObject
cityObject
)
{
cityObject
.
rebuildGeometries
(
factory
,
config
);
}
}
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/utils/visitors/PrepareForCheckingVisitor.java
0 → 100644
View file @
d1ff5020
package
de.hft.stuttgart.citydoctor2.utils.visitors
;
import
de.hft.stuttgart.citydoctor2.check.CheckableUtilsVisitor
;
import
de.hft.stuttgart.citydoctor2.datastructure.Geometry
;
/**
* This Visitor prepares the {@link Geometry Geometries} in a Checkable for low-memory consumption mode.
*/
public
class
PrepareForCheckingVisitor
extends
CheckableUtilsVisitor
{
@Override
public
void
check
(
Geometry
geom
)
{
geom
.
updateEdgesAndVertices
();
}
}
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/utils/visitors/UnsetGeometriesVisitor.java
0 → 100644
View file @
d1ff5020
package
de.hft.stuttgart.citydoctor2.utils.visitors
;
import
de.hft.stuttgart.citydoctor2.check.CheckableUtilsVisitor
;
import
de.hft.stuttgart.citydoctor2.datastructure.CityObject
;
/**
* This Visitor removes the GmlGeometries from the linked original GmlObjects in a CityObject's datastructure to reduce
* memory bloat.
*/
public
class
UnsetGeometriesVisitor
extends
CheckableUtilsVisitor
{
@Override
public
void
check
(
CityObject
cityObject
)
{
cityObject
.
unsetGmlGeometries
();
}
}
CityDoctorParent/CityDoctorModel/src/test/java/de/hft/stuttgart/citydoctor2/check/CheckableTest.java
View file @
d1ff5020
...
...
@@ -48,20 +48,6 @@ public class CheckableTest {
return
null
;
}
@Override
public
void
prepareForChecking
()
{
}
@Override
public
void
clearMetaInformation
()
{
}
@Override
public
void
clearAllContainedCheckResults
()
{
}
@Override
public
Class
<?
extends
Checkable
>
getCheckClass
()
{
return
Building
.
class
;
...
...
CityDoctorParent/CityDoctorModel/src/test/java/de/hft/stuttgart/citydoctor2/datastructure/AbstractBuildingTest.java
View file @
d1ff5020
...
...
@@ -23,36 +23,33 @@ 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
static
org
.
mockito
.
ArgumentMatchers
.
any
;
import
static
org
.
mockito
.
Mockito
.
mock
;
import
static
org
.
mockito
.
Mockito
.
verify
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.concurrent.atomic.AtomicInteger
;
import
de.hft.stuttgart.citydoctor2.utils.visitors.GmlGeometryRebuilder
;
import
org.citygml4j.core.model.construction.WallSurface
;
import
org.citygml4j.core.model.core.AbstractSpaceBoundaryProperty
;
import
org.citygml4j.core.util.geometry.GeometryFactory
;
import
org.junit.Test
;
import
org.mockito.Mockito
;
import
org.xmlobjects.gml.model.geometry.aggregates.MultiSurfaceProperty
;
import
org.xmlobjects.gml.model.geometry.primitives.AbstractRing
;
import
org.xmlobjects.gml.model.geometry.primitives.AbstractSolid
;
import
org.xmlobjects.gml.model.geometry.primitives.AbstractSurface
;
import
org.xmlobjects.gml.model.geometry.primitives.Shell
;
import
org.xmlobjects.gml.model.geometry.primitives.Solid
;
import
org.xmlobjects.gml.model.geometry.primitives.SolidProperty
;
import
org.xmlobjects.gml.model.geometry.primitives.SurfaceProperty
;
import
de.hft.stuttgart.citydoctor2.check.
AbstractCheck
;
import
de.hft.stuttgart.citydoctor2.check.
CheckableUtilsVisitor
;
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.ResultStatus
;
import
de.hft.stuttgart.citydoctor2.parser.ParserConfiguration
;
import
de.hft.stuttgart.citydoctor2.utils.Copyable
;
public
class
AbstractBuildingTest
{
@Test
public
void
testAccept
()
{
AbstractBuilding
ab
=
createAbstractBuilding
();
...
...
@@ -62,7 +59,7 @@ public class AbstractBuildingTest {
AtomicInteger
abCounter
=
new
AtomicInteger
(
0
);
AtomicInteger
bsCounter
=
new
AtomicInteger
(
0
);
AtomicInteger
biCounter
=
new
AtomicInteger
(
0
);
AbstractCheck
c
=
new
AbstractCheck
()
{
CheckableUtilsVisitor
c
=
new
CheckableUtilsVisitor
()
{
@Override
public
void
check
(
AbstractBuilding
ab
)
{
...
...
@@ -79,7 +76,7 @@ public class AbstractBuildingTest {
assertEquals
(
1
,
bsCounter
.
intValue
());
assertEquals
(
0
,
biCounter
.
intValue
());
AbstractCheck
c2
=
new
AbstractCheck
()
{
CheckableUtilsVisitor
c2
=
new
CheckableUtilsVisitor
()
{
@Override
public
void
check
(
Installation
bi
)
{
...
...
@@ -91,73 +88,59 @@ public class AbstractBuildingTest {
}
@Test
public
void
testPrepareForChecking
()
{
Installation
biMock
=
mock
(
Installation
.
class
);
BoundarySurface
bsMock
=
mock
(
BoundarySurface
.
class
);
public
void
testVisitorPropagation
()
{
AbstractBuilding
ab
=
createAbstractBuilding
();
ab
.
addBoundarySurface
(
bsMock
);
ab
.
addBuildingInstallation
(
biMock
);
ab
.
prepareForChecking
();
Mockito
.
verify
(
biMock
,
Mockito
.
times
(
1
)).
prepareForChecking
();
Mockito
.
verify
(
bsMock
,
Mockito
.
times
(
1
)).
prepareForChecking
();
}
@Test
public
void
testClearMetaInformation
()
{
Installation
biMock
=
mock
(
Installation
.
class
);
BoundarySurface
bsMock
=
mock
(
BoundarySurface
.
class
);
BuildingRoom
mockRoom
=
mock
(
BuildingRoom
.
class
);
Installation
mockInstallation
=
mock
(
Installation
.
class
);
BuildingRoomFurniture
mockBuildingRoomFurniture
=
mock
(
BuildingRoomFurniture
.
class
);
BuildingUnit
mockBuildingUnit
=
mock
(
BuildingUnit
.
class
);
Storey
mockStorey
=
mock
(
Storey
.
class
);
BoundarySurface
mockBSurface
=
mock
(
BoundarySurface
.
class
);
Geometry
mockGeometry
=
mock
(
Geometry
.
class
);
ab
.
addBuildingRoom
(
mockRoom
);
ab
.
addBuildingInstallation
(
mockInstallation
);
ab
.
addBuildingRoomFurniture
(
mockBuildingRoomFurniture
);
ab
.
addBuildingUnit
(
mockBuildingUnit
);
ab
.
addStorey
(
mockStorey
);
ab
.
addBoundarySurface
(
mockBSurface
);
ab
.
addGeometry
(
mockGeometry
);
CheckableUtilsVisitor
c
=
new
CheckableUtilsVisitor
()
{
};
ab
.
accept
(
c
);
AbstractBuilding
ab
=
createAbstractBuilding
();
ab
.
addBoundarySurface
(
bsMock
);
ab
.
addBuildingInstallation
(
biMock
);
ab
.
clearMetaInformation
();
Mockito
.
verify
(
biMock
,
Mockito
.
times
(
1
)).
clearMetaInformation
();
Mockito
.
verify
(
bsMock
,
Mockito
.
times
(
1
)).
clearMetaInformation
();
verify
(
mockRoom
).
accept
(
c
);
verify
(
mockInstallation
).
accept
(
c
);
verify
(
mockBuildingRoomFurniture
).
accept
(
c
);
verify
(
mockBuildingUnit
).
accept
(
c
);
verify
(
mockStorey
).
accept
(
c
);
verify
(
mockBSurface
).
accept
(
c
);
verify
(
mockGeometry
).
accept
(
c
);
}
@Test
public
void
testContainsError
()
{
AbstractBuilding
ab
=
createAbstractBuilding
();
assertFalse
(
ab
.
containsError
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
));
assertFalse
(
ab
.
containsError
(
CheckId
.
C_GE_P_NON_PLANAR
));
ab
.
addCheckResult
(
new
CheckResult
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
,
ResultStatus
.
ERROR
,
mock
(
CheckError
.
class
)));
assertTrue
(
ab
.
containsError
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
));
}
@Test
public
void
testContainsErrorInBs
()
{
AbstractBuilding
ab
=
createAbstractBuilding
();
BoundarySurface
bsMock
=
mock
(
BoundarySurface
.
class
);
ab
.
addBoundarySurface
(
bsMock
);
assertFalse
(
ab
.
containsError
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
));
Mockito
.
when
(
bsMock
.
containsError
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
)).
thenReturn
(
true
);
assertFalse
(
ab
.
containsError
(
CheckId
.
C_GE_P_NON_PLANAR
));
ab
.
addCheckResult
(
new
CheckResult
(
CheckId
.
C_GE_P_NON_PLANAR
,
ResultStatus
.
OK
,
mock
(
CheckError
.
class
)));
assertTrue
(
ab
.
containsError
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
));
assertFalse
(
ab
.
containsError
(
CheckId
.
C_GE_P_NON_PLANAR
));
}
@Test
public
void
testContainsErrorInBi
()
{
AbstractBuilding
ab
=
createAbstractBuilding
();
Installation
biMock
=
mock
(
Installation
.
class
);
ab
.
addBuildingInstallation
(
biMock
);
assertFalse
(
ab
.
containsError
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
));
Mockito
.
when
(
biMock
.
containsError
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
)).
thenReturn
(
true
);
assertTrue
(
ab
.
containsError
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
));
}
@Test
public
void
testClearAllContainedCheckResults
()
{
Installation
biMock
=
mock
(
Installation
.
class
);
BoundarySurface
bsMock
=
mock
(
BoundarySurface
.
class
);
AbstractBuilding
ab
=
createAbstractBuilding
();
assertTrue
(
ab
.
getAllCheckResults
().
isEmpty
());
ab
.
addCheckResult
(
new
CheckResult
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
,
ResultStatus
.
OK
,
null
));
ab
.
addBoundarySurface
(
bsMock
);
ab
.
addBuildingInstallation
(
biMock
);
assertEquals
(
1
,
ab
.
getAllCheckResults
().
size
());
ab
.
clearAllContainedCheckResults
();
Mockito
.
verify
(
biMock
,
Mockito
.
times
(
1
)).
clearAllContainedCheckResults
();
Mockito
.
verify
(
bsMock
,
Mockito
.
times
(
1
)).
clearAllContainedCheckResults
();
assertTrue
(
ab
.
getAllCheckResults
().
isEmpty
());
}
...
...
@@ -172,85 +155,59 @@ public class AbstractBuildingTest {
assertTrue
(
ab
.
containsAnyError
());
}
@Test
public
void
testContainsAnyErrorInBs
()
{
AbstractBuilding
ab
=
createAbstractBuilding
();
BoundarySurface
bsMock
=
mock
(
BoundarySurface
.
class
);
ab
.
addBoundarySurface
(
bsMock
);
assertFalse
(
ab
.
containsAnyError
());
Mockito
.
when
(
bsMock
.
containsAnyError
()).
thenReturn
(
true
);
assertTrue
(
ab
.
containsAnyError
());
}
@Test
public
void
testContainsAnyErrorInBi
()
{
AbstractBuilding
ab
=
createAbstractBuilding
();
Installation
biMock
=
mock
(
Installation
.
class
);
ab
.
addBuildingInstallation
(
biMock
);
assertFalse
(
ab
.
containsAnyError
());
Mockito
.
when
(
biMock
.
containsAnyError
()).
thenReturn
(
true
);
assertTrue
(
ab
.
containsAnyError
());
}
@Test
public
void
testCollectContainedErrors
()
{
Installation
biMock
=
mock
(
Installation
.
class
);
BoundarySurface
bsMock
=
mock
(
BoundarySurface
.
class
);
AbstractBuilding
ab
=
createAbstractBuilding
();
ab
.
addBoundarySurface
(
bsMock
);
ab
.
addBuildingInstallation
(
biMock
);
ab
.
addCheckResult
(
new
CheckResult
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
,
ResultStatus
.
ERROR
,
mock
(
CheckError
.
class
)));
List
<
CheckError
>
errors
=
new
ArrayList
<>();
ab
.
collectContainedErrors
(
errors
);
Mockito
.
verify
(
biMock
,
Mockito
.
times
(
1
)).
collectContainedErrors
(
errors
);
Mockito
.
verify
(
bsMock
,
Mockito
.
times
(
1
)).
collectContainedErrors
(
errors
);
assertEquals
(
1
,
errors
.
size
());
}
@Test
public
void
testReCreateGeometriesSolid
()
{
Geometry
geom
=
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
SOLID
);
AbstractBuilding
ab
=
createAbstractBuilding
();
org
.
citygml4j
.
core
.
model
.
building
.
AbstractBuilding
gmlAb
=
new
org
.
citygml4j
.
core
.
model
.
building
.
Building
();
ab
.
setCityGmlBuilding
(
gmlAb
);
ab
.
addGeometry
(
geom
);
ab
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
SOLID
,
Lod
.
LOD1
));
ab
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
SOLID
,
Lod
.
LOD2
));
ab
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
SOLID
,
Lod
.
LOD3
));
ab
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
SOLID
,
Lod
.
LOD4
));
GeometryFactory
factory
=
GeometryFactory
.
newInstance
();
ParserConfiguration
config
=
new
ParserConfiguration
(
8
,
false
);
ab
.
reCreateGeometries
(
factory
,
config
);
AbstractSolid
aSolid
=
gmlAb
.
getLod2Solid
().
getObject
();
assertTrue
(
aSolid
instanceof
Solid
);
Solid
solid
=
(
Solid
)
aSolid
;
Shell
geometry
=
solid
.
getExterior
().
getObject
();
List
<
SurfaceProperty
>
surfaceMember
=
geometry
.
getSurfaceMembers
();
assertEquals
(
1
,
surfaceMember
.
size
());
AbstractSurface
polySurface
=
surfaceMember
.
get
(
0
).
getObject
();
assertTrue
(
polySurface
instanceof
org
.
xmlobjects
.
gml
.
model
.
geometry
.
primitives
.
Polygon
);
var
gmlPoly
=
(
org
.
xmlobjects
.
gml
.
model
.
geometry
.
primitives
.
Polygon
)
polySurface
;
AbstractRing
ring
=
gmlPoly
.
getExterior
().
getObject
();
var
gmlRing
=
(
org
.
xmlobjects
.
gml
.
model
.
geometry
.
primitives
.
LinearRing
)
ring
;
List
<
Double
>
posList
=
gmlRing
.
toCoordinateList3D
();
double
[]
expectedValues
=
new
double
[]
{
427583.301
,
6003502.571
,
9.711
,
427583.304
,
6003502.574
,
9.713
,
427583.304
,
6003502.574
,
4.097
,
427583.301
,
6003502.571
,
4.097
,
427583.301
,
6003502.571
,
9.711
};
for
(
int
i
=
0
;
i
<
posList
.
size
();
i
++)
{
assertEquals
(
expectedValues
[
i
],
posList
.
get
(
i
),
0.00000001
);
}
GeometryTestUtils
.
assertSolidMatchesExpectedValues
(
gmlAb
.
getLod1Solid
().
getObject
());
GeometryTestUtils
.
assertSolidMatchesExpectedValues
(
gmlAb
.
getLod2Solid
().
getObject
());
GeometryTestUtils
.
assertSolidMatchesExpectedValues
(
gmlAb
.
getLod3Solid
().
getObject
());
GeometryTestUtils
.
assertSolidMatchesExpectedValues
(
gmlAb
.
getDeprecatedProperties
().
getLod4Solid
().
getObject
());
}
@Test
public
void
testReCreateGeometriesMultiSurface
()
{
Geometry
geom
=
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
MULTI_SURFACE
);
AbstractBuilding
ab
=
createAbstractBuilding
();
org
.
citygml4j
.
core
.
model
.
building
.
AbstractBuilding
gmlAb
=
new
org
.
citygml4j
.
core
.
model
.
building
.
Building
();
ab
.
setCityGmlBuilding
(
gmlAb
);
ab
.
addGeometry
(
geom
);
ab
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
MULTI_SURFACE
,
Lod
.
LOD0
));
ab
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
MULTI_SURFACE
,
Lod
.
LOD1
));
ab
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
MULTI_SURFACE
,
Lod
.
LOD2
));
ab
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
MULTI_SURFACE
,
Lod
.
LOD3
));
ab
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
MULTI_SURFACE
,
Lod
.
LOD4
));
GeometryFactory
factory
=
GeometryFactory
.
newInstance
();
ParserConfiguration
config
=
new
ParserConfiguration
(
8
,
false
);
ab
.
reCreateGeometries
(
factory
,
config
);
assertNotNull
(
gmlAb
.
getLod0MultiSurface
());
assertNotNull
(
gmlAb
.
getLod0MultiSurface
().
getObject
());
assertNotNull
(
gmlAb
.
getDeprecatedProperties
().
getLod1MultiSurface
());
assertNotNull
(
gmlAb
.
getDeprecatedProperties
().
getLod1MultiSurface
().
getObject
());
assertNotNull
(
gmlAb
.
getLod2MultiSurface
());
assertNotNull
(
gmlAb
.
getLod2MultiSurface
().
getObject
());
assertNotNull
(
gmlAb
.
getLod3MultiSurface
());
assertNotNull
(
gmlAb
.
getLod3MultiSurface
().
getObject
());
assertNotNull
(
gmlAb
.
getDeprecatedProperties
().
getLod4MultiSurface
());
assertNotNull
(
gmlAb
.
getDeprecatedProperties
().
getLod4MultiSurface
().
getObject
());
}
@Test
...
...
@@ -266,7 +223,7 @@ public class AbstractBuildingTest {
GeometryFactory
factory
=
GeometryFactory
.
newInstance
();
ParserConfiguration
config
=
new
ParserConfiguration
(
8
,
false
);
ab
.
reCreateGeometries
(
factory
,
config
);
Mockito
.
verify
(
bsMock
).
reCreateGeometries
(
factory
,
config
);
Mockito
.
verify
(
bsMock
).
accept
(
any
(
GmlGeometryRebuilder
.
class
)
);
}
@Test
...
...
@@ -299,18 +256,15 @@ public class AbstractBuildingTest {
org
.
citygml4j
.
core
.
model
.
building
.
AbstractBuilding
gmlAb
=
new
org
.
citygml4j
.
core
.
model
.
building
.
Building
();
ab
.
setCityGmlBuilding
(
gmlAb
);
ab
.
reCreateGeometries
(
factory
,
config
);
Mockito
.
verify
(
biMock
).
reCreateGeometries
(
factory
,
config
);
Mockito
.
verify
(
biMock
).
accept
(
any
(
GmlGeometryRebuilder
.
class
)
);
}
@Test
public
void
testUnsetGmlGeometries
()
{
Installation
biMock
=
mock
(
Installation
.
class
);
BoundarySurface
bsMock
=
mock
(
BoundarySurface
.
class
);
AbstractBuilding
ab
=
createAbstractBuilding
();
ab
.
addBoundarySurface
(
bsMock
);
ab
.
addBuildingInstallation
(
biMock
);
org
.
citygml4j
.
core
.
model
.
building
.
AbstractBuilding
gmlAb
=
new
org
.
citygml4j
.
core
.
model
.
building
.
Building
();
ab
.
setCityGmlBuilding
(
gmlAb
);
gmlAb
.
setLod1Solid
(
new
SolidProperty
());
gmlAb
.
setLod2Solid
(
new
SolidProperty
());
gmlAb
.
setLod3Solid
(
new
SolidProperty
());
...
...
@@ -319,10 +273,9 @@ public class AbstractBuildingTest {
gmlAb
.
setLod2MultiSurface
(
new
MultiSurfaceProperty
());
gmlAb
.
setLod3MultiSurface
(
new
MultiSurfaceProperty
());
gmlAb
.
getDeprecatedProperties
().
setLod4MultiSurface
(
new
MultiSurfaceProperty
());
ab
.
setCityGmlBuilding
(
gmlAb
);
ab
.
unsetGmlGeometries
();
Mockito
.
verify
(
biMock
).
unsetGmlGeometries
();
Mockito
.
verify
(
bsMock
).
unsetGmlGeometries
();
ab
.
clearGmlGeometries
();
assertNull
(
gmlAb
.
getLod1Solid
());
assertNull
(
gmlAb
.
getLod2Solid
());
assertNull
(
gmlAb
.
getLod3Solid
());
...
...
@@ -340,21 +293,15 @@ public class AbstractBuildingTest {
}
private
AbstractBuilding
createAbstractBuilding
()
{
AbstractBuilding
ab
=
new
AbstractBuilding
()
{
return
new
AbstractBuilding
()
{
private
static
final
long
serialVersionUID
=
-
448362592456318541L
;
@Override
public
Copyable
createCopyInstance
()
{
return
null
;
}
@Override
public
CityObject
getTopLevelCityObject
(){
return
null
;
}
};
return
ab
;
}
}
CityDoctorParent/CityDoctorModel/src/test/java/de/hft/stuttgart/citydoctor2/datastructure/AbstractRoomTest.java
0 → 100644
View file @
d1ff5020
package
de.hft.stuttgart.citydoctor2.datastructure
;
import
de.hft.stuttgart.citydoctor2.check.CheckableUtilsVisitor
;
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.ResultStatus
;
import
de.hft.stuttgart.citydoctor2.parser.ParserConfiguration
;
import
org.citygml4j.core.model.core.AbstractSpaceBoundary
;
import
org.citygml4j.core.util.geometry.GeometryFactory
;
import
org.citygml4j.core.visitor.ObjectVisitor
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.mockito.Mockito
;
import
org.xmlobjects.gml.model.geometry.aggregates.MultiSurfaceProperty
;
import
org.xmlobjects.gml.model.geometry.primitives.SolidProperty
;
import
java.util.ArrayList
;
import
java.util.List
;
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
static
org
.
mockito
.
Mockito
.
mock
;
public
class
AbstractRoomTest
{
AbstractRoom
abRoom
;
@Before
public
void
setUp
()
{
abRoom
=
new
AbstractRoom
()
{
@Override
public
CityObject
getTopLevelCityObject
()
{
return
null
;
}
};
}
@Test
public
void
testAbstractRoomVisitorPropagation
()
{
Installation
mockInstallation
=
Mockito
.
mock
(
Installation
.
class
);
BoundarySurface
mockBoundarySurface
=
Mockito
.
mock
(
BoundarySurface
.
class
);
Geometry
geometry
=
Mockito
.
mock
(
Geometry
.
class
);
abRoom
.
addRoomInstallation
(
mockInstallation
);
abRoom
.
addBoundarySurface
(
mockBoundarySurface
);
abRoom
.
addGeometry
(
geometry
);
CheckableUtilsVisitor
c
=
new
CheckableUtilsVisitor
()
{
};
abRoom
.
accept
(
c
);
Mockito
.
verify
(
mockInstallation
).
accept
(
c
);
Mockito
.
verify
(
mockBoundarySurface
).
accept
(
c
);
Mockito
.
verify
(
geometry
).
accept
(
c
);
}
@Test
public
void
testContainsError
()
{
assertFalse
(
abRoom
.
containsError
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
));
assertFalse
(
abRoom
.
containsError
(
CheckId
.
C_GE_P_NON_PLANAR
));
abRoom
.
addCheckResult
(
new
CheckResult
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
,
ResultStatus
.
ERROR
,
mock
(
CheckError
.
class
)));
assertTrue
(
abRoom
.
containsError
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
));
assertFalse
(
abRoom
.
containsError
(
CheckId
.
C_GE_P_NON_PLANAR
));
abRoom
.
addCheckResult
(
new
CheckResult
(
CheckId
.
C_GE_P_NON_PLANAR
,
ResultStatus
.
OK
,
mock
(
CheckError
.
class
)));
assertTrue
(
abRoom
.
containsError
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
));
assertFalse
(
abRoom
.
containsError
(
CheckId
.
C_GE_P_NON_PLANAR
));
}
@Test
public
void
testClearAllContainedCheckResults
()
{
abRoom
.
addCheckResult
(
new
CheckResult
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
,
ResultStatus
.
OK
,
null
));
assertEquals
(
1
,
abRoom
.
getAllCheckResults
().
size
());
abRoom
.
clearAllContainedCheckResults
();
assertTrue
(
abRoom
.
getAllCheckResults
().
isEmpty
());
}
@Test
public
void
testContainsAnyError
()
{
assertFalse
(
abRoom
.
containsAnyError
());
abRoom
.
addCheckResult
(
new
CheckResult
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
,
ResultStatus
.
OK
,
null
));
assertFalse
(
abRoom
.
containsAnyError
());
abRoom
.
addCheckResult
(
new
CheckResult
(
CheckId
.
C_GE_P_INNER_RINGS_NESTED
,
ResultStatus
.
ERROR
,
mock
(
CheckError
.
class
)));
assertTrue
(
abRoom
.
containsAnyError
());
}
@Test
public
void
testCollectContainedErrors
()
{
abRoom
.
addCheckResult
(
new
CheckResult
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
,
ResultStatus
.
ERROR
,
mock
(
CheckError
.
class
)));
List
<
CheckError
>
errors
=
new
ArrayList
<>();
abRoom
.
collectContainedErrors
(
errors
);
assertEquals
(
1
,
errors
.
size
());
}
@Test
public
void
testUnsetGmlGeometries
()
{
org
.
citygml4j
.
core
.
model
.
core
.
AbstractUnoccupiedSpace
gmlAUS
=
new
org
.
citygml4j
.
core
.
model
.
core
.
AbstractUnoccupiedSpace
()
{
@Override
public
void
accept
(
ObjectVisitor
visitor
)
{
return
;
}
@Override
public
boolean
isValidBoundary
(
Class
<?
extends
AbstractSpaceBoundary
>
type
)
{
return
false
;
}
};
gmlAUS
.
setLod1Solid
(
new
SolidProperty
());
gmlAUS
.
setLod2Solid
(
new
SolidProperty
());
gmlAUS
.
setLod3Solid
(
new
SolidProperty
());
gmlAUS
.
setLod0MultiSurface
(
new
MultiSurfaceProperty
());
gmlAUS
.
setLod2MultiSurface
(
new
MultiSurfaceProperty
());
gmlAUS
.
setLod3MultiSurface
(
new
MultiSurfaceProperty
());
abRoom
.
cgmlRoom
=
gmlAUS
;
abRoom
.
clearGmlGeometries
();
assertNull
(
gmlAUS
.
getLod1Solid
());
assertNull
(
gmlAUS
.
getLod2Solid
());
assertNull
(
gmlAUS
.
getLod3Solid
());
assertNull
(
gmlAUS
.
getLod0MultiSurface
());
assertNull
(
gmlAUS
.
getLod2MultiSurface
());
assertNull
(
gmlAUS
.
getLod3MultiSurface
());
}
@Test
public
void
testReCreateGeometriesSolid
()
{
org
.
citygml4j
.
core
.
model
.
core
.
AbstractUnoccupiedSpace
gmlAUS
=
new
org
.
citygml4j
.
core
.
model
.
core
.
AbstractUnoccupiedSpace
()
{
@Override
public
void
accept
(
ObjectVisitor
visitor
)
{
return
;
}
@Override
public
boolean
isValidBoundary
(
Class
<?
extends
AbstractSpaceBoundary
>
type
)
{
return
false
;
}
};
abRoom
.
cgmlRoom
=
gmlAUS
;
abRoom
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
SOLID
,
Lod
.
LOD1
));
abRoom
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
SOLID
,
Lod
.
LOD2
));
abRoom
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
SOLID
,
Lod
.
LOD3
));
GeometryFactory
factory
=
GeometryFactory
.
newInstance
();
ParserConfiguration
config
=
new
ParserConfiguration
(
8
,
false
);
abRoom
.
reCreateGeometries
(
factory
,
config
);
GeometryTestUtils
.
assertSolidMatchesExpectedValues
(
gmlAUS
.
getLod1Solid
().
getObject
());
GeometryTestUtils
.
assertSolidMatchesExpectedValues
(
gmlAUS
.
getLod2Solid
().
getObject
());
GeometryTestUtils
.
assertSolidMatchesExpectedValues
(
gmlAUS
.
getLod3Solid
().
getObject
());
}
@Test
public
void
testReCreateGeometriesMultiSurface
()
{
org
.
citygml4j
.
core
.
model
.
core
.
AbstractUnoccupiedSpace
gmlAUS
=
new
org
.
citygml4j
.
core
.
model
.
core
.
AbstractUnoccupiedSpace
()
{
@Override
public
void
accept
(
ObjectVisitor
visitor
)
{
return
;
}
@Override
public
boolean
isValidBoundary
(
Class
<?
extends
AbstractSpaceBoundary
>
type
)
{
return
false
;
}
};
abRoom
.
cgmlRoom
=
gmlAUS
;
abRoom
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
MULTI_SURFACE
,
Lod
.
LOD0
));
abRoom
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
MULTI_SURFACE
,
Lod
.
LOD2
));
abRoom
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
MULTI_SURFACE
,
Lod
.
LOD3
));
GeometryFactory
factory
=
GeometryFactory
.
newInstance
();
ParserConfiguration
config
=
new
ParserConfiguration
(
8
,
false
);
abRoom
.
reCreateGeometries
(
factory
,
config
);
assertNotNull
(
gmlAUS
.
getLod0MultiSurface
());
assertNotNull
(
gmlAUS
.
getLod0MultiSurface
().
getObject
());
assertNotNull
(
gmlAUS
.
getLod2MultiSurface
());
assertNotNull
(
gmlAUS
.
getLod2MultiSurface
().
getObject
());
assertNotNull
(
gmlAUS
.
getLod3MultiSurface
());
assertNotNull
(
gmlAUS
.
getLod3MultiSurface
().
getObject
());
}
}
CityDoctorParent/CityDoctorModel/src/test/java/de/hft/stuttgart/citydoctor2/datastructure/AbstractTunnelTest.java
0 → 100644
View file @
d1ff5020
package
de.hft.stuttgart.citydoctor2.datastructure
;
import
de.hft.stuttgart.citydoctor2.check.CheckableUtilsVisitor
;
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.ResultStatus
;
import
de.hft.stuttgart.citydoctor2.parser.ParserConfiguration
;
import
org.citygml4j.core.util.geometry.GeometryFactory
;
import
org.citygml4j.core.visitor.ObjectVisitor
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.xmlobjects.gml.model.geometry.aggregates.MultiSurfaceProperty
;
import
org.xmlobjects.gml.model.geometry.primitives.SolidProperty
;
import
java.util.ArrayList
;
import
java.util.List
;
import
static
org
.
junit
.
Assert
.*;
import
static
org
.
mockito
.
Mockito
.
mock
;
import
static
org
.
mockito
.
Mockito
.
verify
;
public
class
AbstractTunnelTest
{
AbstractTunnel
at
;
@Before
public
void
setUp
()
{
at
=
new
AbstractTunnel
()
{
@Override
public
CityObject
getTopLevelCityObject
()
{
return
null
;
}
};
}
@Test
public
void
testVisitorPropagation
()
{
Installation
mockInstallation
=
mock
(
Installation
.
class
);
TunnelHollow
mockTunnelHollow
=
mock
(
TunnelHollow
.
class
);
TunnelFurniture
mockTunnelFurniture
=
mock
(
TunnelFurniture
.
class
);
TunnelPart
mockTunnelPart
=
mock
(
TunnelPart
.
class
);
TunnelConstructiveElement
mockTunnelConstructiveElement
=
mock
(
TunnelConstructiveElement
.
class
);
BoundarySurface
mockBoundarySurface
=
mock
(
BoundarySurface
.
class
);
Geometry
mockGeometry
=
mock
(
Geometry
.
class
);
at
.
addTunnelInstallation
(
mockInstallation
);
at
.
addTunnelHollow
(
mockTunnelHollow
);
at
.
addTunnelFurniture
(
mockTunnelFurniture
);
at
.
addTunnelPart
(
mockTunnelPart
);
at
.
addTunnelConstructiveElement
(
mockTunnelConstructiveElement
);
at
.
addBoundarySurface
(
mockBoundarySurface
);
at
.
addGeometry
(
mockGeometry
);
CheckableUtilsVisitor
c
=
new
CheckableUtilsVisitor
()
{
};
at
.
accept
(
c
);
verify
(
mockInstallation
).
accept
(
c
);
verify
(
mockTunnelHollow
).
accept
(
c
);
verify
(
mockTunnelFurniture
).
accept
(
c
);
verify
(
mockTunnelPart
).
accept
(
c
);
verify
(
mockTunnelConstructiveElement
).
accept
(
c
);
verify
(
mockBoundarySurface
).
accept
(
c
);
verify
(
mockGeometry
).
accept
(
c
);
}
@Test
public
void
testContainsError
()
{
assertFalse
(
at
.
containsError
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
));
assertFalse
(
at
.
containsError
(
CheckId
.
C_GE_P_NON_PLANAR
));
at
.
addCheckResult
(
new
CheckResult
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
,
ResultStatus
.
ERROR
,
mock
(
CheckError
.
class
)));
assertTrue
(
at
.
containsError
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
));
assertFalse
(
at
.
containsError
(
CheckId
.
C_GE_P_NON_PLANAR
));
at
.
addCheckResult
(
new
CheckResult
(
CheckId
.
C_GE_P_NON_PLANAR
,
ResultStatus
.
OK
,
mock
(
CheckError
.
class
)));
assertTrue
(
at
.
containsError
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
));
assertFalse
(
at
.
containsError
(
CheckId
.
C_GE_P_NON_PLANAR
));
}
@Test
public
void
testClearAllContainedCheckResults
()
{
at
.
addCheckResult
(
new
CheckResult
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
,
ResultStatus
.
OK
,
null
));
assertEquals
(
1
,
at
.
getAllCheckResults
().
size
());
at
.
clearAllContainedCheckResults
();
assertTrue
(
at
.
getAllCheckResults
().
isEmpty
());
}
@Test
public
void
testContainsAnyError
()
{
assertFalse
(
at
.
containsAnyError
());
at
.
addCheckResult
(
new
CheckResult
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
,
ResultStatus
.
OK
,
null
));
assertFalse
(
at
.
containsAnyError
());
at
.
addCheckResult
(
new
CheckResult
(
CheckId
.
C_GE_P_INNER_RINGS_NESTED
,
ResultStatus
.
ERROR
,
mock
(
CheckError
.
class
)));
assertTrue
(
at
.
containsAnyError
());
}
@Test
public
void
testCollectContainedErrors
()
{
at
.
addCheckResult
(
new
CheckResult
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
,
ResultStatus
.
ERROR
,
mock
(
CheckError
.
class
)));
List
<
CheckError
>
errors
=
new
ArrayList
<>();
at
.
collectContainedErrors
(
errors
);
assertEquals
(
1
,
errors
.
size
());
}
@Test
public
void
testUnsetGeometries
()
{
org
.
citygml4j
.
core
.
model
.
tunnel
.
AbstractTunnel
gmlAt
=
new
org
.
citygml4j
.
core
.
model
.
tunnel
.
AbstractTunnel
()
{
@Override
public
void
accept
(
ObjectVisitor
visitor
)
{
}
};
at
.
setGmlObject
(
gmlAt
);
gmlAt
.
setLod0MultiSurface
(
new
MultiSurfaceProperty
());
gmlAt
.
getDeprecatedProperties
().
setLod1MultiSurface
(
new
MultiSurfaceProperty
());
gmlAt
.
setLod2MultiSurface
(
new
MultiSurfaceProperty
());
gmlAt
.
setLod3MultiSurface
(
new
MultiSurfaceProperty
());
gmlAt
.
getDeprecatedProperties
().
setLod4MultiSurface
(
new
MultiSurfaceProperty
());
gmlAt
.
setLod1Solid
(
new
SolidProperty
());
gmlAt
.
setLod2Solid
(
new
SolidProperty
());
gmlAt
.
setLod3Solid
(
new
SolidProperty
());
gmlAt
.
getDeprecatedProperties
().
setLod4Solid
(
new
SolidProperty
());
at
.
clearGmlGeometries
();
assertNull
(
gmlAt
.
getLod0MultiSurface
());
assertNull
(
gmlAt
.
getDeprecatedProperties
().
getLod1MultiSurface
());
assertNull
(
gmlAt
.
getLod2MultiSurface
());
assertNull
(
gmlAt
.
getLod3MultiSurface
());
assertNull
(
gmlAt
.
getDeprecatedProperties
().
getLod4MultiSurface
());
assertNull
(
gmlAt
.
getLod1Solid
());
assertNull
(
gmlAt
.
getLod2Solid
());
assertNull
(
gmlAt
.
getLod3Solid
());
assertNull
(
gmlAt
.
getDeprecatedProperties
().
getLod4Solid
());
}
@Test
public
void
testReCreateGeometriesSolid
()
{
org
.
citygml4j
.
core
.
model
.
tunnel
.
AbstractTunnel
gmlAt
=
new
org
.
citygml4j
.
core
.
model
.
tunnel
.
AbstractTunnel
()
{
@Override
public
void
accept
(
ObjectVisitor
visitor
)
{
}
};
at
.
setGmlObject
(
gmlAt
);
at
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
SOLID
,
Lod
.
LOD1
));
at
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
SOLID
,
Lod
.
LOD2
));
at
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
SOLID
,
Lod
.
LOD3
));
at
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
SOLID
,
Lod
.
LOD4
));
GeometryFactory
factory
=
GeometryFactory
.
newInstance
();
ParserConfiguration
config
=
new
ParserConfiguration
(
8
,
false
);
at
.
reCreateGeometries
(
factory
,
config
);
GeometryTestUtils
.
assertSolidMatchesExpectedValues
(
gmlAt
.
getLod1Solid
().
getObject
());
GeometryTestUtils
.
assertSolidMatchesExpectedValues
(
gmlAt
.
getLod2Solid
().
getObject
());
GeometryTestUtils
.
assertSolidMatchesExpectedValues
(
gmlAt
.
getLod3Solid
().
getObject
());
GeometryTestUtils
.
assertSolidMatchesExpectedValues
(
gmlAt
.
getDeprecatedProperties
().
getLod4Solid
().
getObject
());
}
@Test
public
void
testReCreateGeometriesMultiSurface
()
{
org
.
citygml4j
.
core
.
model
.
tunnel
.
AbstractTunnel
gmlAt
=
new
org
.
citygml4j
.
core
.
model
.
tunnel
.
AbstractTunnel
()
{
@Override
public
void
accept
(
ObjectVisitor
visitor
)
{
}
};
at
.
setGmlObject
(
gmlAt
);
at
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
MULTI_SURFACE
,
Lod
.
LOD0
));
at
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
MULTI_SURFACE
,
Lod
.
LOD1
));
at
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
MULTI_SURFACE
,
Lod
.
LOD2
));
at
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
MULTI_SURFACE
,
Lod
.
LOD3
));
at
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
MULTI_SURFACE
,
Lod
.
LOD4
));
GeometryFactory
factory
=
GeometryFactory
.
newInstance
();
ParserConfiguration
config
=
new
ParserConfiguration
(
8
,
false
);
at
.
reCreateGeometries
(
factory
,
config
);
assertNotNull
(
gmlAt
.
getLod0MultiSurface
());
assertNotNull
(
gmlAt
.
getLod0MultiSurface
().
getObject
());
assertNotNull
(
gmlAt
.
getDeprecatedProperties
().
getLod1MultiSurface
());
assertNotNull
(
gmlAt
.
getDeprecatedProperties
().
getLod1MultiSurface
().
getObject
());
assertNotNull
(
gmlAt
.
getLod2MultiSurface
());
assertNotNull
(
gmlAt
.
getLod2MultiSurface
().
getObject
());
assertNotNull
(
gmlAt
.
getLod3MultiSurface
());
assertNotNull
(
gmlAt
.
getLod3MultiSurface
().
getObject
());
assertNotNull
(
gmlAt
.
getDeprecatedProperties
().
getLod4MultiSurface
());
assertNotNull
(
gmlAt
.
getDeprecatedProperties
().
getLod4MultiSurface
().
getObject
());
}
}
\ No newline at end of file
CityDoctorParent/CityDoctorModel/src/test/java/de/hft/stuttgart/citydoctor2/datastructure/BoundarySurfaceTest.java
View file @
d1ff5020
...
...
@@ -23,11 +23,16 @@ 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
static
org
.
mockito
.
ArgumentMatchers
.
any
;
import
static
org
.
mockito
.
Mockito
.
verify
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.concurrent.atomic.AtomicInteger
;
import
de.hft.stuttgart.citydoctor2.utils.visitors.ClearVisitorResultsVisitor
;
import
de.hft.stuttgart.citydoctor2.utils.visitors.GmlGeometryRebuilder
;
import
de.hft.stuttgart.citydoctor2.utils.visitors.UnsetGeometriesVisitor
;
import
org.citygml4j.core.model.construction.AbstractConstructionSurface
;
import
org.citygml4j.core.model.construction.WallSurface
;
import
org.citygml4j.core.model.core.AbstractThematicSurface
;
...
...
@@ -36,7 +41,7 @@ import org.junit.Test;
import
org.mockito.Mockito
;
import
org.xmlobjects.gml.model.geometry.aggregates.MultiSurfaceProperty
;
import
de.hft.stuttgart.citydoctor2.check.
AbstractCheck
;
import
de.hft.stuttgart.citydoctor2.check.
CheckableUtilsVisitor
;
import
de.hft.stuttgart.citydoctor2.check.CheckError
;
import
de.hft.stuttgart.citydoctor2.check.CheckId
;
import
de.hft.stuttgart.citydoctor2.check.CheckResult
;
...
...
@@ -45,13 +50,28 @@ import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
public
class
BoundarySurfaceTest
{
//Todo: Check this class for rework potential with the new Visitors
@Test
public
void
testVisitorPropagation
()
{
BoundarySurface
bs
=
new
BoundarySurface
(
SurfaceFeatureType
.
BUILDING
,
BoundarySurfaceType
.
WALL
,
null
);
Opening
oMock
=
Mockito
.
mock
(
Opening
.
class
);
bs
.
addOpening
(
oMock
);
CheckableUtilsVisitor
c
=
new
CheckableUtilsVisitor
()
{
};
bs
.
accept
(
c
);
verify
(
oMock
).
accept
(
c
);
}
@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
);
AbstractCheck
c
=
new
AbstractCheck
()
{
CheckableUtilsVisitor
c
=
new
CheckableUtilsVisitor
()
{
@Override
public
void
check
(
BoundarySurface
bs
)
{
...
...
@@ -59,7 +79,7 @@ public class BoundarySurfaceTest {
}
};
bs
.
accept
(
c
);
Mockito
.
verify
(
oMock
).
accept
(
c
);
verify
(
oMock
).
accept
(
c
);
assertEquals
(
1
,
bsCounter
.
intValue
());
}
...
...
@@ -69,7 +89,7 @@ public class BoundarySurfaceTest {
Opening
oMock
=
Mockito
.
mock
(
Opening
.
class
);
bs
.
addOpening
(
oMock
);
AtomicInteger
bsCounter
=
new
AtomicInteger
(
0
);
AbstractCheck
c
=
new
AbstractCheck
()
{
CheckableUtilsVisitor
c
=
new
CheckableUtilsVisitor
()
{
@Override
public
void
check
(
BridgeObject
bo
)
{
...
...
@@ -77,26 +97,18 @@ public class BoundarySurfaceTest {
}
};
bs
.
accept
(
c
);
Mockito
.
verify
(
oMock
).
accept
(
c
);
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
);
Geometry
geom
=
new
Geometry
(
GeometryType
.
MULTI_SURFACE
,
Lod
.
LOD2
);
Geometry
spyGeom
=
Mockito
.
spy
(
geom
);
bs
.
addGeometry
(
spyGeom
);
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
();
verify
(
spyGeom
).
updateEdgesAndVertices
();
}
@Test
...
...
@@ -130,43 +142,29 @@ public class BoundarySurfaceTest {
assertFalse
(
bs
.
getAllCheckResults
().
isEmpty
());
bs
.
addOpening
(
oMock
);
bs
.
clearAllContainedCheckResults
();
Mockito
.
verify
(
oMock
).
clearAllContainedCheckResults
(
);
verify
(
oMock
).
accept
(
any
(
ClearVisitorResultsVisitor
.
class
)
);
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
...
...
@@ -320,7 +318,7 @@ public class BoundarySurfaceTest {
GeometryFactory
factory
=
GeometryFactory
.
newInstance
();
ParserConfiguration
config
=
new
ParserConfiguration
(
8
,
false
);
bs
.
reCreateGeometries
(
factory
,
config
);
Mockito
.
verify
(
oMock
).
reCreateGeometries
(
factory
,
config
);
verify
(
oMock
).
accept
(
any
(
GmlGeometryRebuilder
.
class
)
);
}
@Test
...
...
@@ -342,8 +340,8 @@ public class BoundarySurfaceTest {
BoundarySurface
bs
=
new
BoundarySurface
(
SurfaceFeatureType
.
BUILDING
,
BoundarySurfaceType
.
WALL
,
ws
);
Opening
oMock
=
Mockito
.
mock
(
Opening
.
class
);
bs
.
addOpening
(
oMock
);
bs
.
u
nsetG
mlG
eometries
(
);
Mockito
.
verify
(
oMock
).
u
nsetG
mlG
eometries
(
);
bs
.
accept
(
new
U
nsetGeometries
Visitor
()
);
verify
(
oMock
).
accept
(
any
(
U
nsetGeometries
Visitor
.
class
)
);
assertNull
(
ws
.
getLod2MultiSurface
());
assertNull
(
ws
.
getLod3MultiSurface
());
assertNull
(
ws
.
getDeprecatedProperties
().
getLod4MultiSurface
());
...
...
CityDoctorParent/CityDoctorModel/src/test/java/de/hft/stuttgart/citydoctor2/datastructure/BridgeObjectTest.java
View file @
d1ff5020
...
...
@@ -22,36 +22,43 @@ import static org.junit.Assert.assertEquals;
import
static
org
.
junit
.
Assert
.
assertFalse
;
import
static
org
.
junit
.
Assert
.
assertNotNull
;
import
static
org
.
junit
.
Assert
.
assertTrue
;
import
static
org
.
mockito
.
ArgumentMatchers
.
any
;
import
static
org
.
mockito
.
Mockito
.
doAnswer
;
import
static
org
.
mockito
.
Mockito
.
mock
;
import
static
org
.
mockito
.
Mockito
.
verify
;
import
static
org
.
mockito
.
Mockito
.
when
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.concurrent.atomic.AtomicInteger
;
import
de.hft.stuttgart.citydoctor2.utils.visitors.UnsetGeometriesVisitor
;
import
org.citygml4j.core.model.bridge.AbstractBridge
;
import
org.citygml4j.core.model.bridge.Bridge
;
import
org.citygml4j.core.model.deprecated.bridge.DeprecatedPropertiesOfAbstractBridge
;
import
org.citygml4j.core.util.geometry.GeometryFactory
;
import
org.citygml4j.core.visitor.ObjectVisitor
;
import
org.junit.Test
;
import
de.hft.stuttgart.citydoctor2.check.
AbstractCheck
;
import
de.hft.stuttgart.citydoctor2.check.
CheckableUtilsVisitor
;
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.ResultStatus
;
import
de.hft.stuttgart.citydoctor2.datastructure.BridgeObject.BridgeType
;
import
de.hft.stuttgart.citydoctor2.parser.ParserConfiguration
;
import
org.mockito.Mockito
;
public
class
BridgeObjectTest
{
//TODO: Rework this class with the new Visitors
@Test
public
void
testAccept
()
{
BridgeObject
bo
=
new
BridgeObject
(
mock
(
AbstractBridge
.
class
));
bo
.
addBoundarySurface
(
new
BoundarySurface
(
null
));
AtomicInteger
boCounter
=
new
AtomicInteger
(
0
);
AtomicInteger
bsCounter
=
new
AtomicInteger
(
0
);
AbstractCheck
c
=
new
AbstractCheck
()
{
CheckableUtilsVisitor
c
=
new
CheckableUtilsVisitor
()
{
@Override
public
void
check
(
BridgeObject
bo
)
{
...
...
@@ -68,206 +75,156 @@ public class BridgeObjectTest {
assertEquals
(
1
,
bsCounter
.
intValue
());
AtomicInteger
boCounter2
=
new
AtomicInteger
(
0
);
c
=
new
AbstractCheck
();
c
=
new
CheckableUtilsVisitor
()
{
};
bo
.
accept
(
c
);
assertEquals
(
0
,
boCounter2
.
intValue
());
}
@Test
public
void
testPr
e
pa
reForChecking
()
{
public
void
test
Visitor
Pr
o
pa
gation
()
{
BridgeObject
bo
=
new
BridgeObject
(
mock
(
AbstractBridge
.
class
));
BridgeObject
partMock
=
mock
(
BridgeObject
.
class
);
BridgeRoom
mockRoom
=
mock
(
BridgeRoom
.
class
);
BridgeRoomFurniture
mockFurn
=
mock
(
BridgeRoomFurniture
.
class
);
BridgeConstructiveElement
ceMock
=
mock
(
BridgeConstructiveElement
.
class
);
Installation
instMock
=
mock
(
Installation
.
class
);
BoundarySurface
bsMock
=
mock
(
BoundarySurface
.
class
);
Geometry
geomMock
=
mock
(
Geometry
.
class
);
bo
.
addBridgePart
(
partMock
);
bo
.
addBridgeRoom
(
mockRoom
);
bo
.
addBridgeFurniture
(
mockFurn
);
bo
.
addConstructiveElement
(
ceMock
);
bo
.
addBridgeInstallation
(
instMock
);
bo
.
addBoundarySurface
(
bsMock
);
bo
.
prepareForChecking
();
verify
(
bsMock
).
prepareForChecking
();
bo
.
addGeometry
(
geomMock
);
CheckableUtilsVisitor
c
=
new
CheckableUtilsVisitor
()
{
};
bo
.
accept
(
c
);
verify
(
partMock
).
accept
(
c
);
verify
(
mockRoom
).
accept
(
c
);
verify
(
mockFurn
).
accept
(
c
);
verify
(
ceMock
).
accept
(
c
);
verify
(
instMock
).
accept
(
c
);
verify
(
bsMock
).
accept
(
c
);
verify
(
geomMock
).
accept
(
c
);
}
@Test
public
void
test
ClearMetaInformation
()
{
public
void
test
PrepareForChecking
()
{
BridgeObject
bo
=
new
BridgeObject
(
mock
(
AbstractBridge
.
class
));
BoundarySurface
bsMock
=
mock
(
BoundarySurface
.
class
);
bo
.
addBoundarySurface
(
bsMock
);
bo
.
clearMetaInformation
();
verify
(
bsMock
).
clearMetaInformation
();
Geometry
geom
=
new
Geometry
(
GeometryType
.
MULTI_SURFACE
,
Lod
.
LOD2
);
Geometry
spyGeom
=
Mockito
.
spy
(
geom
);
bo
.
addGeometry
(
spyGeom
);
bo
.
prepareForChecking
();
verify
(
spyGeom
).
updateEdgesAndVertices
();
}
@Test
public
void
testContainsError
()
{
BridgeObject
bo
=
new
BridgeObject
(
mock
(
AbstractBridge
.
class
));
assertFalse
(
bo
.
containsError
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
));
assertFalse
(
bo
.
containsError
(
CheckId
.
C_GE_P_NON_PLANAR
));
bo
.
addCheckResult
(
new
CheckResult
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
,
ResultStatus
.
ERROR
,
mock
(
CheckError
.
class
)));
assertTrue
(
bo
.
containsError
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
));
}
@Test
public
void
testContainsError2
()
{
BridgeObject
bo
=
new
BridgeObject
(
mock
(
AbstractBridge
.
class
));
BoundarySurface
bsMock
=
mock
(
BoundarySurface
.
class
);
bo
.
addBoundarySurface
(
bsMock
);
assertFalse
(
bo
.
containsError
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
));
when
(
bsMock
.
containsError
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
)).
thenReturn
(
true
);
assertFalse
(
bo
.
containsError
(
CheckId
.
C_GE_P_NON_PLANAR
));
bo
.
addCheckResult
(
new
CheckResult
(
CheckId
.
C_GE_P_NON_PLANAR
,
ResultStatus
.
OK
,
mock
(
CheckError
.
class
)));
assertTrue
(
bo
.
containsError
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
));
assertFalse
(
bo
.
containsError
(
CheckId
.
C_GE_P_NON_PLANAR
));
}
@Test
public
void
testClearAllContainedCheckResults
()
{
BridgeObject
bo
=
new
BridgeObject
(
mock
(
AbstractBridge
.
class
));
BoundarySurface
bsMock
=
mock
(
BoundarySurface
.
class
);
bo
.
addBoundarySurface
(
bsMock
);
bo
.
addCheckResult
(
new
CheckResult
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
,
ResultStatus
.
OK
,
null
));
assertEquals
(
1
,
bo
.
getAllCheckResults
().
size
());
bo
.
clearAllContainedCheckResults
();
verify
(
bsMock
).
clearAllContained
CheckResults
();
assertTrue
(
bo
.
getAll
CheckResults
()
.
isEmpty
())
;
}
@Test
public
void
testContainsAnyError
()
{
BridgeObject
bo
=
new
BridgeObject
(
mock
(
AbstractBridge
.
class
));
BoundarySurface
bsMock
=
mock
(
BoundarySurface
.
class
);
bo
.
addBoundarySurface
(
bsMock
);
bo
.
containsAnyError
();
verify
(
bsMock
).
containsAnyError
();
when
(
bsMock
.
containsAnyError
()).
thenReturn
(
true
);
assertFalse
(
bo
.
containsAnyError
());
bo
.
addCheckResult
(
new
CheckResult
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
,
ResultStatus
.
OK
,
null
));
assertFalse
(
bo
.
containsAnyError
());
bo
.
addCheckResult
(
new
CheckResult
(
CheckId
.
C_GE_P_INNER_RINGS_NESTED
,
ResultStatus
.
ERROR
,
mock
(
CheckError
.
class
)));
assertTrue
(
bo
.
containsAnyError
());
BridgeObject
bo2
=
new
BridgeObject
(
mock
(
AbstractBridge
.
class
));
bo2
.
addCheckResult
(
new
CheckResult
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
,
ResultStatus
.
ERROR
,
mock
(
CheckError
.
class
)));
assertTrue
(
bo2
.
containsAnyError
());
}
@Test
public
void
testCollectContainedErrors
()
{
BridgeObject
bo
=
new
BridgeObject
(
mock
(
AbstractBridge
.
class
));
BoundarySurface
bsMock
=
mock
(
BoundarySurface
.
class
);
bo
.
addBoundarySurface
(
bsMock
);
ArrayList
<
CheckError
>
errors
=
new
ArrayList
<>();
bo
.
addCheckResult
(
new
CheckResult
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
,
ResultStatus
.
ERROR
,
mock
(
CheckError
.
class
)));
List
<
CheckError
>
errors
=
new
ArrayList
<>();
bo
.
collectContainedErrors
(
errors
);
verify
(
bsMock
).
collectContainedErrors
(
errors
);
assertEquals
(
1
,
errors
.
size
()
);
}
@Test
public
void
testReCreateGeometries
()
{
BridgeObject
bo
=
new
BridgeObject
(
mock
(
AbstractBridge
.
class
));
BoundarySurface
bsMock
=
mock
(
BoundarySurface
.
class
);
bo
.
addBoundarySurface
(
bsMock
);
GeometryFactory
factoryMock
=
mock
(
GeometryFactory
.
class
);
ParserConfiguration
configMock
=
mock
(
ParserConfiguration
.
class
);
bo
.
reCreateGeometries
(
factoryMock
,
configMock
);
verify
(
bsMock
).
reCreateGeometries
(
factoryMock
,
configMock
);
}
@Test
public
void
testReCreateGeometriesMultiSurfaceLod1
()
{
BridgeObject
bo
=
new
BridgeObject
(
mock
(
AbstractBridge
.
class
));
Geometry
geom
=
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
MULTI_SURFACE
,
Lod
.
LOD1
);
AbstractBridge
ab
=
new
Bridge
();
bo
.
setGmlObject
(
ab
);
bo
.
addGeometry
(
geom
);
GeometryFactory
factory
=
GeometryFactory
.
newInstance
();
ParserConfiguration
config
=
new
ParserConfiguration
(
8
,
false
);
bo
.
reCreateGeometries
(
factory
,
config
);
assertNotNull
(
ab
.
getDeprecatedProperties
().
getLod1MultiSurface
());
assertNotNull
(
ab
.
getDeprecatedProperties
().
getLod1MultiSurface
().
getObject
());
public
void
testReCreateGeometriesSolid
()
{
org
.
citygml4j
.
core
.
model
.
bridge
.
AbstractBridge
gmlBr
=
new
AbstractBridge
()
{
@Override
public
void
accept
(
ObjectVisitor
visitor
)
{
}
};
BridgeObject
bo
=
new
BridgeObject
(
gmlBr
);
bo
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
SOLID
,
Lod
.
LOD1
));
bo
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
SOLID
,
Lod
.
LOD2
));
bo
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
SOLID
,
Lod
.
LOD3
));
bo
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
SOLID
,
Lod
.
LOD4
));
}
@Test
public
void
testReCreateGeometriesMultiSurfaceLod2
()
{
BridgeObject
bo
=
new
BridgeObject
(
mock
(
AbstractBridge
.
class
));
Geometry
geom
=
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
MULTI_SURFACE
,
Lod
.
LOD2
);
AbstractBridge
ab
=
new
Bridge
();
bo
.
setGmlObject
(
ab
);
bo
.
addGeometry
(
geom
);
GeometryFactory
factory
=
GeometryFactory
.
newInstance
();
ParserConfiguration
config
=
new
ParserConfiguration
(
8
,
false
);
bo
.
reCreateGeometries
(
factory
,
config
);
assertNotNull
(
ab
.
getLod2MultiSurface
());
assertNotNull
(
ab
.
getLod2MultiSurface
().
getObject
());
}
@Test
public
void
testReCreateGeometriesMultiSurfaceLod3
()
{
BridgeObject
bo
=
new
BridgeObject
(
mock
(
AbstractBridge
.
class
));
Geometry
geom
=
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
MULTI_SURFACE
,
Lod
.
LOD3
);
AbstractBridge
ab
=
new
Bridge
();
bo
.
setGmlObject
(
ab
);
bo
.
addGeometry
(
geom
);
GeometryFactory
factory
=
GeometryFactory
.
newInstance
();
ParserConfiguration
config
=
new
ParserConfiguration
(
8
,
false
);
bo
.
reCreateGeometries
(
factory
,
config
);
assertNotNull
(
ab
.
getLod3MultiSurface
());
assertNotNull
(
ab
.
getLod3MultiSurface
().
getObject
());
}
@Test
public
void
testReCreateGeometriesMultiSurfaceLod4
()
{
BridgeObject
bo
=
new
BridgeObject
(
mock
(
AbstractBridge
.
class
));
Geometry
geom
=
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
MULTI_SURFACE
,
Lod
.
LOD4
);
AbstractBridge
ab
=
new
Bridge
();
bo
.
setGmlObject
(
ab
);
bo
.
addGeometry
(
geom
);
GeometryFactory
factory
=
GeometryFactory
.
newInstance
();
ParserConfiguration
config
=
new
ParserConfiguration
(
8
,
false
);
bo
.
reCreateGeometries
(
factory
,
config
);
assertNotNull
(
ab
.
getDeprecatedProperties
().
getLod4MultiSurface
());
assertNotNull
(
ab
.
getDeprecatedProperties
().
getLod4MultiSurface
().
getObject
());
}
@Test
public
void
testReCreateGeometriesSolidLod1
()
{
BridgeObject
bo
=
new
BridgeObject
(
mock
(
AbstractBridge
.
class
));
Geometry
geom
=
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
SOLID
,
Lod
.
LOD1
);
AbstractBridge
ab
=
new
Bridge
();
bo
.
setGmlObject
(
ab
);
bo
.
addGeometry
(
geom
);
GeometryFactory
factory
=
GeometryFactory
.
newInstance
();
ParserConfiguration
config
=
new
ParserConfiguration
(
8
,
false
);
bo
.
reCreateGeometries
(
factory
,
config
);
assertNotNull
(
ab
.
getLod1Solid
());
assertNotNull
(
ab
.
getLod1Solid
().
getObject
());
}
@Test
public
void
testReCreateGeometriesSolidLod2
()
{
BridgeObject
bo
=
new
BridgeObject
(
mock
(
AbstractBridge
.
class
));
Geometry
geom
=
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
SOLID
,
Lod
.
LOD2
);
AbstractBridge
ab
=
new
Bridge
();
bo
.
setGmlObject
(
ab
);
bo
.
addGeometry
(
geom
);
GeometryFactory
factory
=
GeometryFactory
.
newInstance
();
ParserConfiguration
config
=
new
ParserConfiguration
(
8
,
false
);
bo
.
reCreateGeometries
(
factory
,
config
);
assertNotNull
(
ab
.
getLod2Solid
());
assertNotNull
(
ab
.
getLod2Solid
().
getObject
());
}
@Test
public
void
testReCreateGeometriesSolidLod3
()
{
BridgeObject
bo
=
new
BridgeObject
(
mock
(
AbstractBridge
.
class
));
Geometry
geom
=
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
SOLID
,
Lod
.
LOD3
);
AbstractBridge
ab
=
new
Bridge
();
bo
.
setGmlObject
(
ab
);
bo
.
addGeometry
(
geom
);
GeometryFactory
factory
=
GeometryFactory
.
newInstance
();
ParserConfiguration
config
=
new
ParserConfiguration
(
8
,
false
);
bo
.
reCreateGeometries
(
factory
,
config
);
assertNotNull
(
ab
.
getLod3Solid
());
assertNotNull
(
ab
.
getLod3Solid
().
getObject
());
GeometryTestUtils
.
assertSolidMatchesExpectedValues
(
gmlBr
.
getLod1Solid
().
getObject
());
GeometryTestUtils
.
assertSolidMatchesExpectedValues
(
gmlBr
.
getLod2Solid
().
getObject
());
GeometryTestUtils
.
assertSolidMatchesExpectedValues
(
gmlBr
.
getLod3Solid
().
getObject
());
GeometryTestUtils
.
assertSolidMatchesExpectedValues
(
gmlBr
.
getDeprecatedProperties
().
getLod4Solid
().
getObject
());
}
@Test
public
void
testReCreateGeometriesSolidLod4
()
{
BridgeObject
bo
=
new
BridgeObject
(
mock
(
AbstractBridge
.
class
));
Geometry
geom
=
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
SOLID
,
Lod
.
LOD4
);
AbstractBridge
ab
=
new
Bridge
();
bo
.
setGmlObject
(
ab
);
bo
.
addGeometry
(
geom
);
public
void
testReCreateGeometriesMultiSurface
()
{
org
.
citygml4j
.
core
.
model
.
bridge
.
AbstractBridge
gmlBr
=
new
AbstractBridge
()
{
@Override
public
void
accept
(
ObjectVisitor
visitor
)
{
}
};
BridgeObject
bo
=
new
BridgeObject
(
gmlBr
);
bo
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
MULTI_SURFACE
,
Lod
.
LOD0
));
bo
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
MULTI_SURFACE
,
Lod
.
LOD1
));
bo
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
MULTI_SURFACE
,
Lod
.
LOD2
));
bo
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
MULTI_SURFACE
,
Lod
.
LOD3
));
bo
.
addGeometry
(
GeometryTestUtils
.
createDummyGeometry
(
GeometryType
.
MULTI_SURFACE
,
Lod
.
LOD4
));
GeometryFactory
factory
=
GeometryFactory
.
newInstance
();
ParserConfiguration
config
=
new
ParserConfiguration
(
8
,
false
);
bo
.
reCreateGeometries
(
factory
,
config
);
assertNotNull
(
ab
.
getDeprecatedProperties
().
getLod4Solid
());
assertNotNull
(
ab
.
getDeprecatedProperties
().
getLod4Solid
().
getObject
());
assertNotNull
(
gmlBr
.
getLod0MultiSurface
());
assertNotNull
(
gmlBr
.
getLod0MultiSurface
().
getObject
());
assertNotNull
(
gmlBr
.
getDeprecatedProperties
().
getLod1MultiSurface
());
assertNotNull
(
gmlBr
.
getDeprecatedProperties
().
getLod1MultiSurface
().
getObject
());
assertNotNull
(
gmlBr
.
getLod2MultiSurface
());
assertNotNull
(
gmlBr
.
getLod2MultiSurface
().
getObject
());
assertNotNull
(
gmlBr
.
getLod3MultiSurface
());
assertNotNull
(
gmlBr
.
getLod3MultiSurface
().
getObject
());
assertNotNull
(
gmlBr
.
getDeprecatedProperties
().
getLod4MultiSurface
());
assertNotNull
(
gmlBr
.
getDeprecatedProperties
().
getLod4MultiSurface
().
getObject
());
}
@Test
public
void
testUnsetGmlGeometries
()
{
AbstractBridge
abMock
=
mock
(
AbstractBridge
.
class
);
...
...
@@ -276,8 +233,13 @@ public class BridgeObjectTest {
BridgeObject
bo
=
new
BridgeObject
(
abMock
);
BoundarySurface
bsMock
=
mock
(
BoundarySurface
.
class
);
bo
.
addBoundarySurface
(
bsMock
);
bo
.
unsetGmlGeometries
();
doAnswer
(
invocation
->
{
bsMock
.
unsetGmlGeometries
();
return
null
;
}).
when
(
bsMock
).
accept
(
any
(
UnsetGeometriesVisitor
.
class
));
bo
.
accept
(
new
UnsetGeometriesVisitor
());
verify
(
bsMock
).
accept
(
any
(
UnsetGeometriesVisitor
.
class
));
verify
(
bsMock
).
unsetGmlGeometries
();
verify
(
propsMock
).
setLod1MultiSurface
(
null
);
verify
(
abMock
).
setLod2MultiSurface
(
null
);
...
...
CityDoctorParent/CityDoctorModel/src/test/java/de/hft/stuttgart/citydoctor2/datastructure/BuildingTest.java
View file @
d1ff5020
...
...
@@ -22,9 +22,14 @@ import static org.junit.Assert.assertEquals;
import
static
org
.
junit
.
Assert
.
assertNotNull
;
import
static
org
.
junit
.
Assert
.
assertNotSame
;
import
static
org
.
junit
.
Assert
.
assertSame
;
import
static
org
.
mockito
.
Mockito
.
mock
;
import
static
org
.
mockito
.
Mockito
.
times
;
import
static
org
.
mockito
.
Mockito
.
verify
;
import
de.hft.stuttgart.citydoctor2.check.CheckableUtilsVisitor
;
import
org.citygml4j.core.model.construction.RoofSurface
;
import
org.junit.Test
;
import
org.mockito.Mockito
;
import
org.xmlobjects.gml.model.basictypes.Code
;
import
de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType
;
...
...
@@ -120,4 +125,42 @@ public class BuildingTest {
return
b
;
}
@Test
public
void
testVisitorPropagation
()
{
Building
b
=
new
Building
();
BuildingPart
bp
=
new
BuildingPart
(
b
);
BuildingPart
spyBp
=
Mockito
.
spy
(
bp
);
b
.
getBuildingParts
().
remove
(
bp
);
b
.
addBuildingPart
(
spyBp
);
BuildingRoom
mockRoom
=
mock
(
BuildingRoom
.
class
);
Installation
mockInstallation
=
mock
(
Installation
.
class
);
BuildingRoomFurniture
mockBuildingRoomFurniture
=
mock
(
BuildingRoomFurniture
.
class
);
BuildingUnit
mockBuildingUnit
=
mock
(
BuildingUnit
.
class
);
Storey
mockStorey
=
mock
(
Storey
.
class
);
b
.
addBuildingRoom
(
mockRoom
);
b
.
addBuildingInstallation
(
mockInstallation
);
b
.
addBuildingRoomFurniture
(
mockBuildingRoomFurniture
);
b
.
addBuildingUnit
(
mockBuildingUnit
);
b
.
addStorey
(
mockStorey
);
bp
.
addBuildingRoom
(
mockRoom
);
bp
.
addBuildingInstallation
(
mockInstallation
);
bp
.
addBuildingRoomFurniture
(
mockBuildingRoomFurniture
);
bp
.
addBuildingUnit
(
mockBuildingUnit
);
bp
.
addStorey
(
mockStorey
);
CheckableUtilsVisitor
c
=
new
CheckableUtilsVisitor
()
{
};
b
.
accept
(
c
);
verify
(
spyBp
).
accept
(
c
);
verify
(
mockRoom
,
times
(
2
)).
accept
(
c
);
verify
(
mockInstallation
,
times
(
2
)).
accept
(
c
);
verify
(
mockBuildingRoomFurniture
,
times
(
2
)).
accept
(
c
);
verify
(
mockBuildingUnit
,
times
(
2
)).
accept
(
c
);
verify
(
mockStorey
,
times
(
2
)).
accept
(
c
);
}
}
Prev
1
2
3
4
5
6
7
8
9
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment