Skip to content

Commit 3ba7c0b

Browse files
committedMay 29, 2018
Unit tests for filterVertices
1 parent 16091ec commit 3ba7c0b

File tree

1 file changed

+84
-0
lines changed

1 file changed

+84
-0
lines changed
 

‎tests/src/core/testqgsgeometry.cpp

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1134,6 +1134,15 @@ void TestQgsGeometry::point()
11341134
QCOMPARE( p.z(), 3.3 );
11351135
QCOMPARE( p.m(), 4.4 );
11361136
QCOMPARE( p.wkbType(), QgsWkbTypes::PointZM );
1137+
1138+
// filter vertex
1139+
p = QgsPoint( 1.1, 2.2, 3.3, 4.4, QgsWkbTypes::PointZM );
1140+
p.filterVertices( []( const QgsPoint & )-> bool { return false; } );
1141+
QCOMPARE( p.x(), 1.1 );
1142+
QCOMPARE( p.y(), 2.2 );
1143+
QCOMPARE( p.z(), 3.3 );
1144+
QCOMPARE( p.m(), 4.4 );
1145+
QCOMPARE( p.wkbType(), QgsWkbTypes::PointZM );
11371146
}
11381147

11391148
void TestQgsGeometry::circularString()
@@ -2608,6 +2617,17 @@ void TestQgsGeometry::circularString()
26082617
swapLine.setPoints( QgsPointSequence() << QgsPoint( 11, 2, 3, 4, QgsWkbTypes::PointZM ) << QgsPoint( 11, 12, 13, 14, QgsWkbTypes::PointZM ) << QgsPoint( 111, 12, 23, 24, QgsWkbTypes::PointZM ) );
26092618
swapLine.swapXy();
26102619
QCOMPARE( swapLine.asWkt(), QStringLiteral( "CircularStringZM (2 11 3 4, 12 11 13 14, 12 111 23 24)" ) );
2620+
2621+
// filter vertex
2622+
QgsCircularString filterLine;
2623+
auto filter = []( const QgsPoint & point )-> bool
2624+
{
2625+
return point.x() < 5;
2626+
};
2627+
filterLine.filterVertices( filter ); // no crash
2628+
filterLine.setPoints( QgsPointSequence() << QgsPoint( 1, 2, 3, 4, QgsWkbTypes::PointZM ) << QgsPoint( 4, 12, 13, 14, QgsWkbTypes::PointZM ) << QgsPoint( 111, 12, 23, 24, QgsWkbTypes::PointZM ) );
2629+
filterLine.filterVertices( filter );
2630+
QCOMPARE( filterLine.asWkt( 2 ), QStringLiteral( "CircularStringZM (1 2 3 4, 4 12 13 14)" ) );
26112631
}
26122632

26132633

@@ -4508,6 +4528,17 @@ void TestQgsGeometry::lineString()
45084528
swapLine.setPoints( QgsPointSequence() << QgsPoint( 11, 2, 3, 4, QgsWkbTypes::PointZM ) << QgsPoint( 11, 12, 13, 14, QgsWkbTypes::PointZM ) << QgsPoint( 111, 12, 23, 24, QgsWkbTypes::PointZM ) );
45094529
swapLine.swapXy();
45104530
QCOMPARE( swapLine.asWkt( 2 ), QStringLiteral( "LineStringZM (2 11 3 4, 12 11 13 14, 12 111 23 24)" ) );
4531+
4532+
// filter vertex
4533+
QgsLineString filterLine;
4534+
auto filter = []( const QgsPoint & point )-> bool
4535+
{
4536+
return point.x() < 5;
4537+
};
4538+
filterLine.filterVertices( filter ); // no crash
4539+
filterLine.setPoints( QgsPointSequence() << QgsPoint( 11, 2, 3, 4, QgsWkbTypes::PointZM ) << QgsPoint( 1, 2, 3, 4, QgsWkbTypes::PointZM ) << QgsPoint( 4, 12, 13, 14, QgsWkbTypes::PointZM ) << QgsPoint( 111, 12, 23, 24, QgsWkbTypes::PointZM ) );
4540+
filterLine.filterVertices( filter );
4541+
QCOMPARE( swapLine.asWkt( 2 ), QStringLiteral( "LineStringZM (2 11 3 4, 12 11 13 14, 12 111 23 24)" ) );
45114542
}
45124543

