@@ -30,7 +30,9 @@ class TestQgsInternalGeometryEngine : public QObject
30
30
void init ();// will be called before each testfunction is executed.
31
31
void cleanup ();// will be called after every testfunction.
32
32
void ray ();
33
- void lineSegmentDistanceComparer ();
33
+ void testLineSegmentDistanceComparer_data ();
34
+ void testLineSegmentDistanceComparer ();
35
+ void clockwiseAngleComparer ();
34
36
35
37
};
36
38
@@ -94,24 +96,69 @@ void TestQgsInternalGeometryEngine::ray()
94
96
QCOMPARE ( intersect.x (), 2.0 );
95
97
QCOMPARE ( intersect.y (), 6.0 );
96
98
99
+ ray = QgsRay2D ( QgsPointXY ( 0 , 0 ), QgsVector ( 1 , 0 ) );
100
+ QVERIFY ( !ray.intersects ( QgsLineSegment2D ( QgsPointXY ( -1 , 1 ), QgsPointXY ( -1 , -1 ) ), intersect ) );
101
+ QVERIFY ( !ray.intersects ( QgsLineSegment2D ( QgsPointXY ( -1e-3 , 1 ), QgsPointXY ( -1e-3 , -1 ) ), intersect ) );
102
+ QVERIFY ( !ray.intersects ( QgsLineSegment2D ( QgsPointXY ( -2 , 0 ), QgsPointXY ( -1 , 0 ) ), intersect ) );
103
+ QVERIFY ( ray.intersects ( QgsLineSegment2D ( QgsPointXY ( 0 , 1 ), QgsPointXY ( 0 , -1 ) ), intersect ) );
104
+ QCOMPARE ( intersect.x (), 0.0 );
105
+ QCOMPARE ( intersect.y (), 0.0 );
106
+ QVERIFY ( ray.intersects ( QgsLineSegment2D ( QgsPointXY ( -1 , 0 ), QgsPointXY ( 0 , 0 ) ), intersect ) );
107
+ QCOMPARE ( intersect.x (), 0.0 );
108
+ QCOMPARE ( intersect.y (), 0.0 );
109
+ QVERIFY ( ray.intersects ( QgsLineSegment2D ( QgsPointXY ( 0 , 0 ), QgsPointXY ( -1 , 0 ) ), intersect ) );
110
+ QCOMPARE ( intersect.x (), 0.0 );
111
+ QCOMPARE ( intersect.y (), 0.0 );
112
+ QVERIFY ( ray.intersects ( QgsLineSegment2D ( QgsPointXY ( 2 , 1 ), QgsPointXY ( 2 , -1 ) ), intersect ) );
113
+ QCOMPARE ( intersect.x (), 2.0 );
114
+ QCOMPARE ( intersect.y (), 0.0 );
115
+ QVERIFY ( ray.intersects ( QgsLineSegment2D ( QgsPointXY ( 2 , 0 ), QgsPointXY ( 3 , 0 ) ), intersect ) );
116
+ QCOMPARE ( intersect.x (), 2.0 );
117
+ QCOMPARE ( intersect.y (), 0.0 );
118
+ QVERIFY ( ray.intersects ( QgsLineSegment2D ( QgsPointXY ( 3 , 0 ), QgsPointXY ( 2 , 0 ) ), intersect ) );
119
+ QCOMPARE ( intersect.x (), 2.0 );
120
+ QCOMPARE ( intersect.y (), 0.0 );
121
+ QVERIFY ( ray.intersects ( QgsLineSegment2D ( QgsPointXY ( 1 , 0 ), QgsPointXY ( 1 , -1 ) ), intersect ) );
122
+ QCOMPARE ( intersect.x (), 1.0 );
123
+ QCOMPARE ( intersect.y (), 0.0 );
97
124
}
98
125
99
- void TestQgsInternalGeometryEngine::lineSegmentDistanceComparer ()
126
+ void TestQgsInternalGeometryEngine::testLineSegmentDistanceComparer_data ()
100
127
{
128
+ QTest::addColumn<QgsPointXY>( " origin" );
129
+ QTest::addColumn<QgsPointXY>( " a" );
130
+ QTest::addColumn<QgsPointXY>( " b" );
131
+ QTest::addColumn<QgsPointXY>( " c" );
132
+ QTest::addColumn<QgsPointXY>( " d" );
133
+
134
+ QTest::newRow ( " a" ) << QgsPointXY ( 3 , 5 ) << QgsPointXY ( 1 , 2 ) << QgsPointXY ( 3 , 4 ) << QgsPointXY ( 11 , 2 ) << QgsPointXY ( 13 , 4 );
135
+ QTest::newRow ( " b" ) << QgsPointXY ( 0 , 0 ) << QgsPointXY ( 1 , 1 ) << QgsPointXY ( 1 , -1 ) << QgsPointXY ( 2 , 1 ) << QgsPointXY ( 2 , -1 );
136
+ QTest::newRow ( " b" ) << QgsPointXY ( 0 , 0 ) << QgsPointXY ( 1 , 1 ) << QgsPointXY ( 1 , -1 ) << QgsPointXY ( 2 , 2 ) << QgsPointXY ( 2 , 3 );
137
+ QTest::newRow ( " b" ) << QgsPointXY ( 0 , 0 ) << QgsPointXY ( 2 , 0 ) << QgsPointXY ( 1 , 1 ) << QgsPointXY ( 2 , 1 ) << QgsPointXY ( 2 , 0 );
138
+ QTest::newRow ( " b" ) << QgsPointXY ( 0 , 0 ) << QgsPointXY ( 2 , 1 ) << QgsPointXY ( 2 , 0 ) << QgsPointXY ( 2 , 0 ) << QgsPointXY ( 3 , 1 );
139
+ }
140
+
141
+ void TestQgsInternalGeometryEngine::testLineSegmentDistanceComparer ()
142
+ {
143
+ QFETCH ( QgsPointXY, origin );
144
+ QFETCH ( QgsPointXY, a );
145
+ QFETCH ( QgsPointXY, b );
146
+ QFETCH ( QgsPointXY, c );
147
+ QFETCH ( QgsPointXY, d );
148
+
149
+ QgsLineSegmentDistanceComparer cmp ( origin );
150
+ QVERIFY ( cmp ( QgsLineSegment2D ( a, b ), QgsLineSegment2D ( c, d ) ) );
151
+ QVERIFY ( cmp ( QgsLineSegment2D ( b, a ), QgsLineSegment2D ( c, d ) ) );
152
+ QVERIFY ( cmp ( QgsLineSegment2D ( a, b ), QgsLineSegment2D ( d, c ) ) );
153
+ QVERIFY ( cmp ( QgsLineSegment2D ( b, a ), QgsLineSegment2D ( d, c ) ) );
154
+
155
+ QVERIFY ( !cmp ( QgsLineSegment2D ( c, d ), QgsLineSegment2D ( a, b ) ) );
156
+ QVERIFY ( !cmp ( QgsLineSegment2D ( d, c ), QgsLineSegment2D ( a, b ) ) );
157
+ QVERIFY ( !cmp ( QgsLineSegment2D ( c, d ), QgsLineSegment2D ( b, a ) ) );
158
+ QVERIFY ( !cmp ( QgsLineSegment2D ( d, c ), QgsLineSegment2D ( b, a ) ) );
159
+
101
160
QgsLineSegmentDistanceComparer comp ( QgsPointXY ( 3 , 5 ) );
102
161
103
- QVERIFY ( comp ( QgsLineSegment2D ( QgsPointXY ( 1 , 2 ), QgsPointXY ( 3 , 4 ) ),
104
- QgsLineSegment2D ( QgsPointXY ( 11 , 2 ), QgsPointXY ( 13 , 4 ) ) ) );
105
- QVERIFY ( comp ( QgsLineSegment2D ( QgsPointXY ( 1 , 2 ), QgsPointXY ( 3 , 4 ) ),
106
- QgsLineSegment2D ( QgsPointXY ( 13 , 4 ), QgsPointXY ( 11 , 2 ) ) ) );
107
- QVERIFY ( comp ( QgsLineSegment2D ( QgsPointXY ( 1 , 2 ), QgsPointXY ( 3 , 4 ) ),
108
- QgsLineSegment2D ( QgsPointXY ( -13 , 4 ), QgsPointXY ( -11 , 2 ) ) ) );
109
- QVERIFY ( comp ( QgsLineSegment2D ( QgsPointXY ( 1 , 2 ), QgsPointXY ( 3 , 4 ) ),
110
- QgsLineSegment2D ( QgsPointXY ( -13 , -4 ), QgsPointXY ( -11 , 2 ) ) ) );
111
- QVERIFY ( comp ( QgsLineSegment2D ( QgsPointXY ( 1 , 2 ), QgsPointXY ( 3 , 4 ) ),
112
- QgsLineSegment2D ( QgsPointXY ( 11 , 2 ), QgsPointXY ( 13 , 4 ) ) ) );
113
- QVERIFY ( !comp ( QgsLineSegment2D ( QgsPointXY ( 11 , 2 ), QgsPointXY ( 13 , 4 ) ),
114
- QgsLineSegment2D ( QgsPointXY ( 1 , 2 ), QgsPointXY ( 3 , 4 ) ) ) );
115
162
QVERIFY ( !comp ( QgsLineSegment2D ( QgsPointXY ( 1 , 2 ), QgsPointXY ( 3 , 4 ) ),
116
163
QgsLineSegment2D ( QgsPointXY ( 5 , 6 ), QgsPointXY ( 8 , 9 ) ) ) );
117
164
QVERIFY ( comp ( QgsLineSegment2D ( QgsPointXY ( 5 , 6 ), QgsPointXY ( 8 , 9 ) ),
@@ -124,5 +171,27 @@ void TestQgsInternalGeometryEngine::lineSegmentDistanceComparer()
124
171
QgsLineSegment2D ( QgsPointXY ( 8 , 9 ), QgsPointXY ( 15 , 16 ) ) ) );
125
172
}
126
173
174
+ void TestQgsInternalGeometryEngine::clockwiseAngleComparer ()
175
+ {
176
+ QgsClockwiseAngleComparer cmp ( QgsPointXY ( 0 , 0 ) );
177
+ QVERIFY ( cmp ( QgsPointXY ( 0 , 1 ), QgsPointXY ( 1 , 1 ) ) );
178
+ QVERIFY ( !cmp ( QgsPointXY ( 1 , 1 ), QgsPointXY ( 0 , 1 ) ) );
179
+
180
+ QVERIFY ( cmp ( QgsPointXY ( 1 , 1 ), QgsPointXY ( 1 , -1 ) ) );
181
+ QVERIFY ( !cmp ( QgsPointXY ( 1 , -1 ), QgsPointXY ( 1 , 1 ) ) );
182
+
183
+ QVERIFY ( cmp ( QgsPointXY ( 1 , 0 ), QgsPointXY ( -1 , -1 ) ) );
184
+ QVERIFY ( !cmp ( QgsPointXY ( -1 , -1 ), QgsPointXY ( 1 , 0 ) ) );
185
+
186
+ QVERIFY ( cmp ( QgsPointXY ( 0 , 1 ), QgsPointXY ( 0 , -1 ) ) );
187
+ QVERIFY ( !cmp ( QgsPointXY ( 0 , -1 ), QgsPointXY ( 0 , 1 ) ) );
188
+
189
+ QVERIFY ( cmp ( QgsPointXY ( 1 , 0 ), QgsPointXY ( 2 , 0 ) ) );
190
+ QVERIFY ( !cmp ( QgsPointXY ( 2 , 0 ), QgsPointXY ( 1 , 0 ) ) );
191
+
192
+ QVERIFY ( !cmp ( QgsPointXY ( 1 , 0 ), QgsPointXY ( 1 , 0 ) ) );
193
+ QVERIFY ( !cmp ( QgsPointXY ( 0 , 0 ), QgsPointXY ( 0 , 0 ) ) );
194
+ }
195
+
127
196
QGSTEST_MAIN ( TestQgsInternalGeometryEngine )
128
197
#include " testqgsinternalgeometryengine.moc"
0 commit comments