|
| 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" |
0 commit comments