45134544
void TestQgsGeometry::polygon()
@@ -6268,6 +6299,25 @@ void TestQgsGeometry::polygon()
62686299
swapPolygon.addInteriorRing( swapLine.clone() );
62696300
swapPolygon.swapXy();
62706301
QCOMPARE( swapPolygon.asWkt( 2 ), QStringLiteral( "PolygonZM ((11 2 3 4, 11 12 13 14, 11 22 23 24, 11 2 3 4),(2 1 5 6, 2.01 11.01 15 16, 2.01 11 25 26, 2 11 5 6, 2 1 5 6))" ) );
6302+
6303+
// filter vertex
6304+
QgsPolygon filterPolygon;
6305+
auto filter = []( const QgsPoint & point )-> bool
6306+
{
6307+
return point.x() > 5;
6308+
};
6309+
filterPolygon.filterVertices( filter ); // no crash
6310+
QgsLineString filterPolygonRing;
6311+
filterPolygonRing.setPoints( QgsPointSequence() << QgsPoint( 11, 2, 3, 4, QgsWkbTypes::PointZM ) << QgsPoint( 4, 12, 13, 14, QgsWkbTypes::PointZM ) << QgsPoint( 11, 12, 13, 14, QgsWkbTypes::PointZM ) << QgsPoint( 11, 22, 23, 24, QgsWkbTypes::PointZM ) << QgsPoint( 11, 2, 3, 4, QgsWkbTypes::PointZM ) );
6312+
filterPolygon.setExteriorRing( filterPolygonRing.clone() );
6313+
filterPolygon.filterVertices( filter );
6314+
QCOMPARE( filterPolygon.asWkt(), QStringLiteral( "PolygonZM ((11 2 3 4, 11 12 13 14, 11 22 23 24, 11 2 3 4))" ) );
6315+
filterPolygonRing.setPoints( QgsPointSequence() << QgsPoint( 10, 2, 5, 6, QgsWkbTypes::PointZM ) << QgsPoint( 4, 12, 13, 14, QgsWkbTypes::PointZM ) << QgsPoint( 11.01, 2.01, 15, 16, QgsWkbTypes::PointZM ) << QgsPoint( 11, 2.01, 25, 26, QgsWkbTypes::PointZM ) << QgsPoint( 11, 2, 5, 6, QgsWkbTypes::PointZM ) << QgsPoint( 10, 2, 5, 6, QgsWkbTypes::PointZM ) );
6316+
filterPolygon.addInteriorRing( filterPolygonRing.clone() );
6317+
filterPolygonRing.setPoints( QgsPointSequence() << QgsPoint( 1, 2, 5, 6, QgsWkbTypes::PointZM ) << QgsPoint( 11.01, 2.01, 15, 16, QgsWkbTypes::PointZM ) << QgsPoint( 11, 2.01, 25, 26, QgsWkbTypes::PointZM ) << QgsPoint( 1, 2, 5, 6, QgsWkbTypes::PointZM ) );
6318+
filterPolygon.addInteriorRing( filterPolygonRing.clone() );
6319+
filterPolygon.filterVertices( filter );
6320+
QCOMPARE( filterPolygon.asWkt( 2 ), QStringLiteral( "PolygonZM ((11 2 3 4, 11 12 13 14, 11 22 23 24, 11 2 3 4),(10 2 5 6, 11.01 2.01 15 16, 11 2.01 25 26, 11 2 5 6, 10 2 5 6))" ) );
62716321
}
62726322

62736323
void TestQgsGeometry::triangle()
@@ -11037,6 +11087,23 @@ void TestQgsGeometry::compoundCurve()
1103711087
swapCurve.swapXy();
1103811088
QCOMPARE( swapCurve.asWkt(), QStringLiteral( "CompoundCurveZM (CircularStringZM (11 2 3 4, 11 12 13 14, 111 12 23 24),(111 12 23 24, 122 22 33 34))" ) );
1103911089

