2424#include " qgsproject.h"
2525#include " qgsmapcanvas.h"
2626#include " qgsunittypes.h"
27+ #include " qgstestutils.h"
2728
2829/* * \ingroup UnitTests
2930 * This is a unit test for the measure tool
@@ -113,7 +114,7 @@ void TestQgsMeasureTool::testLengthCalculation()
113114 QString measureString = dlg->editTotal ->text ();
114115 double measured = measureString.remove ( ' ,' ).split ( ' ' ).at ( 0 ).toDouble ();
115116 double expected = 26932.156 ;
116- QVERIFY ( qgsDoubleNear ( measured, expected, 0.001 ) );
117+ QGSCOMPARENEAR ( measured, expected, 0.001 );
117118
118119 // change project length unit, check calculation respects unit
119120 QgsProject::instance ()->writeEntry ( " Measurement" , " /DistanceUnits" , QgsUnitTypes::encodeUnit ( QGis::Feet ) );
@@ -130,7 +131,25 @@ void TestQgsMeasureTool::testLengthCalculation()
130131 measureString = dlg2->editTotal ->text ();
131132 measured = measureString.remove ( ' ,' ).split ( ' ' ).at ( 0 ).toDouble ();
132133 expected = 88360.0918635 ;
133- QVERIFY ( qgsDoubleNear ( measured, expected, 0.001 ) );
134+ QGSCOMPARENEAR ( measured, expected, 0.001 );
135+
136+ // check new CoordinateReferenceSystem, points must be reprojected to paint them successfully (issue #15182)
137+ QgsCoordinateReferenceSystem srs2 ( 4326 , QgsCoordinateReferenceSystem::EpsgCrsId );
138+
139+ QgsCoordinateTransform ct ( srs, srs2 );
140+
141+ QgsPoint p0 = ct.transform ( tool2->points ()[0 ] );
142+ QgsPoint p1 = ct.transform ( tool2->points ()[1 ] );
143+
144+ mCanvas ->setDestinationCrs ( srs2 );
145+
146+ QgsPoint n0 = tool2->points ()[0 ];
147+ QgsPoint n1 = tool2->points ()[1 ];
148+
149+ QGSCOMPARENEAR ( p0.x (), n0.x (), 0.001 );
150+ QGSCOMPARENEAR ( p0.y (), n0.y (), 0.001 );
151+ QGSCOMPARENEAR ( p1.x (), n1.x (), 0.001 );
152+ QGSCOMPARENEAR ( p1.y (), n1.y (), 0.001 );
134153}
135154
136155void TestQgsMeasureTool::testAreaCalculation ()
@@ -166,7 +185,7 @@ void TestQgsMeasureTool::testAreaCalculation()
166185 QString measureString = dlg->editTotal ->text ();
167186 double measured = measureString.remove ( ' ,' ).split ( ' ' ).at ( 0 ).toDouble ();
168187 double expected = 1009089817.0 ;
169- QVERIFY ( qgsDoubleNear ( measured, expected, 1.0 ) );
188+ QGSCOMPARENEAR ( measured, expected, 1.0 );
170189
171190 // change project area unit, check calculation respects unit
172191 QgsProject::instance ()->writeEntry ( " Measurement" , " /AreaUnits" , QgsUnitTypes::encodeUnit ( QgsUnitTypes::SquareMiles ) );
@@ -185,7 +204,7 @@ void TestQgsMeasureTool::testAreaCalculation()
185204 measureString = dlg2->editTotal ->text ();
186205 measured = measureString.remove ( ' ,' ).split ( ' ' ).at ( 0 ).toDouble ();
187206 expected = 389.6117565069 ;
188- QVERIFY ( qgsDoubleNear ( measured, expected, 0.001 ) );
207+ QGSCOMPARENEAR ( measured, expected, 0.001 );
189208}
190209
191210QTEST_MAIN ( TestQgsMeasureTool )
0 commit comments