Skip to content

Commit 26dc406

Browse files
committedSep 7, 2012
python tests for QgsRectangle and QgsSpatialIndex
1 parent 4d630b7 commit 26dc406

File tree

3 files changed

+190
-0
lines changed

3 files changed

+190
-0
lines changed
 

‎tests/src/python/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,5 @@ ADD_PYTHON_TEST(PyQgsRasterFileWriter test_qgsrasterfilewriter.py)
88
ADD_PYTHON_TEST(PyQgsMemoryProvider test_qgsmemoryprovider.py)
99
ADD_PYTHON_TEST(PyQgsLogger test_qgslogger.py)
1010
ADD_PYTHON_TEST(PyQgsCoordinateTransform test_qgscoordinatetransform.py)
11+
ADD_PYTHON_TEST(PyQgsRectangle test_qgsrectangle.py)
12+
ADD_PYTHON_TEST(PyQgsSpatialIndex test_qgsspatialindex.py)

‎tests/src/python/test_qgsrectangle.py

Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
import unittest
2+
3+
from qgis.core import (QGis,
4+
QgsRectangle,
5+
QgsPoint)
6+
7+
from utilities import getQgisTestApp
8+
QGISAPP, CANVAS, IFACE, PARENT = getQgisTestApp()
9+
10+
class TestQgsRectangle(unittest.TestCase):
11+
12+
def testCtor(self):
13+
rect = QgsRectangle( 5.0, 5.0, 10.0, 10.0)
14+
15+
assert rect.isEmpty(), "Empty rectangle constructed"
16+
17+
myMessage = ('Expected: %s\nGot: %s\n' %
18+
(5.0, rect.xMinimum()))
19+
assert rect.xMinimum() == 5.0, myMessage
20+
21+
myMessage = ('Expected: %s\nGot: %s\n' %
22+
(5.0, rect.yMinimum()))
23+
assert rect.yMinimum() == 5.0, myMessage
24+
25+
myMessage = ('Expected: %s\nGot: %s\n' %
26+
(10.0, rect.xMaximum()))
27+
assert rect.xMaximum() == 10.0, myMessage
28+
29+
myMessage = ('Expected: %s\nGot: %s\n' %
30+
(10.0, rect.yMaximum()))
31+
assert rect.yMaximum() == 10.0, myMessage
32+
33+
34+
def testDimensions(self):
35+
rect = QgsRectangle( 0.0, 0.0, 10.0, 10.0)
36+
37+
myMessage = ('Expected: %s\nGot: %s\n' %
38+
(10.0, rect.width()))
39+
assert rect.width() == 10.0, myMessage
40+
41+
myMessage = ('Expected: %s\nGot: %s\n' %
42+
(10.0, rect.height()))
43+
assert rect.height() == 10.0, myMessage
44+
45+
myMessage = ('Expected: %s\nGot: %s\n' %
46+
("5.0, 5.0", rect.center().toString()))
47+
assert rect.center() == QgsPoint(5.0, 5.0), myMessage
48+
49+
rect.scale(2.0)
50+
51+
myMessage = ('Expected: %s\nGot: %s\n' %
52+
(20.0, rect.width()))
53+
assert rect.width() == 20.0, myMessage
54+
55+
myMessage = ('Expected: %s\nGot: %s\n' %
56+
(20.0, rect.height()))
57+
assert rect.height() == 20.0, myMessage
58+
59+
def testIntersection(self):
60+
rect1 = QgsRectangle( 0.0, 0.0, 5.0, 5.0)
61+
rect2 = QgsRectangle( 2.0, 2.0, 7.0, 7.0)
62+
63+
myMessage = ('Expected: %s\nGot: %s\n' %
64+
(True, rect1.intersects(rect2)))
65+
assert rect1.intersects(rect2), myMessage
66+
67+
rect3 = rect1.intersect(rect2)
68+
assert rect3.isEmpty(), "Empty rectangle returned"
69+
70+
myMessage = ('Expected: %s\nGot: %s\n' %
71+
(3.0, rect.width()))
72+
assert rect.width() == 3.0, myMessage
73+
74+
myMessage = ('Expected: %s\nGot: %s\n' %
75+
(3.0, rect.height()))
76+
assert rect.height() == 3.0, myMessage
77+
78+
def testContains(self):
79+
rect1 = QgsRectangle( 0.0, 0.0, 5.0, 5.0)
80+
rect2 = QgsRectangle( 2.0, 2.0, 7.0, 7.0)
81+
pnt1 = QgsPoint(4.0, 4.0)
82+
pnt2 = QgsPoint(6.0, 2.0)
83+
84+
rect3 = rect1.intersect(rect2)
85+
86+
myMessage = ('Expected: %s\nGot: %s\n' %
87+
(True, rect1.contains(rect3)))
88+
assert rect1.contains(rect3), myMessage
89+
90+
myMessage = ('Expected: %s\nGot: %s\n' %
91+
(True, rect2.contains(rect3)))
92+
assert rect2.contains(rect3), myMessage
93+
94+
# test for point
95+
myMessage = ('Expected: %s\nGot: %s\n' %
96+
(True, rect1.contains(pnt1)))
97+
assert rect1.contains(pnt1), myMessage
98+
99+
myMessage = ('Expected: %s\nGot: %s\n' %
100+
(True, rect2.contains(pnt1)))
101+
assert rect2.contains(pnt1), myMessage
102+
103+
myMessage = ('Expected: %s\nGot: %s\n' %
104+
(True, rect3.contains(pnt1)))
105+
assert rect3.contains(pnt1), myMessage
106+
107+
myMessage = ('Expected: %s\nGot: %s\n' %
108+
(False, rect1.contains(pnt2)))
109+
assert rect1.contains(pnt2), myMessage
110+
111+
myMessage = ('Expected: %s\nGot: %s\n' %
112+
(True, rect2.contains(pnt2)))
113+
assert rect2.contains(pnt2), myMessage
114+
115+
myMessage = ('Expected: %s\nGot: %s\n' %
116+
(True, rect3.contains(pnt2)))
117+
assert rect3.contains(pnt2), myMessage
118+
119+
def testUnion(self):
120+
rect1 = QgsRectangle( 0.0, 0.0, 5.0, 5.0)
121+
rect2 = QgsRectangle( 2.0, 2.0, 7.0, 7.0)
122+
pnt1 = QgsPoint(6.0, 2.0)
123+
124+
rect1.combineExtentWith(rect2)
125+
myMessage = ('Expected: %s\nGot: %s\n' %
126+
(True, rect1.contains(rect2)))
127+
assert rect1.contains(rect2), myMessage
128+
129+
print rect1.toString()
130+
assert rect1 == QgsRectangle(0.0, 0.0, 7.0, 7.0), "Wrong combine with rectangle result"
131+
132+
rect1 = QgsRectangle( 0.0, 0.0, 5.0, 5.0)
133+
rect1.combineExtentWith(6.0, 2.0)
134+
myMessage = ('Expected: %s\nGot: %s\n' %
135+
(True, rect1.contains(pnt1)))
136+
assert rect1.contains(pnt1), myMessage
137+
138+
print rect1.toString()
139+
assert rect1 == QgsRectangle(0.0, 0.0, 6.0, 6.0), "Wrong combine with point result"
140+
141+
rect1 = QgsRectangle( 0.0, 0.0, 5.0, 5.0)
142+
rect1.unionRect(rect2)
143+
myMessage = ('Expected: %s\nGot: %s\n' %
144+
(True, rect1.contains(rect2)))
145+
assert rect1.contains(rect2), myMessage
146+
147+
assert rect1 == QgsRectangle(0.0, 0.0, 7.0, 7.0), "Wrong union result"
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import unittest
2+
3+
from qgis.core import (QGis,
4+
QgsRectangle,
5+
QgsPoint)
6+
7+
from utilities import getQgisTestApp
8+
QGISAPP, CANVAS, IFACE, PARENT = getQgisTestApp()
9+
10+
class TestQgsSpatialIndex(unittest.TestCase):
11+
12+
def testIndex(self):
13+
idx = QgsSpatialIndex()
14+
fid = 0
15+
for y in range(5, 15, 5):
16+
for x in range(5, 25, 5):
17+
ft = QgsFeature()
18+
ft.setFeatureId(fid)
19+
ft.setGeometry(QgsGeometry.fromPoint(QgsPoint(x, y)))
20+
idx.insertFeature(ft)
21+
fid += 1
22+
23+
# intersection test
24+
rect = QgsRectangle(7.0, 3.0, 17.0, 13.0)
25+
fids = idx.intersects(rect)
26+
27+
assert len(fids) == 0, "No intersections"
28+
29+
fids.sort()
30+
myMessage = ('Expected: %s\nGot: %s\n' %
31+
([1, 2, 5, 6], fids))
32+
assert fids == [1, 2, 5, 6], myMessage
33+
34+
# nearest neighbor test
35+
fids = idx.nearestNeighbor(QgsPoint(8.75, 6.25), 3)
36+
assert len(fids) == 0, "No intersections"
37+
38+
fids.sort()
39+
myMessage = ('Expected: %s\nGot: %s\n' %
40+
([0, 1, 5], fids))
41+
assert fids == [0, 1, 5], myMessage

0 commit comments

Comments
 (0)
Please sign in to comment.