def setUp(self): self.bucketFill = BucketFill(IFACE) self.bucketFill.initActions()
class BucketFillTest(unittest.TestCase): """ BucketFill Test Suite. """ def setUp(self): self.bucketFill = BucketFill(IFACE) self.bucketFill.initActions() def tearDown(self): pass def prepareTestCanvas(self): """ Sets parameters for a test CANVAS. """ loadLayers() setCanvasCrs(4326, True) CANVAS.resize(QtCore.QSize(400, 400)) CANVAS.zoomToFullExtent() def testCanvasIsValid(self): """ Check if the plugin has a valid CANVAS. """ myMessage = "Plugin was not initialised with a valid CANVAS." assert self.bucketFill.iface.mapCanvas().width() == 400, myMessage def testEnableBucketTool(self): """ Check that enabling the bucket tool works. """ self.bucketFill.enableBucketTool() myMessage = 'Unable to enable the bucketfill map tool' assert self.bucketFill.bucketFillAction.isEnabled(), myMessage def testSetColorForClass(self): """ Test that clicking the CANVAS sets the current class color if the layer is a vector layer. """ self.prepareTestCanvas() #self.bucketFill.setColorForClass( # QPoint(50, 15), QtCore.Qt.LeftButton) myColor = QColor(CANVAS.canvasPixmap().toImage().pixel(50, 15)) # Just for if you want to see what it has rendered CANVAS.saveAsImage('test.png') # expected R: 182 G: 109 B: 194 myExpectedColor = QColor(182, 109, 194) myMessage = (('Unexpected color\n Received R: %i G: %i B: %i ' '\n Expected: R: %i G: %i B: %i') % (myColor.red(), myColor.green(), myColor.blue(), myExpectedColor.red(), myExpectedColor.green(), myExpectedColor.blue())) assert myColor == myExpectedColor, myMessage def testQGISEnvironment(self): """ QGIS environment has the expected providers. """ r = QgsProviderRegistry.instance() #for item in r.providerList(): # print str(item) print 'Provider count: %s' % len(r.providerList()) assert 'gdal' in r.providerList() assert 'ogr' in r.providerList() def testGetActiveVectorLayer(self): """ Tests that the active layer is a vector. """ #check when no layers are loaded that an exception is thrown myExceptionFlag = False myLayer = None try: myLayer = self.bucketFill.getActiveVectorLayer() except: #good we expect an error! myExceptionFlag = True myMessage = ('Expected an exception to be raised when no layer' 'is present, but none was received.') assert myExceptionFlag == True, myMessage # Now test that when a layer is loaded that we get # the expected response loadLayers() CANVAS.zoomToFullExtent() try: myLayer = self.bucketFill.getActiveVectorLayer() except: myErrorMessage = 'Layer could not be identified as a vector.' assert myLayer.isValid(), myErrorMessage def testGetStyleClassList(self): """ Tests that a list of classes is received. """ loadLayers() myLayer = self.bucketFill.getActiveVectorLayer() myList = self.bucketFill.getStyleClassList(myLayer) myMessage = 'Style list for layer is empty.' assert len(myList) > 0, myMessage def testGetClickBbox(self): """ Tests that a click returns a small bbox. """ # pixel coords for fake click self.prepareTestCanvas() myPoint = QgsPoint(50, 15) myBox = self.bucketFill.getClickBbox(myPoint) myExpectedBox = QgsRectangle(49.99850465, 14.99850465, 50.00149535, 15.00149535) myMessage = ('Bounding box was incorrect. Received values %s' ' Expected values %s' % ( str('%s, %s, %s, %s' % ( myBox.xMinimum(), myBox.yMinimum(), myBox.xMaximum(), myBox.yMaximum() )), str('%s, %s, %s, %s' % ( myExpectedBox.xMinimum(), myExpectedBox.yMinimum(), myExpectedBox.xMaximum(), myExpectedBox.yMaximum() )) )) assert (round(myBox.xMinimum(), 9) == round(myExpectedBox.xMinimum(), 9) and round(myBox.xMaximum(), 9) == round(myExpectedBox.xMaximum(), 9) and round(myBox.yMinimum(), 9) == round(myExpectedBox.yMinimum(), 9) and round(myBox.yMaximum(), 9) == round(myExpectedBox.yMaximum(), 9)), myMessage def testGetFirstFeature(self): """ Tests that a feature is returned. """ self.prepareTestCanvas() myLayer = self.bucketFill.getActiveVectorLayer() myTestBox = QgsRectangle(TEST_BOX[0], TEST_BOX[1], TEST_BOX[2], TEST_BOX[3]) myFeatureCount = myLayer.featureCount() if myFeatureCount > 0: myFeature = self.bucketFill.getFirstFeature(myLayer, myTestBox) print myFeature myMessage = ('Returned object was not a feature.') assert myFeature.type() == QgsFeature, myMessage else: myMessage = ('No features found in layer.') assert 1 == 0, myMessage
class BucketFillTest(unittest.TestCase): """ BucketFill Test Suite. """ def setUp(self): self.bucketFill = BucketFill(IFACE) self.bucketFill.initActions() def tearDown(self): pass def prepareTestCanvas(self): """ Sets parameters for a test CANVAS. """ loadLayers() setCanvasCrs(4326, True) CANVAS.resize(QtCore.QSize(400, 400)) CANVAS.zoomToFullExtent() def testCanvasIsValid(self): """ Check if the plugin has a valid CANVAS. """ myMessage = "Plugin was not initialised with a valid CANVAS." assert self.bucketFill.iface.mapCanvas().width() == 400, myMessage def testEnableBucketTool(self): """ Check that enabling the bucket tool works. """ self.bucketFill.enableBucketTool() myMessage = 'Unable to enable the bucketfill map tool' assert self.bucketFill.bucketFillAction.isEnabled(), myMessage def testSetColorForClass(self): """ Test that clicking the CANVAS sets the current class color if the layer is a vector layer. """ self.prepareTestCanvas() #self.bucketFill.setColorForClass( # QPoint(50, 15), QtCore.Qt.LeftButton) myColor = QColor(CANVAS.canvasPixmap().toImage().pixel(50, 15)) # Just for if you want to see what it has rendered CANVAS.saveAsImage('test.png') # expected R: 182 G: 109 B: 194 myExpectedColor = QColor(182, 109, 194) myMessage = (('Unexpected color\n Received R: %i G: %i B: %i ' '\n Expected: R: %i G: %i B: %i') % (myColor.red(), myColor.green(), myColor.blue(), myExpectedColor.red(), myExpectedColor.green(), myExpectedColor.blue())) assert myColor == myExpectedColor, myMessage def testQGISEnvironment(self): """ QGIS environment has the expected providers. """ r = QgsProviderRegistry.instance() #for item in r.providerList(): # print str(item) print 'Provider count: %s' % len(r.providerList()) assert 'gdal' in r.providerList() assert 'ogr' in r.providerList() def testGetActiveVectorLayer(self): """ Tests that the active layer is a vector. """ #check when no layers are loaded that an exception is thrown myExceptionFlag = False myLayer = None try: myLayer = self.bucketFill.getActiveVectorLayer() except: #good we expect an error! myExceptionFlag = True myMessage = ('Expected an exception to be raised when no layer' 'is present, but none was received.') assert myExceptionFlag == True, myMessage # Now test that when a layer is loaded that we get # the expected response loadLayers() CANVAS.zoomToFullExtent() try: myLayer = self.bucketFill.getActiveVectorLayer() except: myErrorMessage = 'Layer could not be identified as a vector.' assert myLayer.isValid(), myErrorMessage def testGetStyleClassList(self): """ Tests that a list of classes is received. """ loadLayers() myLayer = self.bucketFill.getActiveVectorLayer() myList = self.bucketFill.getStyleClassList(myLayer) myMessage = 'Style list for layer is empty.' assert len(myList) > 0, myMessage def testGetClickBbox(self): """ Tests that a click returns a small bbox. """ # pixel coords for fake click self.prepareTestCanvas() myPoint = QgsPoint(50, 15) myBox = self.bucketFill.getClickBbox(myPoint) myExpectedBox = QgsRectangle(49.99850465, 14.99850465, 50.00149535, 15.00149535) myMessage = ( 'Bounding box was incorrect. Received values %s' ' Expected values %s' % (str('%s, %s, %s, %s' % (myBox.xMinimum(), myBox.yMinimum(), myBox.xMaximum(), myBox.yMaximum())), str('%s, %s, %s, %s' % (myExpectedBox.xMinimum(), myExpectedBox.yMinimum(), myExpectedBox.xMaximum(), myExpectedBox.yMaximum())))) assert (round(myBox.xMinimum(), 9) == round( myExpectedBox.xMinimum(), 9) and round(myBox.xMaximum(), 9) == round(myExpectedBox.xMaximum(), 9) and round( myBox.yMinimum(), 9) == round(myExpectedBox.yMinimum(), 9) and round(myBox.yMaximum(), 9) == round( myExpectedBox.yMaximum(), 9)), myMessage def testGetFirstFeature(self): """ Tests that a feature is returned. """ self.prepareTestCanvas() myLayer = self.bucketFill.getActiveVectorLayer() myTestBox = QgsRectangle(TEST_BOX[0], TEST_BOX[1], TEST_BOX[2], TEST_BOX[3]) myFeatureCount = myLayer.featureCount() if myFeatureCount > 0: myFeature = self.bucketFill.getFirstFeature(myLayer, myTestBox) print myFeature myMessage = ('Returned object was not a feature.') assert myFeature.type() == QgsFeature, myMessage else: myMessage = ('No features found in layer.') assert 1 == 0, myMessage