Skip to content

Commit

Permalink
Expand tests
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Mar 12, 2025
1 parent e833b58 commit 5ae0af9
Show file tree
Hide file tree
Showing 13 changed files with 171 additions and 32 deletions.
23 changes: 23 additions & 0 deletions tests/src/core/geometry/testqgscircularstring.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ class TestQgsCircularString : public QObject
void toFromWKT();
void exportImport();
void addToPainterPath();
void cast();
};

void TestQgsCircularString::emptyConstructor()
Expand Down Expand Up @@ -1874,6 +1875,28 @@ void TestQgsCircularString::addToPainterPath()
QVERIFY( !pPath.isEmpty() );
}

void TestQgsCircularString::cast()
{
QVERIFY( !QgsCircularString::cast( static_cast< const QgsAbstractGeometry * >( nullptr ) ) );

QgsCircularString cs;
QVERIFY( QgsCircularString::cast( &cs ) );

cs.clear();

cs.fromWkt( QStringLiteral( "CircularString Z (10 0 1, 10 1 1, 10 2 1)" ) );
QVERIFY( QgsCircularString::cast( &cs ) );
QVERIFY( QgsCurve::cast( &cs ) );

cs.fromWkt( QStringLiteral( "CircularString M (10 0 1, 10 1 1, 10 2 1)" ) );
QVERIFY( QgsCircularString::cast( &cs ) );
QVERIFY( QgsCurve::cast( &cs ) );

cs.fromWkt( QStringLiteral( "CircularString ZM (10 0 1 2, 10 1 1 2, 10 2 1 2)" ) );
QVERIFY( QgsCircularString::cast( &cs ) );
QVERIFY( QgsCurve::cast( &cs ) );
}

void TestQgsCircularString::toCurveType()
{
QgsCircularString cs;
Expand Down
23 changes: 23 additions & 0 deletions tests/src/core/geometry/testqgscompoundcurve.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ class TestQgsCompoundCurve : public QObject
void addToPainterPath();
void compoundCurveCondense_data();
void compoundCurveCondense();
void cast();
};

void TestQgsCompoundCurve::constructor()
Expand Down Expand Up @@ -3180,6 +3181,28 @@ void TestQgsCompoundCurve::compoundCurveCondense()
QCOMPARE( g.asWkt(), expected );
}

void TestQgsCompoundCurve::cast()
{
QVERIFY( !QgsCompoundCurve::cast( static_cast< const QgsAbstractGeometry * >( nullptr ) ) );

QgsCompoundCurve cs;
QVERIFY( QgsCompoundCurve::cast( &cs ) );

cs.clear();

cs.fromWkt( QStringLiteral( "CompoundCurve Z ((6 0 -0.6, 6.5 0 -0.4))" ) );
QVERIFY( QgsCompoundCurve::cast( &cs ) );
QVERIFY( QgsCurve::cast( &cs ) );

cs.fromWkt( QStringLiteral( "CompoundCurve M ((6 0 -0.6, 6.5 0 -0.4))" ) );
QVERIFY( QgsCompoundCurve::cast( &cs ) );
QVERIFY( QgsCurve::cast( &cs ) );

cs.fromWkt( QStringLiteral( "CompoundCurve ZM ((6 0 -0.6 -1.2, 6.5 0 -0.4 -0.8))" ) );
QVERIFY( QgsCompoundCurve::cast( &cs ) );
QVERIFY( QgsCurve::cast( &cs ) );
}


QGSTEST_MAIN( TestQgsCompoundCurve )
#include "testqgscompoundcurve.moc"
13 changes: 8 additions & 5 deletions tests/src/core/geometry/testqgscurvepolygon.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1685,20 +1685,23 @@ void TestQgsCurvePolygon::testExportOfCompoundCurveRing()

