@@ -46,6 +46,7 @@ class TestQgsRubberband : public QObject
46
46
47
47
void testAddSingleMultiGeometries (); // test for #7728
48
48
void testBoundingRect (); // test for #12392
49
+ void testVisibility (); // test for 12486
49
50
50
51
private:
51
52
QgsMapCanvas* mCanvas ;
@@ -153,6 +154,46 @@ void TestQgsRubberband::testBoundingRect()
153
154
154
155
}
155
156
157
+ void TestQgsRubberband::testVisibility ()
158
+ {
159
+ mRubberband = new QgsRubberBand ( mCanvas , mPolygonLayer ->geometryType () );
160
+
161
+ // Visibility is set to false by default
162
+ QCOMPARE ( mRubberband ->isVisible (), false );
163
+
164
+ // Check visibility after setting to empty geometry
165
+ QSharedPointer<QgsGeometry> emptyGeom ( new QgsGeometry );
166
+ mRubberband ->setToGeometry ( emptyGeom.data (), mPolygonLayer );
167
+ QCOMPARE ( mRubberband ->isVisible (), false );
168
+
169
+ // Check that visibility changes
170
+ mRubberband ->setVisible ( true );
171
+ mRubberband ->setToGeometry ( emptyGeom.data (), mPolygonLayer );
172
+ QCOMPARE ( mRubberband ->isVisible (), false );
173
+
174
+ // Check visibility after setting to valid geometry
175
+ QSharedPointer<QgsGeometry> geom ( QgsGeometry::fromWkt (
176
+ " POLYGON((10 10,10 30,30 30,30 10,10 10))"
177
+ ) );
178
+ mRubberband ->setToGeometry ( geom.data (), mPolygonLayer );
179
+ QCOMPARE ( mRubberband ->isVisible (), true );
180
+
181
+ // Add point without update
182
+ mRubberband ->reset ( true );
183
+ mRubberband ->addPoint ( QgsPoint ( 10 , 10 ), false );
184
+ QCOMPARE ( mRubberband ->isVisible (), false );
185
+
186
+ // Add point with update
187
+ mRubberband ->addPoint ( QgsPoint ( 20 , 20 ), true );
188
+ QCOMPARE ( mRubberband ->isVisible (), true );
189
+
190
+ // Check visibility after zoom (should not be changed)
191
+ mRubberband ->setVisible ( false );
192
+ mCanvas ->zoomIn ();
193
+ QCOMPARE ( mRubberband ->isVisible (), false );
194
+
195
+ }
196
+
156
197
157
198
QTEST_MAIN ( TestQgsRubberband )
158
199
#include " testqgsrubberband.moc"
0 commit comments