Skip to content

Commit a7911cf

Browse files
committedNov 14, 2012
First spatial test
1 parent e608964 commit a7911cf

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed
 

‎tests/src/core/testqgsexpression.cpp

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -545,6 +545,84 @@ class TestQgsExpression: public QObject
545545
QCOMPARE( vPerimeter.toDouble(), 20. );
546546
}
547547

548+
void eval_geometry_constructor_data()
549+
{
550+
QTest::addColumn<QString>( "string" );
551+
QTest::addColumn<void*>( "geomptr" );
552+
QTest::addColumn<bool>( "evalError" );
553+
554+
QgsPoint point( 123, 456 );
555+
QgsPolyline line;
556+
line << QgsPoint( 1, 1 ) << QgsPoint( 4, 2 ) << QgsPoint( 3, 1 );
557+
558+
QgsPolyline polyline, polygon_ring;
559+
polyline << QgsPoint( 0, 0 ) << QgsPoint( 10, 0 );
560+
polygon_ring << QgsPoint( 1, 1 ) << QgsPoint( 6, 1 ) << QgsPoint( 6, 6 ) << QgsPoint( 1, 6 ) << QgsPoint( 1, 1 );
561+
QgsPolygon polygon;
562+
polygon << polygon_ring;
563+
564+
QTest::newRow( "geomFromWKT Point" ) << "geomFromWKT('"+QgsGeometry::fromPoint( point )->exportToWkt()+"')" << ( void* ) QgsGeometry::fromPoint( point ) << false;
565+
QTest::newRow( "geomFromWKT Line" ) << "geomFromWKT('"+QgsGeometry::fromPolyline( line )->exportToWkt()+"')" << ( void* ) QgsGeometry::fromPolyline( line ) << false;
566+
QTest::newRow( "geomFromWKT Polyline" ) << "geomFromWKT('"+QgsGeometry::fromPolyline( polyline )->exportToWkt()+"')" << ( void* ) QgsGeometry::fromPolyline( polyline ) << false;
567+
QTest::newRow( "geomFromWKT Polygon" ) << "geomFromWKT('"+QgsGeometry::fromPolygon( polygon )->exportToWkt()+"')" << ( void* ) QgsGeometry::fromPolygon( polygon ) << false;
568+
}
569+
570+
void eval_geometry_constructor()
571+
{
572+
QFETCH( QString, string );
573+
QFETCH( void*, geomptr );
574+
QFETCH( bool, evalError );
575+
576+
QgsGeometry* geom = ( QgsGeometry* ) geomptr;
577+
578+
QgsFeature f;
579+
f.setGeometry( geom );
580+
581+
QgsExpression exp( string );
582+
QCOMPARE( exp.hasParserError(), false );
583+
QCOMPARE( exp.needsGeometry(), false );
584+
QVariant out = exp.evaluate( &f );
585+
QCOMPARE( exp.hasEvalError(), evalError );
586+
587+
QCOMPARE( out.canConvert<QgsGeometry*>(), true );
588+
QgsGeometry* outGeom = out.value<QgsGeometry*>();
589+
QCOMPARE( geom->equals( outGeom ), true );
590+
}
591+
592+
void eval_spatial_operator_data()
593+
{
594+
QTest::addColumn<QString>( "string" );
595+
QTest::addColumn<void*>( "geomptr" );
596+
QTest::addColumn<bool>( "evalError" );
597+
QTest::addColumn<QVariant>( "result" );
598+
599+
QgsPoint point( 0, 0 );
600+
QTest::newRow( "No Intersects" ) << "intersects( $geometry, geomFromWKT('LINESTRING ( 2 0, 0 2 )') )" << ( void* ) QgsGeometry::fromPoint( point ) << false << QVariant( 0 );
601+
QTest::newRow( "Intersects" ) << "intersects( $geometry, geomFromWKT('LINESTRING ( 0 0, 0 2 )') )" << ( void* ) QgsGeometry::fromPoint( point ) << false << QVariant( 1 );
602+
QTest::newRow( "No Disjoint" ) << "disjoint( $geometry, geomFromWKT('LINESTRING ( 0 0, 0 2 )') )" << ( void* ) QgsGeometry::fromPoint( point ) << false << QVariant( 0 );
603+
QTest::newRow( "Disjoint" ) << "disjoint( $geometry, geomFromWKT('LINESTRING ( 2 0, 0 2 )') )" << ( void* ) QgsGeometry::fromPoint( point ) << false << QVariant( 1 );
604+
}
605+
606+
void eval_spatial_operator()
607+
{
608+
QFETCH( QString, string );
609+
QFETCH( void*, geomptr );
610+
QFETCH( bool, evalError );
611+
QFETCH( QVariant, result );
612+
613+
QgsGeometry* geom = ( QgsGeometry* ) geomptr;
614+
615+
QgsFeature f;
616+
f.setGeometry( geom );
617+
618+
QgsExpression exp( string );
619+
QCOMPARE( exp.hasParserError(), false );
620+
QCOMPARE( exp.needsGeometry(), true );
621+
QVariant out = exp.evaluate( &f );
622+
QCOMPARE( exp.hasEvalError(), evalError );
623+
QCOMPARE( out.toInt(), result.toInt() );
624+
}
625+
548626
void eval_special_columns()
549627
{
550628
QTest::addColumn<QString>( "string" );

0 commit comments

Comments
 (0)
Please sign in to comment.