void TestQgsCurvePolygon::testCast()
{
QVERIFY( !QgsCurvePolygon().cast( static_cast< const QgsAbstractGeometry *>( nullptr ) ) );
QVERIFY( !QgsCurvePolygon::cast( static_cast< const QgsAbstractGeometry *>( nullptr ) ) );

QgsCurvePolygon pCast;
QVERIFY( QgsCurvePolygon().cast( &pCast ) );
QVERIFY( QgsCurvePolygon::cast( &pCast ) );

QgsCurvePolygon pCast2;
pCast2.fromWkt( QStringLiteral( "CurvePolygonZ((0 0 0, 0 1 1, 1 0 2, 0 0 0))" ) );
QVERIFY( QgsCurvePolygon().cast( &pCast2 ) );
QVERIFY( QgsCurvePolygon::cast( &pCast2 ) );
QVERIFY( QgsSurface::cast( &pCast2 ) );

pCast2.fromWkt( QStringLiteral( "CurvePolygonM((0 0 1, 0 1 2, 1 0 3, 0 0 1))" ) );
QVERIFY( QgsCurvePolygon().cast( &pCast2 ) );
QVERIFY( QgsCurvePolygon::cast( &pCast2 ) );
QVERIFY( QgsSurface::cast( &pCast2 ) );

pCast2.fromWkt( QStringLiteral( "CurvePolygonZM((0 0 0 1, 0 1 1 2, 1 0 2 3, 0 0 0 1))" ) );
QVERIFY( QgsCurvePolygon().cast( &pCast2 ) );
QVERIFY( QgsCurvePolygon::cast( &pCast2 ) );
QVERIFY( QgsSurface::cast( &pCast2 ) );

QVERIFY( !pCast2.fromWkt( QStringLiteral( "CurvePolygonZ((111111))" ) ) );
}
Expand Down
9 changes: 9 additions & 0 deletions tests/src/core/geometry/testqgsgeometrycollection.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ class TestQgsGeometryCollection : public QObject
void geometryCollection();
void testCopyConstructor();
void testAssignment();
void cast();
};

void TestQgsGeometryCollection::geometryCollection()
Expand Down Expand Up @@ -1462,6 +1463,14 @@ void TestQgsGeometryCollection::testAssignment()
QVERIFY( c1 == c2 );
}

void TestQgsGeometryCollection::cast()
{
QVERIFY( !QgsGeometryCollection::cast( static_cast< const QgsAbstractGeometry *>( nullptr ) ) );

QgsGeometryCollection mc1;
QVERIFY( QgsGeometryCollection::cast( &mc1 ) );
}


QGSTEST_MAIN( TestQgsGeometryCollection )
#include "testqgsgeometrycollection.moc"
23 changes: 23 additions & 0 deletions tests/src/core/geometry/testqgslinestring.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ class TestQgsLineString : public QObject
void interpolatePoint();
void visitPoints();
void setPointsFromData();
void cast();
};

void TestQgsLineString::constructorEmpty()
Expand Down Expand Up @@ -2895,5 +2896,27 @@ void TestQgsLineString::setPointsFromData()
QCOMPARE( pts, QgsPointSequence() << QgsPoint( Qgis::WkbType::PointZM, 1, 2, 4, 5 ) << QgsPoint( Qgis::WkbType::PointZM, 2, 3, 4, 5 ) );
}

void TestQgsLineString::cast()
{
QVERIFY( !QgsLineString::cast( static_cast< const QgsAbstractGeometry * >( nullptr ) ) );

QgsLineString cs;
QVERIFY( QgsLineString::cast( &cs ) );

cs.clear();

cs.fromWkt( QStringLiteral( "LineString Z (6 0 -0.6, 6.5 0 -0.4)" ) );
QVERIFY( QgsLineString::cast( &cs ) );
QVERIFY( QgsCurve::cast( &cs ) );

cs.fromWkt( QStringLiteral( "LineString M (6 0 -0.6, 6.5 0 -0.4)" ) );
QVERIFY( QgsLineString::cast( &cs ) );
QVERIFY( QgsCurve::cast( &cs ) );

cs.fromWkt( QStringLiteral( "LineString ZM (6 0 -0.6 -1.2, 6.5 0 -0.4 -0.8)" ) );
QVERIFY( QgsLineString::cast( &cs ) );
QVERIFY( QgsCurve::cast( &cs ) );
}

QGSTEST_MAIN( TestQgsLineString )
#include "testqgslinestring.moc"
14 changes: 9 additions & 5 deletions tests/src/core/geometry/testqgsmulticurve.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -532,20 +532,24 @@ void TestQgsMultiCurve::assignment()