11090+
// filter vertices
11091+
auto filter = []( const QgsPoint & point )-> bool
11092+
{
11093+
return point.x() > 5;
11094+
};
11095+
QgsCompoundCurve filterCurve;
11096+
filterCurve.filterVertices( filter ); //no crash
11097+
nodeLine.setPoints( QgsPointSequence() << QgsPoint( 1, 2, 3, 4, QgsWkbTypes::PointZM ) << QgsPoint( 11, 2, 3, 4, QgsWkbTypes::PointZM ) << QgsPoint( 11, 12, 13, 14, QgsWkbTypes::PointZM ) << QgsPoint( 111, 12, 23, 24, QgsWkbTypes::PointZM ) << QgsPoint( 1, 2, 3, 4, QgsWkbTypes::PointZM ) );
11098+
filterCurve.addCurve( nodeLine.clone() );
11099+
filterCurve.filterVertices( filter );
11100+
QCOMPARE( filterCurve.asWkt(), QStringLiteral( "CompoundCurveZM (CircularStringZM (11 2 3 4, 11 12 13 14, 111 12 23 24))" ) );
11101+
QgsLineString lsFilter;
11102+
lsFilter.setPoints( QgsPointSequence() << QgsPoint( 12, 111, 23, 24, QgsWkbTypes::PointZM ) << QgsPoint( 22, 122, 33, 34, QgsWkbTypes::PointZM ) << QgsPoint( 1, 111, 23, 24, QgsWkbTypes::PointZM ) );
11103+
filterCurve.addCurve( lsFilter.clone() );
11104+
filterCurve.filterVertices( filter );
11105+
QCOMPARE( filterCurve.asWkt(), QStringLiteral( "CompoundCurveZM (CircularStringZM (11 2 3 4, 11 12 13 14, 111 12 23 24),(12 111 23 24, 22 122 33 34))" ) );
11106+
1104011107
}
1104111108

1104211109
void TestQgsGeometry::multiPoint()
@@ -15427,6 +15494,23 @@ void TestQgsGeometry::geometryCollection()
1542715494
swapCollect.addGeometry( swapLine.clone() );
1542815495
swapCollect.swapXy();
1542915496
QCOMPARE( swapCollect.asWkt( 2 ), QStringLiteral( "GeometryCollection (LineStringZM (11 2 3 4, 11 12 13 14, 111 12 23 24),LineStringZM (2 11 5 6, 1.99 11.01 15 16, 2.01 11.02 25 26))" ) );
15497+
15498+
// filter vertices
15499+
QgsGeometryCollection filterCollect;
15500+
auto filter = []( const QgsPoint & point )-> bool
15501+
{
15502+
return point.x() > 5;
15503+
};
15504+
QgsLineString filterLine;
15505+
filterCollect.filterVertices( filter ); // no crash
15506+
filterLine.setPoints( QgsPointSequence() << QgsPoint( 1, 2, 3, 4, QgsWkbTypes::PointZM ) << QgsPoint( 11, 12, 13, 14, QgsWkbTypes::PointZM ) << QgsPoint( 111, 12, 23, 24, QgsWkbTypes::PointZM ) );
15507+
filterCollect.addGeometry( filterLine.clone() );
15508+
filterCollect.filterVertices( filter );
15509+
QCOMPARE( filterCollect.asWkt(), QStringLiteral( "GeometryCollection (LineStringZM (11 12 13 14, 111 12 23 24))" ) );
15510+
filterLine.setPoints( QgsPointSequence() << QgsPoint( 11, 2, 5, 6, QgsWkbTypes::PointZM ) << QgsPoint( 1.01, 1.99, 15, 16, QgsWkbTypes::PointZM ) << QgsPoint( 11.02, 2.01, 25, 26, QgsWkbTypes::PointZM ) );
15511+
filterCollect.addGeometry( filterLine.clone() );
15512+
filterCollect.filterVertices( filter );
15513+
QCOMPARE( filterCollect.asWkt( 2 ), QStringLiteral( "GeometryCollection (LineStringZM (11 12 13 14, 111 12 23 24),LineStringZM (11 2 5 6, 11.02 2.01 25 26))" ) );
1543015514
}
1543115515

1543215516
void TestQgsGeometry::fromQgsPointXY()

0 commit comments

Comments
 (0)
Please sign in to comment.