Skip to content

Commit 3910c45

Browse files
committed
Consolidate QgsGeometryUtils tests
1 parent 1c2454f commit 3910c45

File tree

2 files changed

+56
-61
lines changed

2 files changed

+56
-61
lines changed

tests/src/core/testqgsgeometry.cpp

-45
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ class TestQgsGeometry : public QObject
5757
void isEmpty();
5858
void pointV2(); //test QgsPointV2
5959
void lineStringV2(); //test QgsLineStringV2
60-
void utils(); //test QgsGeometryUtils
6160

6261
void fromQgsPoint();
6362
void fromQPoint();
@@ -1921,50 +1920,6 @@ void TestQgsGeometry::lineStringV2()
19211920

19221921
}
19231922

1924-
void TestQgsGeometry::utils()
1925-
{
1926-
//test normalizedAngle
1927-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::normalizedAngle( 0.0 ), 0.0, 0.0001 ) );
1928-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::normalizedAngle( 1.5708 ), 1.5708, 0.0001 ) );
1929-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::normalizedAngle( 3.1416 ), 3.1416, 0.0001 ) );
1930-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::normalizedAngle( 4.7124 ), 4.7124, 0.0001 ) );
1931-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::normalizedAngle( 2 * M_PI ), 0.0, 0.0001 ) );
1932-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::normalizedAngle( 6.80678 ), 0.5236, 0.0001 ) );
1933-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::normalizedAngle( 12.5664 ), 0.0, 0.0001 ) );
1934-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::normalizedAngle( 12.7409 ), 0.174533, 0.0001 ) );
1935-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::normalizedAngle( -0.174533 ), 6.10865, 0.0001 ) );
1936-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::normalizedAngle( -6.28318 ), 0.0, 0.0001 ) );
1937-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::normalizedAngle( -6.45772 ), 6.10865, 0.0001 ) );
1938-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::normalizedAngle( -13.2645 ), 5.58505, 0.0001 ) );
1939-
1940-
//test lineAngle
1941-
( void )QgsGeometryUtils::lineAngle( 0.0, 0.0, 0.0, 0.0 ); //undefined, but don't want a crash
1942-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::lineAngle( 0.0, 0.0, 0.0, 1.0 ), 0.0, 0.0001 ) );
1943-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::lineAngle( 0.0, 0.0, 1.0, 1.0 ), 0.7854, 0.0001 ) );
1944-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::lineAngle( 0.0, 0.0, 1.0, 0.0 ), 1.5708, 0.0001 ) );
1945-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::lineAngle( 0.0, 0.0, 0.0, -1.0 ), 3.1416, 0.0001 ) );
1946-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::lineAngle( 0.0, 0.0, -1.0, 0.0 ), 4.7124, 0.0001 ) );
1947-
1948-
//test linePerpendicularAngle
1949-
( void )QgsGeometryUtils::linePerpendicularAngle( 0.0, 0.0, 0.0, 0.0 ); //undefined, but don't want a crash
1950-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::linePerpendicularAngle( 0.0, 0.0, 0.0, 1.0 ), 1.5708, 0.0001 ) );
1951-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::linePerpendicularAngle( 0.0, 0.0, 1.0, 1.0 ), 2.3562, 0.0001 ) );
1952-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::linePerpendicularAngle( 0.0, 0.0, 1.0, 0.0 ), 3.1416, 0.0001 ) );
1953-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::linePerpendicularAngle( 0.0, 0.0, 0.0, -1.0 ), 4.7124, 0.0001 ) );
1954-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::linePerpendicularAngle( 0.0, 0.0, -1.0, 0.0 ), 0.0, 0.0001 ) );
1955-
1956-
//test averageAngle
1957-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::averageAngle( 0.0, 0.0 ), 0.0, 0.0001 ) );
1958-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::averageAngle( 0.0, 6.28319 ), 0.0, 0.0001 ) );
1959-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::averageAngle( 0.0, 12.5664 ), 0.0, 0.0001 ) );
1960-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::averageAngle( 6.28319, 0.0 ), 0.0, 0.0001 ) );
1961-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::averageAngle( -6.28318, 0.0 ), 0.0, 0.0001 ) );
1962-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::averageAngle( -6.28318, -6.28318 ), 0.0, 0.0001 ) );
1963-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::averageAngle( 0.0, 3.141592 ), 1.5708, 0.0001 ) );
1964-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::averageAngle( 0.0, -3.141592 ), 4.71239, 0.0001 ) );
1965-
QVERIFY( qgsDoubleNear( QgsGeometryUtils::averageAngle( 5.49779, 4.71239 ), 5.1051, 0.0001 ) );
1966-
}
1967-
19681923
void TestQgsGeometry::fromQgsPoint()
19691924
{
19701925
QgsPoint point( 1.0, 2.0 );

tests/src/core/testqgsgeometryutils.cpp

+56-16
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ class TestQgsGeometryUtils: public QObject
3131
void testSegmentMidPoint();
3232
void testCircleLength_data();
3333
void testCircleLength();
34+
void testNormalizedAngle_data();
35+
void testNormalizedAngle();
3436
void testLineAngle_data();
3537
void testLineAngle();
3638
void testLinePerpendicularAngle_data();
@@ -176,6 +178,31 @@ void TestQgsGeometryUtils::testCircleLength()
176178
QVERIFY( qgsDoubleNear( expected, QgsGeometryUtils::circleLength( x1, y1, x2, y2, x3, y3 ) ) );
177179
}
178180

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+
179206
void TestQgsGeometryUtils::testLineAngle_data()
180207
{
181208
QTest::addColumn<double>( "x1" );
@@ -184,6 +211,7 @@ void TestQgsGeometryUtils::testLineAngle_data()
184211
QTest::addColumn<double>( "y2" );
185212
QTest::addColumn<double>( "expected" );
186213

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
187215
QTest::newRow( "lineAngle1" ) << 0.0 << 0.0 << 10.0 << 10.0 << 45.0;
188216
QTest::newRow( "lineAngle2" ) << 0.0 << 0.0 << 10.0 << 0.0 << 90.0;
189217
QTest::newRow( "lineAngle3" ) << 0.0 << 0.0 << 10.0 << -10.0 << 135.0;
@@ -203,7 +231,8 @@ void TestQgsGeometryUtils::testLineAngle()
203231
QFETCH( double, expected );
204232

205233
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 ) );
207236
}
208237

209238
void TestQgsGeometryUtils::testLinePerpendicularAngle_data()
@@ -214,14 +243,15 @@ void TestQgsGeometryUtils::testLinePerpendicularAngle_data()
214243
QTest::addColumn<double>( "y2" );
215244
QTest::addColumn<double>( "expected" );
216245

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;
225255
}
226256

227257
void TestQgsGeometryUtils::testLinePerpendicularAngle()
@@ -233,7 +263,8 @@ void TestQgsGeometryUtils::testLinePerpendicularAngle()
233263
QFETCH( double, expected );
234264

235265
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 ) );
237268
}
238269

239270
void TestQgsGeometryUtils::testAverageAngle_data()
@@ -242,12 +273,21 @@ void TestQgsGeometryUtils::testAverageAngle_data()
242273
QTest::addColumn<double>( "angle2" );
243274
QTest::addColumn<double>( "expected" );
244275

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;
251291
}
252292

253293
void TestQgsGeometryUtils::testAverageAngle()

0 commit comments

Comments
 (0)