void TestQgsMultiCurve::cast()
{
QVERIFY( !QgsMultiCurve().cast( static_cast< const QgsAbstractGeometry *>( nullptr ) ) );
QVERIFY( !QgsMultiCurve::cast( static_cast< const QgsAbstractGeometry *>( nullptr ) ) );

QgsMultiCurve mc1;
QVERIFY( QgsMultiCurve().cast( &mc1 ) );
QVERIFY( QgsMultiCurve::cast( &mc1 ) );
QVERIFY( QgsGeometryCollection::cast( &mc1 ) );

QgsMultiCurve mc2;
mc2.fromWkt( QStringLiteral( "MultiCurveZ()" ) );
QVERIFY( QgsMultiCurve().cast( &mc2 ) );
QVERIFY( QgsMultiCurve::cast( &mc2 ) );
QVERIFY( QgsGeometryCollection::cast( &mc2 ) );

mc2.fromWkt( QStringLiteral( "MultiCurveM()" ) );
QVERIFY( QgsMultiCurve().cast( &mc2 ) );
QVERIFY( QgsMultiCurve::cast( &mc2 ) );
QVERIFY( QgsGeometryCollection::cast( &mc2 ) );

mc2.fromWkt( QStringLiteral( "MultiCurveZM()" ) );
QVERIFY( QgsMultiCurve().cast( &mc2 ) );
QVERIFY( QgsMultiCurve::cast( &mc2 ) );
QVERIFY( QgsGeometryCollection::cast( &mc2 ) );
}

void TestQgsMultiCurve::boundary()
Expand Down
13 changes: 8 additions & 5 deletions tests/src/core/geometry/testqgsmultilinestring.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -465,17 +465,20 @@ void TestQgsMultiLineString::clear()

void TestQgsMultiLineString::cast()
{
QVERIFY( !QgsMultiLineString().cast( static_cast< const QgsAbstractGeometry *>( nullptr ) ) );
QVERIFY( !QgsMultiLineString::cast( static_cast< const QgsAbstractGeometry *>( nullptr ) ) );

QgsMultiLineString mls;
QVERIFY( QgsMultiLineString().cast( &mls ) );
QVERIFY( QgsMultiLineString::cast( &mls ) );

mls.fromWkt( QStringLiteral( "MultiLineStringZ()" ) );
QVERIFY( QgsMultiLineString().cast( &mls ) );
QVERIFY( QgsMultiLineString::cast( &mls ) );
QVERIFY( QgsGeometryCollection::cast( &mls ) );
mls.fromWkt( QStringLiteral( "MultiLineStringM()" ) );
QVERIFY( QgsMultiLineString().cast( &mls ) );
QVERIFY( QgsMultiLineString::cast( &mls ) );
QVERIFY( QgsGeometryCollection::cast( &mls ) );
mls.fromWkt( QStringLiteral( "MultiLineStringZM()" ) );
QVERIFY( QgsMultiLineString().cast( &mls ) );
QVERIFY( QgsMultiLineString::cast( &mls ) );
QVERIFY( QgsGeometryCollection::cast( &mls ) );
}

void TestQgsMultiLineString::vertexIterator()
Expand Down
14 changes: 9 additions & 5 deletions tests/src/core/geometry/testqgsmultipoint.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -663,20 +663,24 @@ void TestQgsMultiPoint::assignment()

void TestQgsMultiPoint::cast()
{
QVERIFY( !QgsMultiPoint().cast( static_cast< const QgsAbstractGeometry *>( nullptr ) ) );
QVERIFY( !QgsMultiPoint::cast( static_cast< const QgsAbstractGeometry *>( nullptr ) ) );

QgsMultiPoint mp;
QVERIFY( QgsMultiPoint().cast( &mp ) );
QVERIFY( QgsMultiPoint::cast( &mp ) );
QVERIFY( QgsGeometryCollection::cast( &mp ) );

mp.clear();
mp.fromWkt( QStringLiteral( "MultiPointZ(PointZ(0 1 1))" ) );
QVERIFY( QgsMultiPoint().cast( &mp ) );
QVERIFY( QgsMultiPoint::cast( &mp ) );
QVERIFY( QgsGeometryCollection::cast( &mp ) );

mp.fromWkt( QStringLiteral( "MultiPointM(PointM(0 1 1))" ) );
QVERIFY( QgsMultiPoint().cast( &mp ) );
QVERIFY( QgsMultiPoint::cast( &mp ) );
QVERIFY( QgsGeometryCollection::cast( &mp ) );

mp.fromWkt( QStringLiteral( "MultiPointZM(PointZM(0 1 1 2))" ) );
QVERIFY( QgsMultiPoint().cast( &mp ) );
QVERIFY( QgsMultiPoint::cast( &mp ) );
QVERIFY( QgsGeometryCollection::cast( &mp ) );
}

