BridgeObjectTest.java 12.1 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/*-
 *  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;

Matthias Betz's avatar
Matthias Betz committed
21
22
23
24
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
25
26
27
28
29
30
31
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.concurrent.atomic.AtomicInteger;

Matthias Betz's avatar
Matthias Betz committed
32
33
34
35
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;
36
37
import org.junit.Test;

Matthias Betz's avatar
Matthias Betz committed
38
import de.hft.stuttgart.citydoctor2.check.AbstractCheck;
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
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;

public class BridgeObjectTest {

	@Test
	public void testAccept() {
		BridgeObject bo = new BridgeObject(BridgeType.BRIDGE, mock(AbstractBridge.class));
		bo.addBoundarySurface(new BoundarySurface(null));
		AtomicInteger boCounter = new AtomicInteger(0);
		AtomicInteger bsCounter = new AtomicInteger(0);
		AbstractCheck c = new AbstractCheck() {

			@Override
			public void check(BridgeObject bo) {
				boCounter.incrementAndGet();
			}

			@Override
			public void check(BoundarySurface bs) {
				bsCounter.incrementAndGet();
			}
		};
		bo.accept(c);
		assertEquals(1, boCounter.intValue());
		assertEquals(1, bsCounter.intValue());

		AtomicInteger boCounter2 = new AtomicInteger(0);
		c = new AbstractCheck();
		bo.accept(c);
		assertEquals(0, boCounter2.intValue());
	}

	@Test
	public void testPrepareForChecking() {
		BridgeObject bo = new BridgeObject(BridgeType.BRIDGE, mock(AbstractBridge.class));
		BoundarySurface bsMock = mock(BoundarySurface.class);
		bo.addBoundarySurface(bsMock);
		bo.prepareForChecking();
		verify(bsMock).prepareForChecking();
	}

	@Test
	public void testClearMetaInformation() {
		BridgeObject bo = new BridgeObject(BridgeType.BRIDGE, mock(AbstractBridge.class));
		BoundarySurface bsMock = mock(BoundarySurface.class);
		bo.addBoundarySurface(bsMock);
		bo.clearMetaInformation();
		verify(bsMock).clearMetaInformation();
	}

	@Test
	public void testContainsError() {
		BridgeObject bo = new BridgeObject(BridgeType.BRIDGE, mock(AbstractBridge.class));
		assertFalse(bo.containsError(CheckId.C_GE_P_HOLE_OUTSIDE));
		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(BridgeType.BRIDGE, 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);
		assertTrue(bo.containsError(CheckId.C_GE_P_HOLE_OUTSIDE));
	}

	@Test
	public void testClearAllContainedCheckResults() {
		BridgeObject bo = new BridgeObject(BridgeType.BRIDGE, mock(AbstractBridge.class));
		BoundarySurface bsMock = mock(BoundarySurface.class);
		bo.addBoundarySurface(bsMock);
		bo.clearAllContainedCheckResults();
		verify(bsMock).clearAllContainedCheckResults();
	}

	@Test
	public void testContainsAnyError() {
		BridgeObject bo = new BridgeObject(BridgeType.BRIDGE, mock(AbstractBridge.class));
		BoundarySurface bsMock = mock(BoundarySurface.class);
		bo.addBoundarySurface(bsMock);
		bo.containsAnyError();
		verify(bsMock).containsAnyError();
		
		when(bsMock.containsAnyError()).thenReturn(true);
		assertTrue(bo.containsAnyError());
		
		BridgeObject bo2 = new BridgeObject(BridgeType.BRIDGE, 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(BridgeType.BRIDGE, mock(AbstractBridge.class));
		BoundarySurface bsMock = mock(BoundarySurface.class);
		bo.addBoundarySurface(bsMock);
		ArrayList<CheckError> errors = new ArrayList<>();
		bo.collectContainedErrors(errors);
		verify(bsMock).collectContainedErrors(errors);
	}

	@Test
	public void testReCreateGeometries() {
		BridgeObject bo = new BridgeObject(BridgeType.BRIDGE, mock(AbstractBridge.class));
		BoundarySurface bsMock = mock(BoundarySurface.class);
		bo.addBoundarySurface(bsMock);
Matthias Betz's avatar
Matthias Betz committed
152
		GeometryFactory factoryMock = mock(GeometryFactory.class);
153
154
155
156
157
158
159
160
161
162
163
164
		ParserConfiguration configMock = mock(ParserConfiguration.class);
		bo.reCreateGeometries(factoryMock, configMock);
		verify(bsMock).reCreateGeometries(factoryMock, configMock);
	}
	
	@Test
	public void testReCreateGeometriesMultiSurfaceLod1() {
		BridgeObject bo = new BridgeObject(BridgeType.BRIDGE, mock(AbstractBridge.class));
		Geometry geom = GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE, Lod.LOD1);
		AbstractBridge ab = new Bridge();
		bo.setGmlObject(ab);
		bo.addGeometry(geom);
Matthias Betz's avatar
Matthias Betz committed
165
		GeometryFactory factory = GeometryFactory.newInstance();
166
167
		ParserConfiguration config = new ParserConfiguration(8, false);
		bo.reCreateGeometries(factory, config);
Matthias Betz's avatar
Matthias Betz committed
168
169
		assertNotNull(ab.getDeprecatedProperties().getLod1MultiSurface());
		assertNotNull(ab.getDeprecatedProperties().getLod1MultiSurface().getObject());
170
171
172
173
174
175
176
177
178
179

	}
	
	@Test
	public void testReCreateGeometriesMultiSurfaceLod2() {
		BridgeObject bo = new BridgeObject(BridgeType.BRIDGE, mock(AbstractBridge.class));
		Geometry geom = GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE, Lod.LOD2);
		AbstractBridge ab = new Bridge();
		bo.setGmlObject(ab);
		bo.addGeometry(geom);
Matthias Betz's avatar
Matthias Betz committed
180
		GeometryFactory factory = GeometryFactory.newInstance();
181
182
183
		ParserConfiguration config = new ParserConfiguration(8, false);
		bo.reCreateGeometries(factory, config);
		assertNotNull(ab.getLod2MultiSurface());
Matthias Betz's avatar
Matthias Betz committed
184
		assertNotNull(ab.getLod2MultiSurface().getObject());
185
186
187
188
189
190
191
192
193
	}
	
	@Test
	public void testReCreateGeometriesMultiSurfaceLod3() {
		BridgeObject bo = new BridgeObject(BridgeType.BRIDGE, mock(AbstractBridge.class));
		Geometry geom = GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE, Lod.LOD3);
		AbstractBridge ab = new Bridge();
		bo.setGmlObject(ab);
		bo.addGeometry(geom);
Matthias Betz's avatar
Matthias Betz committed
194
		GeometryFactory factory = GeometryFactory.newInstance();
195
196
197
		ParserConfiguration config = new ParserConfiguration(8, false);
		bo.reCreateGeometries(factory, config);
		assertNotNull(ab.getLod3MultiSurface());
Matthias Betz's avatar
Matthias Betz committed
198
		assertNotNull(ab.getLod3MultiSurface().getObject());
199
200
201
202
203
204
205
206
207
	}
	
	@Test
	public void testReCreateGeometriesMultiSurfaceLod4() {
		BridgeObject bo = new BridgeObject(BridgeType.BRIDGE, mock(AbstractBridge.class));
		Geometry geom = GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE, Lod.LOD4);
		AbstractBridge ab = new Bridge();
		bo.setGmlObject(ab);
		bo.addGeometry(geom);
Matthias Betz's avatar
Matthias Betz committed
208
		GeometryFactory factory = GeometryFactory.newInstance();
209
210
		ParserConfiguration config = new ParserConfiguration(8, false);
		bo.reCreateGeometries(factory, config);
Matthias Betz's avatar
Matthias Betz committed
211
212
		assertNotNull(ab.getDeprecatedProperties().getLod4MultiSurface());
		assertNotNull(ab.getDeprecatedProperties().getLod4MultiSurface().getObject());
213
214
215
216
217
218
219
220
221
	}
	
	@Test
	public void testReCreateGeometriesSolidLod1() {
		BridgeObject bo = new BridgeObject(BridgeType.BRIDGE, mock(AbstractBridge.class));
		Geometry geom = GeometryTestUtils.createDummyGeometry(GeometryType.SOLID, Lod.LOD1);
		AbstractBridge ab = new Bridge();
		bo.setGmlObject(ab);
		bo.addGeometry(geom);
Matthias Betz's avatar
Matthias Betz committed
222
		GeometryFactory factory = GeometryFactory.newInstance();
223
224
225
		ParserConfiguration config = new ParserConfiguration(8, false);
		bo.reCreateGeometries(factory, config);
		assertNotNull(ab.getLod1Solid());
Matthias Betz's avatar
Matthias Betz committed
226
		assertNotNull(ab.getLod1Solid().getObject());
227
228
229
230
231
232
233
234
235
	}
	
	@Test
	public void testReCreateGeometriesSolidLod2() {
		BridgeObject bo = new BridgeObject(BridgeType.BRIDGE, mock(AbstractBridge.class));
		Geometry geom = GeometryTestUtils.createDummyGeometry(GeometryType.SOLID, Lod.LOD2);
		AbstractBridge ab = new Bridge();
		bo.setGmlObject(ab);
		bo.addGeometry(geom);
Matthias Betz's avatar
Matthias Betz committed
236
		GeometryFactory factory = GeometryFactory.newInstance();
237
238
239
		ParserConfiguration config = new ParserConfiguration(8, false);
		bo.reCreateGeometries(factory, config);
		assertNotNull(ab.getLod2Solid());
Matthias Betz's avatar
Matthias Betz committed
240
		assertNotNull(ab.getLod2Solid().getObject());
241
242
243
244
245
246
247
248
249
	}
	
	@Test
	public void testReCreateGeometriesSolidLod3() {
		BridgeObject bo = new BridgeObject(BridgeType.BRIDGE, mock(AbstractBridge.class));
		Geometry geom = GeometryTestUtils.createDummyGeometry(GeometryType.SOLID, Lod.LOD3);
		AbstractBridge ab = new Bridge();
		bo.setGmlObject(ab);
		bo.addGeometry(geom);
Matthias Betz's avatar
Matthias Betz committed
250
		GeometryFactory factory = GeometryFactory.newInstance();
251
252
253
		ParserConfiguration config = new ParserConfiguration(8, false);
		bo.reCreateGeometries(factory, config);
		assertNotNull(ab.getLod3Solid());
Matthias Betz's avatar
Matthias Betz committed
254
		assertNotNull(ab.getLod3Solid().getObject());
255
256
257
258
259
260
261
262
263
	}
	
	@Test
	public void testReCreateGeometriesSolidLod4() {
		BridgeObject bo = new BridgeObject(BridgeType.BRIDGE, mock(AbstractBridge.class));
		Geometry geom = GeometryTestUtils.createDummyGeometry(GeometryType.SOLID, Lod.LOD4);
		AbstractBridge ab = new Bridge();
		bo.setGmlObject(ab);
		bo.addGeometry(geom);
Matthias Betz's avatar
Matthias Betz committed
264
		GeometryFactory factory = GeometryFactory.newInstance();
265
266
		ParserConfiguration config = new ParserConfiguration(8, false);
		bo.reCreateGeometries(factory, config);
Matthias Betz's avatar
Matthias Betz committed
267
268
		assertNotNull(ab.getDeprecatedProperties().getLod4Solid());
		assertNotNull(ab.getDeprecatedProperties().getLod4Solid().getObject());
269
270
271
272
273
	}

	@Test
	public void testUnsetGmlGeometries() {
		AbstractBridge abMock = mock(AbstractBridge.class);
Matthias Betz's avatar
Matthias Betz committed
274
275
		DeprecatedPropertiesOfAbstractBridge propsMock = mock(DeprecatedPropertiesOfAbstractBridge.class);
		when(abMock.getDeprecatedProperties()).thenReturn(propsMock);
276
277
278
279
280
281
		BridgeObject bo = new BridgeObject(BridgeType.BRIDGE, abMock);
		BoundarySurface bsMock = mock(BoundarySurface.class);
		bo.addBoundarySurface(bsMock);
		
		bo.unsetGmlGeometries();
		verify(bsMock).unsetGmlGeometries();
Matthias Betz's avatar
Matthias Betz committed
282
283
284
285
286
287
288
289
290
		verify(propsMock).setLod1MultiSurface(null);
		verify(abMock).setLod2MultiSurface(null);
		verify(abMock).setLod3MultiSurface(null);
		verify(propsMock).setLod4MultiSurface(null);
		
		verify(abMock).setLod1Solid(null);
		verify(abMock).setLod2Solid(null);
		verify(abMock).setLod3Solid(null);
		verify(propsMock).setLod4Solid(null);
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
	}

	@Test
	public void testGetFeatureType() {
		AbstractBridge abMock = mock(AbstractBridge.class);
		BridgeObject bo = new BridgeObject(BridgeType.BRIDGE, abMock);
		assertEquals(FeatureType.BRIDGE, bo.getFeatureType());
	}

	@Test
	public void testGetType() {
		AbstractBridge abMock = mock(AbstractBridge.class);
		BridgeObject bo = new BridgeObject(BridgeType.BRIDGE, abMock);
		assertEquals(BridgeType.BRIDGE, bo.getType());
		bo.setType(BridgeType.BRIDGE_PART);
		assertEquals(BridgeType.BRIDGE_PART, bo.getType());
	}

	@Test
	public void testGetGmlObject() {
		AbstractBridge abMock = mock(AbstractBridge.class);
		BridgeObject bo = new BridgeObject(BridgeType.BRIDGE, abMock);
		assertEquals(abMock, bo.getGmlObject());
		AbstractBridge abMock2 = mock(AbstractBridge.class);
		bo.setGmlObject(abMock2);
		assertEquals(abMock2, bo.getGmlObject());
	}
}