@@ -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 ;
@@ -128,7 +129,6 @@ void TestQgsRubberband::testBoundingRect()
128
129
mRubberband ->setIconSize ( 5 ); // default, but better be explicit
129
130
mRubberband ->setWidth ( 1 ); // default, but better be explicit
130
131
mRubberband ->addGeometry ( geom.data (), mPolygonLayer );
131
- mRubberband ->setVisible ( true );
132
132
133
133
// 20 pixels for the extent + 3 for pen & icon per side + 2 of padding
134
134
QCOMPARE ( mRubberband ->boundingRect (), QRectF (QPointF (-1 ,-1 ),QSizeF (28 ,28 )) );
@@ -152,7 +152,42 @@ void TestQgsRubberband::testBoundingRect()
152
152
mapSize.height () - ( 30 + 3 ) * 2
153
153
) );
154
154
155
- // Check visibility after zoom
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)
156
191
mRubberband ->setVisible ( false );
157
192
mCanvas ->zoomIn ();
158
193
QCOMPARE ( mRubberband ->isVisible (), false );
0 commit comments