void TestQgsMultiPoint::isValid()
Expand Down
18 changes: 13 additions & 5 deletions tests/src/core/geometry/testqgsmultipolygon.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -587,21 +587,29 @@ void TestQgsMultiPolygon::insertGeometry()

void TestQgsMultiPolygon::cast()
{
QVERIFY( !QgsMultiPolygon().cast( nullptr ) );
QVERIFY( !QgsMultiPolygon::cast( static_cast< const QgsAbstractGeometry * >( nullptr ) ) );

QgsMultiPolygon mp;
QVERIFY( QgsMultiPolygon().cast( &mp ) );
QVERIFY( QgsMultiPolygon::cast( &mp ) );
QVERIFY( QgsMultiSurface::cast( &mp ) );
QVERIFY( QgsGeometryCollection::cast( &mp ) );

mp.clear();

mp.fromWkt( QStringLiteral( "MultiPolygonZ()" ) );
QVERIFY( QgsMultiPolygon().cast( &mp ) );
QVERIFY( QgsMultiPolygon::cast( &mp ) );
QVERIFY( QgsMultiSurface::cast( &mp ) );
QVERIFY( QgsGeometryCollection::cast( &mp ) );

mp.fromWkt( QStringLiteral( "MultiPolygonM()" ) );
QVERIFY( QgsMultiPolygon().cast( &mp ) );
QVERIFY( QgsMultiPolygon::cast( &mp ) );
QVERIFY( QgsMultiSurface::cast( &mp ) );
QVERIFY( QgsGeometryCollection::cast( &mp ) );

mp.fromWkt( QStringLiteral( "MultiPolygonZM()" ) );
QVERIFY( QgsMultiPolygon().cast( &mp ) );
QVERIFY( QgsMultiPolygon::cast( &mp ) );
QVERIFY( QgsMultiSurface::cast( &mp ) );
QVERIFY( QgsGeometryCollection::cast( &mp ) );
}

void TestQgsMultiPolygon::boundary()
Expand Down
4 changes: 4 additions & 0 deletions tests/src/core/geometry/testqgsmultisurface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -631,18 +631,22 @@ void TestQgsMultiSurface::cast()

QgsMultiSurface ms;
QVERIFY( QgsMultiSurface::cast( &ms ) );
QVERIFY( QgsGeometryCollection::cast( &ms ) );

ms.clear();
ms.fromWkt( QStringLiteral( "MultiSurfaceZ()" ) );
QVERIFY( QgsMultiSurface::cast( &ms ) );
QVERIFY( QgsGeometryCollection::cast( &ms ) );

ms.clear();
ms.fromWkt( QStringLiteral( "MultiSurfaceM()" ) );
QVERIFY( QgsMultiSurface::cast( &ms ) );
QVERIFY( QgsGeometryCollection::cast( &ms ) );

ms.clear();
ms.fromWkt( QStringLiteral( "MultiSurfaceZM()" ) );
QVERIFY( QgsMultiSurface::cast( &ms ) );
QVERIFY( QgsGeometryCollection::cast( &ms ) );
}

void TestQgsMultiSurface::toCurveType()
Expand Down
19 changes: 19 additions & 0 deletions tests/src/core/geometry/testqgspoint.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ class TestQgsPoint : public QObject
void toFromWkb();
void toFromWkt();
void exportImport();
void cast();
};

void TestQgsPoint::constructorv2()
Expand Down Expand Up @@ -1222,5 +1223,23 @@ void TestQgsPoint::exportImport()
QCOMPARE( exportPointFloat.asKml( 3 ), expectedKmlPrec3 );
}

