mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-14 00:07:35 -04:00
Basic test of QgsDistanceArea
This commit is contained in:
parent
ff7b21d545
commit
182a64eb39
@ -13,6 +13,12 @@ class QgsDistanceArea
|
|||||||
//! Destructor
|
//! Destructor
|
||||||
~QgsDistanceArea();
|
~QgsDistanceArea();
|
||||||
|
|
||||||
|
//! Copy constructor
|
||||||
|
QgsDistanceArea(const QgsDistanceArea & origDA );
|
||||||
|
|
||||||
|
//! Assignment operator
|
||||||
|
operator=(const QgsDistanceArea & origDA );
|
||||||
|
|
||||||
//! sets whether coordinates must be projected to ellipsoid before measuring
|
//! sets whether coordinates must be projected to ellipsoid before measuring
|
||||||
void setEllipsoidalMode(bool flag);
|
void setEllipsoidalMode(bool flag);
|
||||||
void setProjectionsEnabled(bool flag) /Deprecated/;
|
void setProjectionsEnabled(bool flag) /Deprecated/;
|
||||||
|
@ -48,11 +48,41 @@ QgsDistanceArea::QgsDistanceArea()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//! Copy constructor
|
||||||
|
QgsDistanceArea::QgsDistanceArea(const QgsDistanceArea & origDA )
|
||||||
|
{
|
||||||
|
_copy( origDA );
|
||||||
|
}
|
||||||
|
|
||||||
QgsDistanceArea::~QgsDistanceArea()
|
QgsDistanceArea::~QgsDistanceArea()
|
||||||
{
|
{
|
||||||
delete mCoordTransform;
|
delete mCoordTransform;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//! Assignment operator
|
||||||
|
QgsDistanceArea & QgsDistanceArea::operator=(const QgsDistanceArea & origDA )
|
||||||
|
{
|
||||||
|
if (this == & origDA )
|
||||||
|
{
|
||||||
|
// Do not copy unto self
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
_copy( origDA );
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Copy helper. Avoid Sqlite3 accesses.
|
||||||
|
void QgsDistanceArea::_copy( const QgsDistanceArea & origDA )
|
||||||
|
{
|
||||||
|
mEllipsoidalMode = origDA.mEllipsoidalMode;
|
||||||
|
mEllipsoid = origDA.mEllipsoid;
|
||||||
|
mSemiMajor = origDA.mSemiMajor;
|
||||||
|
mSemiMinor = origDA.mSemiMinor;
|
||||||
|
mInvFlattening = origDA.mInvFlattening;
|
||||||
|
mSourceRefSys = origDA.mSourceRefSys;
|
||||||
|
mCoordTransform = new QgsCoordinateTransform( origDA.mCoordTransform->sourceCrs(), origDA.mCoordTransform->destCRS() );
|
||||||
|
}
|
||||||
|
|
||||||
void QgsDistanceArea::setEllipsoidalMode( bool flag )
|
void QgsDistanceArea::setEllipsoidalMode( bool flag )
|
||||||
{
|
{
|
||||||
mEllipsoidalMode = flag;
|
mEllipsoidalMode = flag;
|
||||||
|
@ -40,6 +40,12 @@ class CORE_EXPORT QgsDistanceArea
|
|||||||
//! Destructor
|
//! Destructor
|
||||||
~QgsDistanceArea();
|
~QgsDistanceArea();
|
||||||
|
|
||||||
|
//! Copy constructor
|
||||||
|
QgsDistanceArea(const QgsDistanceArea & origDA );
|
||||||
|
|
||||||
|
//! Assignment operator
|
||||||
|
QgsDistanceArea & operator=(const QgsDistanceArea & origDA );
|
||||||
|
|
||||||
//! sets whether coordinates must be projected to ellipsoid before measuring
|
//! sets whether coordinates must be projected to ellipsoid before measuring
|
||||||
void setEllipsoidalMode( bool flag );
|
void setEllipsoidalMode( bool flag );
|
||||||
Q_DECL_DEPRECATED void setProjectionsEnabled( bool flag ) { setEllipsoidalMode( flag ); };
|
Q_DECL_DEPRECATED void setProjectionsEnabled( bool flag ) { setEllipsoidalMode( flag ); };
|
||||||
@ -134,6 +140,8 @@ class CORE_EXPORT QgsDistanceArea
|
|||||||
void computeAreaInit();
|
void computeAreaInit();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
//! Copy helper
|
||||||
|
void _copy( const QgsDistanceArea & origDA );
|
||||||
|
|
||||||
//! used for transforming coordinates from source CRS to ellipsoid's coordinates
|
//! used for transforming coordinates from source CRS to ellipsoid's coordinates
|
||||||
QgsCoordinateTransform* mCoordTransform;
|
QgsCoordinateTransform* mCoordTransform;
|
||||||
|
@ -78,6 +78,7 @@ ENDMACRO (ADD_QGIS_TEST)
|
|||||||
#############################################################
|
#############################################################
|
||||||
# Tests:
|
# Tests:
|
||||||
|
|
||||||
|
ADD_QGIS_TEST(distanceareatest testqgsdistancearea.cpp)
|
||||||
ADD_QGIS_TEST(applicationtest testqgsapplication.cpp)
|
ADD_QGIS_TEST(applicationtest testqgsapplication.cpp)
|
||||||
ADD_QGIS_TEST(expressiontest testqgsexpression.cpp)
|
ADD_QGIS_TEST(expressiontest testqgsexpression.cpp)
|
||||||
ADD_QGIS_TEST(filewritertest testqgsvectorfilewriter.cpp)
|
ADD_QGIS_TEST(filewritertest testqgsvectorfilewriter.cpp)
|
||||||
|
94
tests/src/core/testqgsdistancearea.cpp
Normal file
94
tests/src/core/testqgsdistancearea.cpp
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
testqgsdistancearea.cpp
|
||||||
|
--------------------------------------
|
||||||
|
Date : Tue 14 Aug 2012
|
||||||
|
Copyright : (C) 2012 by Magnus Homann
|
||||||
|
Email : magnus at homann dot se
|
||||||
|
***************************************************************************
|
||||||
|
* *
|
||||||
|
* This program is free software; you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or *
|
||||||
|
* (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
***************************************************************************/
|
||||||
|
#include <QtTest>
|
||||||
|
#include <QObject>
|
||||||
|
#include <QString>
|
||||||
|
#include <QObject>
|
||||||
|
#include <qgsapplication.h>
|
||||||
|
//header for class being tested
|
||||||
|
#include <qgsdistancearea.h>
|
||||||
|
#include <qgspoint.h>
|
||||||
|
#include "qgslogger.h"
|
||||||
|
|
||||||
|
class TestQgsDistanceArea: public QObject
|
||||||
|
{
|
||||||
|
|
||||||
|
Q_OBJECT;
|
||||||
|
private slots:
|
||||||
|
void initTestCase();
|
||||||
|
void basic();
|
||||||
|
void test_distances();
|
||||||
|
void unit_conversions();
|
||||||
|
};
|
||||||
|
|
||||||
|
void TestQgsDistanceArea::initTestCase()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Runs once before any tests are run
|
||||||
|
//
|
||||||
|
// init QGIS's paths - true means that all path will be inited from prefix
|
||||||
|
QgsApplication::init();
|
||||||
|
QgsApplication::initQgis();
|
||||||
|
QgsApplication::showSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TestQgsDistanceArea::basic()
|
||||||
|
{
|
||||||
|
QgsPoint p1( 1.0, 3.0 ), p2(-2.0, -1.0 );
|
||||||
|
QgsDistanceArea daA;
|
||||||
|
double resultA, resultB;
|
||||||
|
|
||||||
|
daA.setEllipsoid( "NONE" );
|
||||||
|
resultA = daA.measureLine( p1, p2 );
|
||||||
|
QCOMPARE( resultA, 5.0 );
|
||||||
|
|
||||||
|
// Now, on an ellipsoid. Always less?
|
||||||
|
daA.setSourceCrs( 3006 );
|
||||||
|
daA.setEllipsoid( "WGS84" );
|
||||||
|
daA.setEllipsoidalMode( true );
|
||||||
|
resultA = daA.measureLine( p1, p2 );
|
||||||
|
QVERIFY( resultA < 5.0 );
|
||||||
|
|
||||||
|
// Test copy constructor
|
||||||
|
QgsDistanceArea daB( daA );
|
||||||
|
resultB = daB.measureLine( p1, p2 );
|
||||||
|
QCOMPARE( resultA, resultB );
|
||||||
|
|
||||||
|
// Different Ellipsoid
|
||||||
|
daB.setEllipsoid( "WGS72" );
|
||||||
|
resultB = daB.measureLine( p1, p2 );
|
||||||
|
QVERIFY( ! qFuzzyCompare( resultA, resultB ) );
|
||||||
|
|
||||||
|
// Test assignment
|
||||||
|
daA = daB;
|
||||||
|
resultA = daA.measureLine( p1, p2 );
|
||||||
|
QCOMPARE( resultA, resultB );
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
void TestQgsDistanceArea::test_distances()
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
void TestQgsDistanceArea::unit_conversions()
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
QTEST_MAIN( TestQgsDistanceArea )
|
||||||
|
#include "moc_testqgsdistancearea.cxx"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user