@@ -31,6 +31,8 @@ class TestQgsGeometryUtils: public QObject
31
31
void testSegmentMidPoint ();
32
32
void testCircleLength_data ();
33
33
void testCircleLength ();
34
+ void testNormalizedAngle_data ();
35
+ void testNormalizedAngle ();
34
36
void testLineAngle_data ();
35
37
void testLineAngle ();
36
38
void testLinePerpendicularAngle_data ();
@@ -176,6 +178,31 @@ void TestQgsGeometryUtils::testCircleLength()
176
178
QVERIFY ( qgsDoubleNear ( expected, QgsGeometryUtils::circleLength ( x1, y1 , x2, y2, x3, y3 ) ) );
177
179
}
178
180
181
+ void TestQgsGeometryUtils::testNormalizedAngle_data ()
182
+ {
183
+ QTest::addColumn<double >( " input" );
184
+ QTest::addColumn<double >( " expected" );
185
+ QTest::newRow ( " normalizedAngle 0" ) << 0.0 << 0.0 ;
186
+ QTest::newRow ( " normalizedAngle 1.5708" ) << 1.5708 << 1.5708 ;
187
+ QTest::newRow ( " normalizedAngle 3.1416" ) << 3.1416 << 3.1416 ;
188
+ QTest::newRow ( " normalizedAngle 4.7124" ) << 4.7124 << 4.7124 ;
189
+ QTest::newRow ( " normalizedAngle 2 * M_PI" ) << 2 * M_PI << 0.0 ;
190
+ QTest::newRow ( " normalizedAngle 6.80678" ) << 6.80678 << 0.5236 ;
191
+ QTest::newRow ( " normalizedAngle 12.5664" ) << 12.5664 << 0.0 ;
192
+ QTest::newRow ( " normalizedAngle 12.7409" ) << 12.7409 << 0.174533 ;
193
+ QTest::newRow ( " normalizedAngle -0.174533" ) << -0.174533 << 6.10865 ;
194
+ QTest::newRow ( " normalizedAngle -6.28318" ) << -6.28318 << 0.0 ;
195
+ QTest::newRow ( " normalizedAngle -6.45772" ) << -6.45772 << 6.10865 ;
196
+ QTest::newRow ( " normalizedAngle -13.2645" ) << -13.2645 << 5.58505 ;
197
+ }
198
+
199
+ void TestQgsGeometryUtils::testNormalizedAngle ()
200
+ {
201
+ QFETCH ( double , input );
202
+ QFETCH ( double , expected );
203
+ QVERIFY ( qgsDoubleNear ( expected, QgsGeometryUtils::normalizedAngle ( input ), 0.0001 ) );
204
+ }
205
+
179
206
void TestQgsGeometryUtils::testLineAngle_data ()
180
207
{
181
208
QTest::addColumn<double >( " x1" );
@@ -184,6 +211,7 @@ void TestQgsGeometryUtils::testLineAngle_data()
184
211
QTest::addColumn<double >( " y2" );
185
212
QTest::addColumn<double >( " expected" );
186
213
214
+ QTest::newRow ( " lineAngle undefined" ) << 0.0 << 0.0 << 0.0 << 0.0 << -99999.0 ; // value is unimportant, we just don't want a crash
187
215
QTest::newRow ( " lineAngle1" ) << 0.0 << 0.0 << 10.0 << 10.0 << 45.0 ;
188
216
QTest::newRow ( " lineAngle2" ) << 0.0 << 0.0 << 10.0 << 0.0 << 90.0 ;
189
217
QTest::newRow ( " lineAngle3" ) << 0.0 << 0.0 << 10.0 << -10.0 << 135.0 ;
@@ -203,7 +231,8 @@ void TestQgsGeometryUtils::testLineAngle()
203
231
QFETCH ( double , expected );
204
232
205
233
double lineAngle = QgsGeometryUtils::lineAngle ( x1, y1 , x2, y2 ) * 180 / M_PI;
206
- QVERIFY ( qgsDoubleNear ( lineAngle, expected ) );
234
+ if ( expected > -99999 )
235
+ QVERIFY ( qgsDoubleNear ( lineAngle, expected ) );
207
236
}
208
237
209
238
void TestQgsGeometryUtils::testLinePerpendicularAngle_data ()
@@ -214,14 +243,15 @@ void TestQgsGeometryUtils::testLinePerpendicularAngle_data()
214
243
QTest::addColumn<double >( " y2" );
215
244
QTest::addColumn<double >( " expected" );
216
245
217
- QTest::newRow ( " lineAngle1" ) << 0.0 << 0.0 << 10.0 << 10.0 << 135.0 ;
218
- QTest::newRow ( " lineAngle2" ) << 0.0 << 0.0 << 10.0 << 0.0 << 180.0 ;
219
- QTest::newRow ( " lineAngle3" ) << 0.0 << 0.0 << 10.0 << -10.0 << 225.0 ;
220
- QTest::newRow ( " lineAngle4" ) << 0.0 << 0.0 << 0.0 << -10.0 << 270.0 ;
221
- QTest::newRow ( " lineAngle5" ) << 0.0 << 0.0 << -10.0 << -10.0 << 315.0 ;
222
- QTest::newRow ( " lineAngle6" ) << 0.0 << 0.0 << -10.0 << 0.0 << 0.0 ;
223
- QTest::newRow ( " lineAngle7" ) << 0.0 << 0.0 << -10.0 << 10.0 << 45.0 ;
224
- QTest::newRow ( " lineAngle8" ) << 0.0 << 0.0 << 0.0 << 10.0 << 90.0 ;
246
+ QTest::newRow ( " linePerpendicularAngle undefined" ) << 0.0 << 0.0 << 0.0 << 0.0 << -99999.0 ; // value is unimportant, we just don't want a crash
247
+ QTest::newRow ( " linePerpendicularAngle1" ) << 0.0 << 0.0 << 10.0 << 10.0 << 135.0 ;
248
+ QTest::newRow ( " linePerpendicularAngle2" ) << 0.0 << 0.0 << 10.0 << 0.0 << 180.0 ;
249
+ QTest::newRow ( " linePerpendicularAngle3" ) << 0.0 << 0.0 << 10.0 << -10.0 << 225.0 ;
250
+ QTest::newRow ( " linePerpendicularAngle4" ) << 0.0 << 0.0 << 0.0 << -10.0 << 270.0 ;
251
+ QTest::newRow ( " linePerpendicularAngle5" ) << 0.0 << 0.0 << -10.0 << -10.0 << 315.0 ;
252
+ QTest::newRow ( " linePerpendicularAngle6" ) << 0.0 << 0.0 << -10.0 << 0.0 << 0.0 ;
253
+ QTest::newRow ( " linePerpendicularAngle7" ) << 0.0 << 0.0 << -10.0 << 10.0 << 45.0 ;
254
+ QTest::newRow ( " linePerpendicularAngle8" ) << 0.0 << 0.0 << 0.0 << 10.0 << 90.0 ;
225
255
}
226
256
227
257
void TestQgsGeometryUtils::testLinePerpendicularAngle ()
@@ -233,7 +263,8 @@ void TestQgsGeometryUtils::testLinePerpendicularAngle()
233
263
QFETCH ( double , expected );
234
264
235
265
double pAngle = QgsGeometryUtils::linePerpendicularAngle ( x1, y1 , x2, y2 ) * 180 / M_PI;
236
- QVERIFY ( qgsDoubleNear ( pAngle, expected ) );
266
+ if ( expected > -99999 )
267
+ QVERIFY ( qgsDoubleNear ( pAngle, expected, 0.01 ) );
237
268
}
238
269
239
270
void TestQgsGeometryUtils::testAverageAngle_data ()
@@ -242,12 +273,21 @@ void TestQgsGeometryUtils::testAverageAngle_data()
242
273
QTest::addColumn<double >( " angle2" );
243
274
QTest::addColumn<double >( " expected" );
244
275
245
- QTest::newRow ( " testAverage1" ) << 45.0 << 135.0 << 90.0 ;
246
- QTest::newRow ( " testAverage2" ) << 315.0 << 45.0 << 0.0 ;
247
- QTest::newRow ( " testAverage3" ) << 45.0 << 315.0 << 0.0 ;
248
- QTest::newRow ( " testAverage4" ) << 315.0 << 270.0 << 292.5 ;
249
- QTest::newRow ( " testAverage5" ) << 140.0 << 240.0 << 190.0 ;
250
- QTest::newRow ( " testAverage6" ) << 240.0 << 140.0 << 190.0 ;
276
+ QTest::newRow ( " testAverageAngle1" ) << 0.0 << 0.0 << 0.0 ;
277
+ QTest::newRow ( " testAverageAngle2" ) << 0.0 << 360.0 << 0.0 ;
278
+ QTest::newRow ( " testAverageAngle3" ) << 0.0 << 720.0 << 0.0 ;
279
+ QTest::newRow ( " testAverageAngle4" ) << 360.0 << 0.0 << 0.0 ;
280
+ QTest::newRow ( " testAverageAngle5" ) << -360.0 << 0.0 << 0.0 ;
281
+ QTest::newRow ( " testAverageAngle6" ) << -360.0 << -360.0 << 0.0 ;
282
+ QTest::newRow ( " testAverageAngle7" ) << 0.0 << 180.0 << 90.0 ;
283
+ QTest::newRow ( " testAverageAngle8" ) << 0.0 << -179.999999999999 << 270.0 ;
284
+ QTest::newRow ( " testAverageAngle9" ) << 315.0 << 270.0 << 292.5 ;
285
+ QTest::newRow ( " testAverageAngle10" ) << 45.0 << 135.0 << 90.0 ;
286
+ QTest::newRow ( " testAverageAngle11" ) << 315.0 << 45.0 << 0.0 ;
287
+ QTest::newRow ( " testAverageAngle12" ) << 45.0 << 315.0 << 0.0 ;
288
+ QTest::newRow ( " testAverageAngle13" ) << 315.0 << 270.0 << 292.5 ;
289
+ QTest::newRow ( " testAverageAngle14" ) << 140.0 << 240.0 << 190.0 ;
290
+ QTest::newRow ( " testAverageAngle15" ) << 240.0 << 140.0 << 190.0 ;
251
291
}
252
292
253
293
void TestQgsGeometryUtils::testAverageAngle ()
0 commit comments