void TestQgsPoint::cast()
{
QVERIFY( !QgsPoint::cast( static_cast< const QgsAbstractGeometry *>( nullptr ) ) );

QgsPoint mc1;
QVERIFY( QgsPoint::cast( &mc1 ) );

QgsPoint mc2;
mc2.fromWkt( QStringLiteral( "PointZ(1 2 3)" ) );
QVERIFY( QgsPoint::cast( &mc2 ) );

mc2.fromWkt( QStringLiteral( "PointM(1 2 3)" ) );
QVERIFY( QgsPoint::cast( &mc2 ) );

mc2.fromWkt( QStringLiteral( "PointZM(1 2 3 4)" ) );
QVERIFY( QgsPoint::cast( &mc2 ) );
}

QGSTEST_MAIN( TestQgsPoint )
#include "testqgspoint.moc"
18 changes: 13 additions & 5 deletions tests/src/core/geometry/testqgspolygon.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2267,19 +2267,27 @@ void TestQgsPolygon::Qtransform()

void TestQgsPolygon::cast()
{
QVERIFY( !QgsPolygon().cast( static_cast< const QgsAbstractGeometry *>( nullptr ) ) );
QVERIFY( !QgsPolygon::cast( static_cast< const QgsAbstractGeometry *>( nullptr ) ) );

QgsPolygon pl;
QVERIFY( QgsPolygon().cast( &pl ) );
QVERIFY( QgsPolygon::cast( &pl ) );
QVERIFY( QgsCurvePolygon::cast( &pl ) );
QVERIFY( QgsSurface::cast( &pl ) );

pl.fromWkt( QStringLiteral( "PolygonZ((0 0 0, 0 1 1, 1 0 2, 0 0 0))" ) );
QVERIFY( QgsPolygon().cast( &pl ) );
QVERIFY( QgsPolygon::cast( &pl ) );
QVERIFY( QgsCurvePolygon::cast( &pl ) );
QVERIFY( QgsSurface::cast( &pl ) );

pl.fromWkt( QStringLiteral( "PolygonM((0 0 1, 0 1 2, 1 0 3, 0 0 1))" ) );
QVERIFY( QgsPolygon().cast( &pl ) );
QVERIFY( QgsPolygon::cast( &pl ) );
QVERIFY( QgsCurvePolygon::cast( &pl ) );
QVERIFY( QgsSurface::cast( &pl ) );

pl.fromWkt( QStringLiteral( "PolygonZM((0 0 0 1, 0 1 1 2, 1 0 2 3, 0 0 0 1))" ) );
QVERIFY( QgsPolygon().cast( &pl ) );
QVERIFY( QgsPolygon::cast( &pl ) );
QVERIFY( QgsCurvePolygon::cast( &pl ) );
QVERIFY( QgsSurface::cast( &pl ) );
}

void TestQgsPolygon::toPolygon()
Expand Down
12 changes: 10 additions & 2 deletions tests/src/core/geometry/testqgstriangle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -452,11 +452,19 @@ void TestQgsTriangle::toCurveType()

void TestQgsTriangle::cast()
{
QVERIFY( !QgsTriangle::cast( static_cast< const QgsAbstractGeometry *>( nullptr ) ) );

QgsTriangle pCast;
QVERIFY( QgsPolygon().cast( &pCast ) );
QVERIFY( QgsTriangle::cast( &pCast ) );
QVERIFY( QgsPolygon::cast( &pCast ) );
QVERIFY( QgsCurvePolygon::cast( &pCast ) );
QVERIFY( QgsSurface::cast( &pCast ) );

QgsTriangle pCast2( QgsPoint( 7, 4 ), QgsPoint( 13, 3 ), QgsPoint( 9, 6 ) );
QVERIFY( QgsPolygon().cast( &pCast2 ) );
QVERIFY( QgsTriangle::cast( &pCast2 ) );
QVERIFY( QgsPolygon::cast( &pCast2 ) );
QVERIFY( QgsCurvePolygon::cast( &pCast2 ) );
QVERIFY( QgsSurface::cast( &pCast2 ) );
}

void TestQgsTriangle::toFromWkt()
Expand Down

0 comments on commit 5ae0af9

Please sign in to comment.