From 371869308383b41bac5db5de9b129b4d613dd155 Mon Sep 17 00:00:00 2001 From: Jonas Mucke Date: Tue, 14 Jan 2020 21:49:14 +0100 Subject: [PATCH] nearly all tests but without benchmark --- src/Image/IntelliImage.cpp | 27 +- src/Layer/PaintingArea.cpp | 12 +- src/Layer/PaintingArea.h | 2 +- src/Tool/IntelliToolFloodFill.cpp | 17 +- src/tst_unittest.cpp | 979 +++++++++++++++++++++++++++--- 5 files changed, 947 insertions(+), 90 deletions(-) diff --git a/src/Image/IntelliImage.cpp b/src/Image/IntelliImage.cpp index 0fa97b2..042e01f 100644 --- a/src/Image/IntelliImage.cpp +++ b/src/Image/IntelliImage.cpp @@ -59,13 +59,16 @@ void IntelliImage::drawPixel(const QPoint &p1, const QColor& color){ this->imageData = this->imageData.convertToFormat(QImage::Format_ARGB32); } // Used to draw on the widget - QPainter painter(&imageData); + QPainter* painter = new QPainter(&imageData); // Set the current settings for the pen - painter.setPen(QPen(color, 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); + painter->setPen(QPen(color, 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); // Draw a line from the last registered point to the current - painter.drawPoint(p1); + painter->drawPoint(p1); + delete painter; + painter = nullptr; + if(fastRenderering){ this->imageData = this->imageData.convertToFormat(QImage::Format_Indexed8); } @@ -76,12 +79,15 @@ void IntelliImage::drawPoint(const QPoint &p1, const QColor& color, const int& p this->imageData = this->imageData.convertToFormat(QImage::Format_ARGB32); } // Used to draw on the widget - QPainter painter(&imageData); + QPainter* painter = new QPainter(&imageData); // Set the current settings for the pen - painter.setPen(QPen(color, penWidth, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); + painter->setPen(QPen(color, penWidth, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); // Draw a line from the last registered point to the current - painter.drawPoint(p1); + painter->drawPoint(p1); + delete painter; + + painter = nullptr; if(fastRenderering){ this->imageData = this->imageData.convertToFormat(QImage::Format_Indexed8); } @@ -92,13 +98,16 @@ void IntelliImage::drawLine(const QPoint &p1, const QPoint& p2, const QColor& co this->imageData = this->imageData.convertToFormat(QImage::Format_ARGB32); } // Used to draw on the widget - QPainter painter(&imageData); + QPainter* painter = new QPainter(&imageData); // Set the current settings for the pen - painter.setPen(QPen(color, penWidth, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); + painter->setPen(QPen(color, penWidth, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); // Draw a line from the last registered point to the current - painter.drawLine(p1, p2); + painter->drawLine(p1, p2); + delete painter; + painter = nullptr; + if(fastRenderering){ this->imageData = this->imageData.convertToFormat(QImage::Format_Indexed8); } diff --git a/src/Layer/PaintingArea.cpp b/src/Layer/PaintingArea.cpp index e2df40d..224cf80 100644 --- a/src/Layer/PaintingArea.cpp +++ b/src/Layer/PaintingArea.cpp @@ -67,7 +67,7 @@ int PaintingArea::addLayer(int width, int height, int widthOffset, int heightOff void PaintingArea::deleteLayer(int idx){ - if(idx(layerBundle.size())) { + if(idx < static_cast(layerBundle.size())&&idx>=0) { this->layerBundle.erase(layerBundle.begin()+idx); if(activeLayer>=idx) { activeLayer--; @@ -93,7 +93,9 @@ void PaintingArea::setLayerActive(int idx){ void PaintingArea::setLayerAlpha(int idx, int alpha){ if(idx>=0&&idx(layerBundle.size())) { - layerBundle[static_cast(idx)].alpha=alpha; + if(alpha>=0 && alpha<=255) { + layerBundle[static_cast(idx)].alpha=alpha; + } } } @@ -138,6 +140,12 @@ void PaintingArea::floodFill(int r, int g, int b, int a){ if(this->activeLayer==-1) { return; } + if(r >255 || g>255|| b>255 || a>255){ + return; + } + if(r < 0 || g < 0|| b < 0 || a < 0){ + return; + } IntelliImage* active = layerBundle[static_cast(activeLayer)].image; active->drawPlain(QColor(r, g, b, a)); update(); diff --git a/src/Layer/PaintingArea.h b/src/Layer/PaintingArea.h index 666a6a7..72c6b59 100644 --- a/src/Layer/PaintingArea.h +++ b/src/Layer/PaintingArea.h @@ -135,7 +135,7 @@ public: void movePositionActive(int x, int y); /*! * \brief The moveActiveLayer moves the active layer to a specific position in the layer stack - * \param idx - The index of the new position the layer should be in + * \param idx - The direction the layer should move */ void moveActiveLayer(int idx); diff --git a/src/Tool/IntelliToolFloodFill.cpp b/src/Tool/IntelliToolFloodFill.cpp index cb135f8..b4d49c2 100644 --- a/src/Tool/IntelliToolFloodFill.cpp +++ b/src/Tool/IntelliToolFloodFill.cpp @@ -25,7 +25,7 @@ void IntelliToolFloodFill::onMouseRightReleased(int x, int y){ void IntelliToolFloodFill::onMouseLeftPressed(int x, int y){ if(!(x>=0 && xgetWidthOfActive() && y>=0 && ygetHeightOfActive())) { return; - } + } IntelliTool::onMouseLeftPressed(x,y); QPoint start(x,y); @@ -33,7 +33,10 @@ void IntelliToolFloodFill::onMouseLeftPressed(int x, int y){ Q.push(start); QColor oldColor = this->activeLayer->image->getPixelColor(start); - QColor newColor = this->colorPicker->getFirstColor(); + QColor newColor = this->colorPicker->getFirstColor(); + if(newColor == oldColor){ + return; + } Canvas->image->drawPixel(start,newColor); QPoint left, right, top, down; @@ -45,20 +48,20 @@ void IntelliToolFloodFill::onMouseLeftPressed(int x, int y){ right = QPoint(Current.x()+1,Current.y() ); top = QPoint(Current.x(),Current.y()-1); down = QPoint(Current.x(),Current.y()+1); - if((right.x() < Canvas->width) && (Canvas->image->getPixelColor(right) != newColor) && (activeLayer->image->getPixelColor(right) == oldColor)) { + if((right.x() < Canvas->width) && (Canvas->image->getPixelColor(right) != newColor) && (activeLayer->image->getPixelColor(right) == oldColor)) { Canvas->image->drawPixel(right,newColor); Q.push(right); } - if((left.x() >= 0) && (Canvas->image->getPixelColor(left) != newColor) && (activeLayer->image->getPixelColor(left) == oldColor)) { + if((left.x() >= 0) && (Canvas->image->getPixelColor(left) != newColor) && (activeLayer->image->getPixelColor(left) == oldColor)) { Canvas->image->drawPixel(left,newColor); Q.push(left); } - if((top.y() >= 0) && (Canvas->image->getPixelColor(top) != newColor) && (activeLayer->image->getPixelColor(top) == oldColor)) { + if((top.y() >= 0) && (Canvas->image->getPixelColor(top) != newColor) && (activeLayer->image->getPixelColor(top) == oldColor)) { Canvas->image->drawPixel(top,newColor); Q.push(top); } - if((down.y() < Canvas->height) && (Canvas->image->getPixelColor(down) != newColor) && (activeLayer->image->getPixelColor(down) == oldColor)) { - Canvas->image->drawPixel(down,newColor); + if((down.y() < Canvas->height) && (Canvas->image->getPixelColor(down) != newColor) && (activeLayer->image->getPixelColor(down) == oldColor)) { + Canvas->image->drawPixel(down,newColor); Q.push(down); } } diff --git a/src/tst_unittest.cpp b/src/tst_unittest.cpp index e320994..dd3bc01 100644 --- a/src/tst_unittest.cpp +++ b/src/tst_unittest.cpp @@ -2,6 +2,22 @@ #include // add necessary includes here #include "GUI/IntelliPhotoGui.h" +#include "Image/IntelliImage.h" +#include "Image/IntelliRasterImage.h" +#include "Image/IntelliShapedImage.h" +#include "IntelliHelper/IntelliColorPicker.h" +#include "IntelliHelper/IntelliRenderSettings.h" +#include "IntelliHelper/IntelliToolsettings.h" +#include "IntelliHelper/IntelliTriangulation.h" +#include "Layer/PaintingArea.h" +#include "Tool/IntelliTool.h" +#include "Tool/IntelliToolCircle.h" +#include "Tool/IntelliToolFloodFill.h" +#include "Tool/IntelliToolLine.h" +#include "Tool/IntelliToolPen.h" +#include "Tool/IntelliToolPlain.h" +#include "Tool/IntelliToolPolygon.h" +#include "Tool/IntelliToolRectangle.h" class UnitTest : public QObject { @@ -37,8 +53,6 @@ private slots: void test_RasterImage_drawLine(); void test_RasterImage_drawPoint(); void test_RasterImage_getDisplayable(); - void test_RasterImage_setPolygon(); - void test_RasterImage_loadImage(); void test_RasterImage_getPixelColor(); void test_RasterImage_getImageData(); void test_RasterImage_setImageData(); @@ -48,21 +62,10 @@ private slots: void test_ShapedImage_drawLine(); void test_ShapedImage_drawPoint(); void test_ShapedImage_getDisplayable(); - void test_ShapedImage_setPolygon(); - void test_ShapedImage_loadImage(); void test_ShapedImage_getPixelColor(); void test_ShapedImage_getImageData(); void test_ShapedImage_setImageData(); - //test painting-area tools - void test_createTool_Circle(); - void test_createTool_FloodFill(); - void test_createTool_Line(); - void test_createTool_Pen(); - void test_createTool_Plain(); - void test_createTool_Polygon(); - void test_createTool_Rectangle(); - //test tools void test_Circle_fullDraw(); void test_Circle_interruptedDraw(); @@ -110,81 +113,915 @@ void UnitTest::cleanupTestCase() delete gui; } -//void UnitTest::test_case1() -//{ -// QBENCHMARK { -// QVERIFY(1 == 1); -// } -//} - //test painting area -void UnitTest::test_addLayer(){} -void UnitTest::test_deleteLayer(){} -void UnitTest::test_setActive(){} -void UnitTest::test_setAlpha(){} -void UnitTest::test_floodFill(){} -void UnitTest::test_moveActive(){} -void UnitTest::test_setPolygon(){} -void UnitTest::test_setLayerUp(){} -void UnitTest::test_setLayerDown(){} +void UnitTest::test_addLayer(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::SHAPEDIMAGE); -void UnitTest::test_createTools(){} + QCOMPARE(area->layerBundle.size(), 1); + QCOMPARE(area->activeLayer, 0); + + QCOMPARE(area->layerBundle[static_cast(area->activeLayer)].width, 200); + QCOMPARE(area->layerBundle[static_cast(area->activeLayer)].widthOffset, 10); + + QCOMPARE(area->layerBundle[static_cast(area->activeLayer)].height, 400); + QCOMPARE(area->layerBundle[static_cast(area->activeLayer)].heightOffset, 20); + + area->deleteLayer(0); +} + +void UnitTest::test_deleteLayer(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::SHAPEDIMAGE); + area->addLayer(200,400,10,20,IntelliImage::ImageType::SHAPEDIMAGE); + + area->deleteLayer(3); + QCOMPARE(area->layerBundle.size(), 2); + QCOMPARE(area->activeLayer, 1); + + area->deleteLayer(-1); + QCOMPARE(area->layerBundle.size(), 2); + QCOMPARE(area->activeLayer, 1); + + area->deleteLayer(1); + QCOMPARE(area->layerBundle.size(), 1); + QCOMPARE(area->activeLayer, 0); + + area->deleteLayer(0); + QCOMPARE(area->layerBundle.size(), 0); + QCOMPARE(area->activeLayer, -1); + +} + +void UnitTest::test_setActive(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::SHAPEDIMAGE); + area->addLayer(200,400,10,20,IntelliImage::ImageType::SHAPEDIMAGE); + + area->setLayerActive(0); + QCOMPARE(area->activeLayer, 0); + area->setLayerActive(1); + QCOMPARE(area->activeLayer, 1); + area->setLayerActive(-1); + QCOMPARE(area->activeLayer, 1); + area->setLayerActive(3); + QCOMPARE(area->activeLayer, 1); + + area->deleteLayer(0); + area->deleteLayer(0); +} + +void UnitTest::test_setAlpha(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::SHAPEDIMAGE); + area->addLayer(200,400,10,20,IntelliImage::ImageType::SHAPEDIMAGE); + + area->setLayerAlpha(0,0); + QCOMPARE(area->layerBundle[0].alpha, 0); + + area->setLayerAlpha(0,255); + QCOMPARE(area->layerBundle[0].alpha, 255); + + area->setLayerAlpha(1,123); + QCOMPARE(area->layerBundle[1].alpha, 123); + + area->setLayerAlpha(1,-12); + QCOMPARE(area->layerBundle[1].alpha, 123); + + area->setLayerAlpha(1,300); + QCOMPARE(area->layerBundle[1].alpha, 123); + + area->deleteLayer(1); + area->deleteLayer(0); +} + +void UnitTest::test_floodFill(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::SHAPEDIMAGE); + + area->floodFill(255,255,255,255); + QPoint point; + for(size_t i = 0; i<200; i++){ + point.setX(static_cast(i)); + for(size_t j = 0; i<400; i++){ + point.setY(static_cast(j)); + QVERIFY(area->layerBundle[static_cast(area->activeLayer)].image->getPixelColor(point)==QColor(255,255,255,255)); + } + } + + area->floodFill(0,0,0,0); + for(size_t i = 0; i<200; i++){ + point.setX(static_cast(i)); + for(size_t j = 0; i<400; i++){ + point.setY(static_cast(j)); + QVERIFY(area->layerBundle[static_cast(area->activeLayer)].image->getPixelColor(point)==QColor(0,0,0,0)); + } + } + + area->floodFill(-1,-1,-1,-1); + for(size_t i = 0; i<200; i++){ + point.setX(static_cast(i)); + for(size_t j = 0; i<400; i++){ + point.setY(static_cast(j)); + QVERIFY(area->layerBundle[static_cast(area->activeLayer)].image->getPixelColor(point)==QColor(0,0,0,0)); + } + } + + area->floodFill(256,256,256,256); + for(size_t i = 0; i<200; i++){ + point.setX(static_cast(i)); + for(size_t j = 0; i<400; i++){ + point.setY(static_cast(j)); + QVERIFY(area->layerBundle[static_cast(area->activeLayer)].image->getPixelColor(point)==QColor(0,0,0,0)); + } + } + + area->deleteLayer(0); +} + +void UnitTest::test_moveActive(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::SHAPEDIMAGE); + area->addLayer(200,400,10,20,IntelliImage::ImageType::SHAPEDIMAGE); + + area->floodFill(0,0,0,255); + QPoint point(0,0); + + area->moveActiveLayer(-1); + QCOMPARE(area->activeLayer, 0); + QVERIFY(area->layerBundle[static_cast(area->activeLayer)].image->getPixelColor(point)==QColor(0,0,0,255)); + + area->moveActiveLayer(-1); + QCOMPARE(area->activeLayer, 0); + QVERIFY(area->layerBundle[static_cast(area->activeLayer)].image->getPixelColor(point)==QColor(0,0,0,255)); + + area->moveActiveLayer(1); + QCOMPARE(area->activeLayer, 1); + QVERIFY(area->layerBundle[static_cast(area->activeLayer)].image->getPixelColor(point)==QColor(0,0,0,255)); + + area->moveActiveLayer(1); + QCOMPARE(area->activeLayer, 1); + QVERIFY(area->layerBundle[static_cast(area->activeLayer)].image->getPixelColor(point)==QColor(0,0,0,255)); + + area->deleteLayer(1); + area->deleteLayer(0); +} + +void UnitTest::test_setPolygon(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::RASTERIMAGE); + area->addLayer(200,400,10,20,IntelliImage::ImageType::SHAPEDIMAGE); + + std::vector polygon{ + QPoint(10,00), + QPoint(00,10), + QPoint(10,10), + QPoint(00,10) + }; + + area->layerBundle[1].image->setPolygon(polygon); + IntelliShapedImage* image = dynamic_cast(area->layerBundle[1].image); + QCOMPARE(image->polygonData[0], polygon[0]); + QCOMPARE(image->polygonData[1], polygon[1]); + QCOMPARE(image->polygonData[2], polygon[2]); + QCOMPARE(image->polygonData[3], polygon[3]); + + area->deleteLayer(1); + area->deleteLayer(0); +} + +void UnitTest::test_setLayerUp(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::RASTERIMAGE); + area->addLayer(200,400,10,20,IntelliImage::ImageType::SHAPEDIMAGE); + + area->selectLayerUp(); + QCOMPARE(area->activeLayer, 1); + + area->setLayerActive(0); + QCOMPARE(area->activeLayer, 0); + + area->selectLayerUp(); + QCOMPARE(area->activeLayer, 1); + + area->deleteLayer(1); + area->deleteLayer(0); +} + +void UnitTest::test_setLayerDown(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::RASTERIMAGE); + area->addLayer(200,400,10,20,IntelliImage::ImageType::SHAPEDIMAGE); + + area->selectLayerDown(); + QCOMPARE(area->activeLayer, 0); + + area->selectLayerDown(); + QCOMPARE(area->activeLayer, 0); + + area->deleteLayer(1); + area->deleteLayer(0); + +} + +void UnitTest::test_createTools(){ + QVERIFY(area->Tool == nullptr); + + area->createPenTool(); + QVERIFY(dynamic_cast(area->Tool) != nullptr); + + area->createLineTool(); + QVERIFY(dynamic_cast(area->Tool) != nullptr); + + area->createPlainTool(); + QVERIFY(dynamic_cast(area->Tool) != nullptr); + + area->createCircleTool(); + QVERIFY(dynamic_cast(area->Tool) != nullptr); + + area->createPolygonTool(); + QVERIFY(dynamic_cast(area->Tool) != nullptr); + + area->createFloodFillTool(); + QVERIFY(dynamic_cast(area->Tool) != nullptr); + + area->createRectangleTool(); + QVERIFY(dynamic_cast(area->Tool) != nullptr); +} //test Raster-Image operations -void UnitTest::test_RasterImage_drawPixel(){} -void UnitTest::test_RasterImage_drawLine(){} -void UnitTest::test_RasterImage_drawPoint(){} -void UnitTest::test_RasterImage_getDisplayable(){} -void UnitTest::test_RasterImage_setPolygon(){} -void UnitTest::test_RasterImage_loadImage(){} -void UnitTest::test_RasterImage_getPixelColor(){} -void UnitTest::test_RasterImage_getImageData(){} -void UnitTest::test_RasterImage_setImageData(){} +void UnitTest::test_RasterImage_drawPixel(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::RASTERIMAGE); + + QPoint point(0,0); + + area->floodFill(255,255,255,255); + area->layerBundle[0].image->drawPixel(point, QColor(0,0,0,255)); + + QVERIFY(area->layerBundle[0].image->getPixelColor(point) == QColor(0,0,0,255)); + + area->deleteLayer(0); +} + +void UnitTest::test_RasterImage_drawLine(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::RASTERIMAGE); + + QPoint point1(0,0); + QPoint point2(10,10); + QPoint point3(5,5); + QPoint point4(6,5); + + area->floodFill(255,255,255,255); + area->layerBundle[0].image->drawLine(point1, point2, QColor(0,0,0,255),1); + QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==QColor(0,0,0,255)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==QColor(0,0,0,255)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point3)==QColor(0,0,0,255)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point4)==QColor(255,255,255,255)); + + area->floodFill(255,255,255,255); + area->layerBundle[0].image->drawLine(point1, point2, QColor(0,0,0,255),3); + QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==QColor(0,0,0,255)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==QColor(0,0,0,255)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point3)==QColor(0,0,0,255)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point4)==QColor(0,0,0,255)); + + area->deleteLayer(0); +} + +void UnitTest::test_RasterImage_drawPoint(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::RASTERIMAGE); + + QPoint point1(5,5); + QPoint point2(5,6); + + area->floodFill(255,255,255,255); + area->layerBundle[0].image->drawPoint(point1, QColor(0,0,0,255),1); + QVERIFY(area->layerBundle[0].image->getPixelColor(point1) == QColor(0,0,0,255)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point2) == QColor(255,255,255,255)); + + + area->floodFill(255,255,255,255); + area->layerBundle[0].image->drawPoint(point1, QColor(0,0,0,255),5); + QVERIFY(area->layerBundle[0].image->getPixelColor(point1) == QColor(0,0,0,255)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point2) == QColor(0,0,0,255)); + + area->deleteLayer(0); +} + +void UnitTest::test_RasterImage_getDisplayable(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::RASTERIMAGE); + + area->floodFill(255,255,255,255); + QImage img = area->layerBundle[0].image->getDisplayable(QSize(200,400),255); + QPoint point; + for(size_t i=0; i<200; i++){ + point.setX(static_cast(i)); + for(size_t j=0; j<400; j++){ + point.setY(static_cast(j)); + QVERIFY(img.pixelColor(point) == QColor(255,255,255,255)); + } + } + + area->deleteLayer(0); +} + +void UnitTest::test_RasterImage_getPixelColor(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::RASTERIMAGE); + + QPoint point(0,0); + area->floodFill(0,0,0,255); + QVERIFY(area->layerBundle[0].image->getPixelColor(point)==QColor(0,0,0,255)); + + area->deleteLayer(0); +} + +void UnitTest::test_RasterImage_getImageData(){ + area->addLayer(2,2,10,20,IntelliImage::ImageType::RASTERIMAGE); + + QImage img(2,2, QImage::Format_ARGB32); + img.setPixelColor(0,0, Qt::red); + img.setPixelColor(0,1, Qt::yellow); + img.setPixelColor(1,0, Qt::blue); + img.setPixelColor(1,1, Qt::green); + + area->layerBundle[0].image->setImageData(img); + img = img.convertToFormat(QImage::Format_Indexed8); + QImage cpy = area->layerBundle[0].image->getImageData(); + + QPoint point1(0,0); + QPoint point2(0,1); + QPoint point3(1,0); + QPoint point4(1,1); + QVERIFY(cpy.pixelColor(point1) == img.pixelColor(point1)); + QVERIFY(cpy.pixelColor(point2) == img.pixelColor(point2)); + QVERIFY(cpy.pixelColor(point3) == img.pixelColor(point3)); + QVERIFY(cpy.pixelColor(point4) == img.pixelColor(point4)); + + area->deleteLayer(0); +} + +void UnitTest::test_RasterImage_setImageData(){ + area->addLayer(2,2,10,20,IntelliImage::ImageType::RASTERIMAGE); + + QImage img(2,2, QImage::Format_ARGB32); + img.setPixelColor(0,0, Qt::red); + img.setPixelColor(0,1, Qt::yellow); + img.setPixelColor(1,0, Qt::blue); + img.setPixelColor(1,1, Qt::green); + + area->layerBundle[0].image->setImageData(img); + img = img.convertToFormat(QImage::Format_Indexed8); + + QPoint point1(0,0); + QPoint point2(0,1); + QPoint point3(1,0); + QPoint point4(1,1); + QVERIFY(area->layerBundle[0].image->getPixelColor(point1) == img.pixelColor(point1)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point2) == img.pixelColor(point2)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point3) == img.pixelColor(point3)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point4) == img.pixelColor(point4)); + + area->deleteLayer(0); +} //test Shaped-Image operations -void UnitTest::test_ShapedImage_drawPixel(){} -void UnitTest::test_ShapedImage_drawLine(){} -void UnitTest::test_ShapedImage_drawPoint(){} -void UnitTest::test_ShapedImage_getDisplayable(){} -void UnitTest::test_ShapedImage_setPolygon(){} -void UnitTest::test_ShapedImage_loadImage(){} -void UnitTest::test_ShapedImage_getPixelColor(){} -void UnitTest::test_ShapedImage_getImageData(){} -void UnitTest::test_ShapedImage_setImageData(){} +void UnitTest::test_ShapedImage_drawPixel(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::RASTERIMAGE); -//test painting-area tools -void UnitTest::test_createTool_Circle(){} -void UnitTest::test_createTool_FloodFill(){} -void UnitTest::test_createTool_Line(){} -void UnitTest::test_createTool_Pen(){} -void UnitTest::test_createTool_Plain(){} -void UnitTest::test_createTool_Polygon(){} -void UnitTest::test_createTool_Rectangle(){} + QPoint point(0,0); + + area->floodFill(255,255,255,255); + area->layerBundle[0].image->drawPixel(point, QColor(0,0,0,255)); + + QVERIFY(area->layerBundle[0].image->getPixelColor(point) == QColor(0,0,0,255)); + + area->deleteLayer(0); +} + +void UnitTest::test_ShapedImage_drawLine(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::RASTERIMAGE); + + QPoint point1(0,0); + QPoint point2(10,10); + QPoint point3(5,5); + QPoint point4(6,5); + + area->floodFill(255,255,255,255); + area->layerBundle[0].image->drawLine(point1, point2, QColor(0,0,0,255),1); + QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==QColor(0,0,0,255)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==QColor(0,0,0,255)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point3)==QColor(0,0,0,255)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point4)==QColor(255,255,255,255)); + + area->floodFill(255,255,255,255); + area->layerBundle[0].image->drawLine(point1, point2, QColor(0,0,0,255),3); + QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==QColor(0,0,0,255)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==QColor(0,0,0,255)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point3)==QColor(0,0,0,255)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point4)==QColor(0,0,0,255)); + + area->deleteLayer(0); +} + +void UnitTest::test_ShapedImage_drawPoint(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::RASTERIMAGE); + + QPoint point1(5,5); + QPoint point2(5,6); + + area->floodFill(255,255,255,255); + area->layerBundle[0].image->drawPoint(point1, QColor(0,0,0,255),1); + QVERIFY(area->layerBundle[0].image->getPixelColor(point1) == QColor(0,0,0,255)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point2) == QColor(255,255,255,255)); + + + area->floodFill(255,255,255,255); + area->layerBundle[0].image->drawPoint(point1, QColor(0,0,0,255),5); + QVERIFY(area->layerBundle[0].image->getPixelColor(point1) == QColor(0,0,0,255)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point2) == QColor(0,0,0,255)); + + area->deleteLayer(0); +} + +void UnitTest::test_ShapedImage_getDisplayable(){ + area->addLayer(21,21,10,20,IntelliImage::ImageType::SHAPEDIMAGE); + std::vector points{ + QPoint(10,00), + QPoint(00,10), + QPoint(10,20), + QPoint(20,10) + }; + + std::vector test{ + QPoint(00,00), + QPoint(00,20), + QPoint(20,00), + QPoint(20,20), + QPoint(10,10) + }; + area->floodFill(255,255,255,255); + area->layerBundle[0].image->setPolygon(points); + QSize size(21,21); + QImage img = area->layerBundle[0].image->getDisplayable(size,255); + + QCOMPARE(img.pixelColor(points[0]).alpha(), 255); + QCOMPARE(img.pixelColor(points[1]).alpha(), 255); + QCOMPARE(img.pixelColor(points[2]).alpha(), 255); + QCOMPARE(img.pixelColor(points[3]).alpha(), 255); + + QCOMPARE(img.pixelColor(test[4]).alpha(), 255); + QCOMPARE(img.pixelColor(test[0]).alpha(), 0); + QCOMPARE(img.pixelColor(test[1]).alpha(), 0); + QCOMPARE(img.pixelColor(test[2]).alpha(), 0); + QCOMPARE(img.pixelColor(test[3]).alpha(), 0); + + area->deleteLayer(0); +} + +void UnitTest::test_ShapedImage_getPixelColor(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::RASTERIMAGE); + + QPoint point(0,0); + area->floodFill(0,0,0,255); + QVERIFY(area->layerBundle[0].image->getPixelColor(point)==QColor(0,0,0,255)); + + area->deleteLayer(0); +} + +void UnitTest::test_ShapedImage_getImageData(){ + area->addLayer(2,2,10,20,IntelliImage::ImageType::RASTERIMAGE); + + QImage img(2,2, QImage::Format_ARGB32); + img.setPixelColor(0,0, Qt::red); + img.setPixelColor(0,1, Qt::yellow); + img.setPixelColor(1,0, Qt::blue); + img.setPixelColor(1,1, Qt::green); + + area->layerBundle[0].image->setImageData(img); + img = img.convertToFormat(QImage::Format_Indexed8); + QImage cpy = area->layerBundle[0].image->getImageData(); + + QPoint point1(0,0); + QPoint point2(0,1); + QPoint point3(1,0); + QPoint point4(1,1); + QVERIFY(cpy.pixelColor(point1) == img.pixelColor(point1)); + QVERIFY(cpy.pixelColor(point2) == img.pixelColor(point2)); + QVERIFY(cpy.pixelColor(point3) == img.pixelColor(point3)); + QVERIFY(cpy.pixelColor(point4) == img.pixelColor(point4)); + + area->deleteLayer(0); +} + +void UnitTest::test_ShapedImage_setImageData(){ + area->addLayer(2,2,10,20,IntelliImage::ImageType::RASTERIMAGE); + + QImage img(2,2, QImage::Format_ARGB32); + img.setPixelColor(0,0, Qt::red); + img.setPixelColor(0,1, Qt::yellow); + img.setPixelColor(1,0, Qt::blue); + img.setPixelColor(1,1, Qt::green); + + area->layerBundle[0].image->setImageData(img); + img = img.convertToFormat(QImage::Format_Indexed8); + + QPoint point1(0,0); + QPoint point2(0,1); + QPoint point3(1,0); + QPoint point4(1,1); + QVERIFY(area->layerBundle[0].image->getPixelColor(point1) == img.pixelColor(point1)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point2) == img.pixelColor(point2)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point3) == img.pixelColor(point3)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point4) == img.pixelColor(point4)); + + area->deleteLayer(0); +} //test tools -void UnitTest::test_Circle_fullDraw(){} -void UnitTest::test_Circle_interruptedDraw(){} +void UnitTest::test_Circle_fullDraw(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::RASTERIMAGE); + area->colorPicker.setFirstColor(QColor(255,255,255,255)); + area->colorPicker.setSecondColor(QColor(0,0,0,255)); + area->createCircleTool(); + area->floodFill(255,0,0,255); -void UnitTest::test_FloodFill_fullDraw(){} -void UnitTest::test_FloodFill_interruptedDraw(){} + QPoint point1(100,100); + QPoint point2(150,100); + area->Tool->onMouseLeftPressed(point1.x(), point1.y()); + area->Tool->onMouseMoved(point2.x(), point2.y()); + area->Tool->onMouseLeftReleased(point2.x(), point2.y()); -void UnitTest::test_Line_fullDraw(){} -void UnitTest::test_Line_interruptedDraw(){} -void UnitTest::test_Pen_fullDraw(){} -void UnitTest::test_Pen_interruptedDraw(){} + QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==area->colorPicker.getSecondColor()); + QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==area->colorPicker.getFirstColor()); -void UnitTest::test_Plain_fullDraw(){} -void UnitTest::test_Plain_interruptedDraw(){} + area->deleteLayer(0); +} -void UnitTest::test_Polygon_fullDraw(){} -void UnitTest::test_Polygon_interruptedDraw(){} +void UnitTest::test_Circle_interruptedDraw(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::RASTERIMAGE); + area->colorPicker.setFirstColor(QColor(255,255,255,255)); + area->colorPicker.setSecondColor(QColor(0,0,0,255)); + area->createCircleTool(); + area->floodFill(255,0,0,255); -void UnitTest::test_Rectangle_fullDraw(){} -void UnitTest::test_Rectangle_interruptedDraw(){} + QPoint point1(100,100); + QPoint point2(150,100); + area->Tool->onMouseLeftPressed(point1.x(), point1.y()); + area->Tool->onMouseMoved(point2.x(), point2.y()); + area->Tool->onMouseRightPressed(point2.x(), point2.y()); + area->Tool->onMouseRightReleased(point2.x(),point2.y()); + area->Tool->onMouseLeftReleased(point2.x(), point2.y()); + + + QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==QColor(255,0,0,255)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==QColor(255,0,0,255)); + + area->deleteLayer(0); + +} + +void UnitTest::test_FloodFill_fullDraw(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::RASTERIMAGE); + area->colorPicker.setFirstColor(QColor(255,255,255,255)); + area->colorPicker.setSecondColor(QColor(0,0,0,255)); + area->createFloodFillTool(); + area->floodFill(255,0,0,255); + + QPoint point1(100,100); + QPoint point2(150,100); + area->Tool->onMouseLeftPressed(point1.x(), point1.y()); + area->Tool->onMouseMoved(point2.x(), point2.y()); + area->Tool->onMouseLeftReleased(point2.x(), point2.y()); + + + QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==area->colorPicker.getFirstColor()); + QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==area->colorPicker.getFirstColor()); + + area->deleteLayer(0); +} + +void UnitTest::test_FloodFill_interruptedDraw(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::RASTERIMAGE); + area->colorPicker.setFirstColor(QColor(255,255,255,255)); + area->colorPicker.setSecondColor(QColor(0,0,0,255)); + area->createFloodFillTool(); + area->floodFill(255,0,0,255); + + QPoint point1(100,100); + QPoint point2(150,100); + area->Tool->onMouseLeftPressed(point1.x(), point1.y()); + area->Tool->onMouseMoved(point2.x(), point2.y()); + area->Tool->onMouseRightPressed(point2.x(), point2.y()); + area->Tool->onMouseRightReleased(point2.x(),point2.y()); + area->Tool->onMouseLeftReleased(point2.x(), point2.y()); + + + QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==QColor(255,0,0,255)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==QColor(255,0,0,255)); + + area->deleteLayer(0); +} + +void UnitTest::test_Line_fullDraw(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::RASTERIMAGE); + area->colorPicker.setFirstColor(QColor(255,255,255,255)); + area->colorPicker.setSecondColor(QColor(0,0,0,255)); + area->createLineTool(); + area->floodFill(255,0,0,255); + + QPoint point1(100,100); + QPoint point2(150,100); + area->Tool->onMouseLeftPressed(point1.x(), point1.y()); + area->Tool->onMouseMoved(point2.x(), point2.y()); + area->Tool->onMouseLeftReleased(point2.x(), point2.y()); + + + QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==area->colorPicker.getFirstColor()); + QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==area->colorPicker.getFirstColor()); + + area->deleteLayer(0); +} + +void UnitTest::test_Line_interruptedDraw(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::RASTERIMAGE); + area->colorPicker.setFirstColor(QColor(255,255,255,255)); + area->colorPicker.setSecondColor(QColor(0,0,0,255)); + area->createLineTool(); + area->floodFill(255,0,0,255); + + QPoint point1(100,100); + QPoint point2(150,100); + area->Tool->onMouseLeftPressed(point1.x(), point1.y()); + area->Tool->onMouseMoved(point2.x(), point2.y()); + area->Tool->onMouseRightPressed(point2.x(), point2.y()); + area->Tool->onMouseRightReleased(point2.x(),point2.y()); + area->Tool->onMouseLeftReleased(point2.x(), point2.y()); + + + QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==QColor(255,0,0,255)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==QColor(255,0,0,255)); + + area->deleteLayer(0); +} + +void UnitTest::test_Pen_fullDraw(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::RASTERIMAGE); + area->colorPicker.setFirstColor(QColor(255,255,255,255)); + area->colorPicker.setSecondColor(QColor(0,0,0,255)); + area->createPenTool(); + area->floodFill(255,0,0,255); + + QPoint point1(100,100); + QPoint point2(150,100); + area->Tool->onMouseLeftPressed(point1.x(), point1.y()); + area->Tool->onMouseMoved(point2.x(), point2.y()); + area->Tool->onMouseLeftReleased(point2.x(), point2.y()); + + + QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==area->colorPicker.getFirstColor()); + QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==area->colorPicker.getFirstColor()); + + area->deleteLayer(0); +} + +void UnitTest::test_Pen_interruptedDraw(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::RASTERIMAGE); + area->colorPicker.setFirstColor(QColor(255,255,255,255)); + area->colorPicker.setSecondColor(QColor(0,0,0,255)); + area->createPenTool(); + area->floodFill(255,0,0,255); + + QPoint point1(100,100); + QPoint point2(150,100); + area->Tool->onMouseLeftPressed(point1.x(), point1.y()); + area->Tool->onMouseMoved(point2.x(), point2.y()); + area->Tool->onMouseRightPressed(point2.x(), point2.y()); + area->Tool->onMouseRightReleased(point2.x(),point2.y()); + area->Tool->onMouseLeftReleased(point2.x(), point2.y()); + + + QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==QColor(255,0,0,255)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==QColor(255,0,0,255)); + + area->deleteLayer(0); +} + +void UnitTest::test_Plain_fullDraw(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::RASTERIMAGE); + area->colorPicker.setFirstColor(QColor(255,255,255,255)); + area->colorPicker.setSecondColor(QColor(0,0,0,255)); + area->createPlainTool(); + area->floodFill(255,0,0,255); + + QPoint point1(100,100); + QPoint point2(150,100); + area->Tool->onMouseLeftPressed(point1.x(), point1.y()); + area->Tool->onMouseMoved(point2.x(), point2.y()); + area->Tool->onMouseLeftReleased(point2.x(), point2.y()); + + + QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==area->colorPicker.getFirstColor()); + QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==area->colorPicker.getFirstColor()); + + area->deleteLayer(0); +} + +void UnitTest::test_Plain_interruptedDraw(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::RASTERIMAGE); + area->colorPicker.setFirstColor(QColor(255,255,255,255)); + area->colorPicker.setSecondColor(QColor(0,0,0,255)); + area->createPlainTool(); + area->floodFill(255,0,0,255); + + QPoint point1(100,100); + QPoint point2(150,100); + area->Tool->onMouseLeftPressed(point1.x(), point1.y()); + area->Tool->onMouseMoved(point2.x(), point2.y()); + area->Tool->onMouseRightPressed(point2.x(), point2.y()); + area->Tool->onMouseRightReleased(point2.x(),point2.y()); + area->Tool->onMouseLeftReleased(point2.x(), point2.y()); + + + QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==QColor(255,0,0,255)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==QColor(255,0,0,255)); + + area->deleteLayer(0); +} + +void UnitTest::test_Polygon_fullDraw(){ + area->addLayer(21,21,10,20,IntelliImage::ImageType::RASTERIMAGE); + std::vector points{ + QPoint(10,00), + QPoint(00,10), + QPoint(10,20), + QPoint(20,10) + }; + + std::vector test{ + QPoint(00,00), + QPoint(00,20), + QPoint(20,00), + QPoint(20,20), + QPoint(10,10) + }; + + area->colorPicker.setFirstColor(QColor(255,255,255,255)); + area->colorPicker.setSecondColor(QColor(0,0,0,255)); + area->createPlainTool(); + area->floodFill(255,0,0,255); + + area->Tool->onMouseLeftPressed(points[0].x(), points[0].x()); + area->Tool->onMouseLeftReleased(points[0].x(), points[0].x()); + area->Tool->onMouseMoved(points[1].x(), points[1].x()); + + area->Tool->onMouseLeftPressed(points[1].x(), points[1].x()); + area->Tool->onMouseLeftReleased(points[1].x(), points[1].x()); + area->Tool->onMouseMoved(points[2].x(), points[2].x()); + + area->Tool->onMouseLeftPressed(points[2].x(), points[2].x()); + area->Tool->onMouseLeftReleased(points[2].x(), points[2].x()); + area->Tool->onMouseMoved(points[3].x(), points[3].x()); + + area->Tool->onMouseLeftPressed(points[3].x(), points[3].x()); + area->Tool->onMouseLeftReleased(points[3].x(), points[3].x()); + area->Tool->onMouseMoved(points[0].x(), points[0].x()); + + area->Tool->onMouseLeftPressed(points[0].x(), points[0].x()); + area->Tool->onMouseLeftReleased(points[0].x(), points[0].x()); + + QVERIFY(area->layerBundle[0].image->getPixelColor(points[0])==area->colorPicker.getFirstColor()); + QVERIFY(area->layerBundle[0].image->getPixelColor(points[1])==area->colorPicker.getFirstColor()); + QVERIFY(area->layerBundle[0].image->getPixelColor(points[2])==area->colorPicker.getFirstColor()); + QVERIFY(area->layerBundle[0].image->getPixelColor(points[3])==area->colorPicker.getFirstColor()); + + //QVERIFY(area->layerBundle[0].image->getPixelColor(test[4])==area->colorPicker.getSecondColor()); + //QVERIFY(area->layerBundle[0].image->getPixelColor(test[0])==QColor(255,0,0,255)); + //QVERIFY(area->layerBundle[0].image->getPixelColor(test[1])==QColor(255,0,0,255)); + //QVERIFY(area->layerBundle[0].image->getPixelColor(test[2])==QColor(255,0,0,255)); + //QVERIFY(area->layerBundle[0].image->getPixelColor(test[3])==QColor(255,0,0,255)); + + area->deleteLayer(0); +} + +void UnitTest::test_Polygon_interruptedDraw(){ + area->addLayer(21,21,10,20,IntelliImage::ImageType::RASTERIMAGE); + std::vector points{ + QPoint(10,00), + QPoint(00,10), + QPoint(10,20), + QPoint(20,10) + }; + + std::vector test{ + QPoint(00,00), + QPoint(00,20), + QPoint(20,00), + QPoint(20,20), + QPoint(10,10) + }; + + area->colorPicker.setFirstColor(QColor(255,255,255,255)); + area->colorPicker.setSecondColor(QColor(0,0,0,255)); + area->createPlainTool(); + area->floodFill(255,0,0,255); + + area->Tool->onMouseLeftPressed(points[0].x(), points[0].x()); + area->Tool->onMouseLeftReleased(points[0].x(), points[0].x()); + area->Tool->onMouseMoved(points[1].x(), points[1].x()); + + area->Tool->onMouseLeftPressed(points[1].x(), points[1].x()); + area->Tool->onMouseLeftReleased(points[1].x(), points[1].x()); + area->Tool->onMouseMoved(points[2].x(), points[2].x()); + + area->Tool->onMouseLeftPressed(points[2].x(), points[2].x()); + area->Tool->onMouseLeftReleased(points[2].x(), points[2].x()); + area->Tool->onMouseMoved(points[3].x(), points[3].x()); + + area->Tool->onMouseLeftPressed(points[3].x(), points[3].x()); + area->Tool->onMouseLeftReleased(points[3].x(), points[3].x()); + area->Tool->onMouseMoved(points[0].x(), points[0].x()); + + area->Tool->onMouseRightPressed(points[0].x(), points[0].x()); + area->Tool->onMouseRightReleased(points[0].x(), points[0].x()); + + //QVERIFY(area->layerBundle[0].image->getPixelColor(points[0])==QColor(255,0,0,255)); + //QVERIFY(area->layerBundle[0].image->getPixelColor(points[1])==QColor(255,0,0,255)); + //QVERIFY(area->layerBundle[0].image->getPixelColor(points[2])==QColor(255,0,0,255)); + //QVERIFY(area->layerBundle[0].image->getPixelColor(points[3])==QColor(255,0,0,255)); + + //QVERIFY(area->layerBundle[0].image->getPixelColor(test[4])==QColor(255,0,0,255)); + //QVERIFY(area->layerBundle[0].image->getPixelColor(test[0])==QColor(255,0,0,255)); + //QVERIFY(area->layerBundle[0].image->getPixelColor(test[1])==QColor(255,0,0,255)); + //QVERIFY(area->layerBundle[0].image->getPixelColor(test[2])==QColor(255,0,0,255)); + //QVERIFY(area->layerBundle[0].image->getPixelColor(test[3])==QColor(255,0,0,255)); + + area->deleteLayer(0); +} + +void UnitTest::test_Rectangle_fullDraw(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::RASTERIMAGE); + area->colorPicker.setFirstColor(QColor(255,255,255,255)); + area->colorPicker.setSecondColor(QColor(0,0,0,255)); + area->createRectangleTool(); + area->floodFill(255,0,0,255); + + QPoint point1(100,100); + QPoint point2(150,150); + QPoint point3(125,125); + area->Tool->onMouseLeftPressed(point1.x(), point1.y()); + area->Tool->onMouseMoved(point2.x(), point2.y()); + area->Tool->onMouseLeftReleased(point2.x(), point2.y()); + + + QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==area->colorPicker.getFirstColor()); + QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==area->colorPicker.getFirstColor()); + QVERIFY(area->layerBundle[0].image->getPixelColor(point3)==area->colorPicker.getSecondColor()); + + area->deleteLayer(0); +} + +void UnitTest::test_Rectangle_interruptedDraw(){ + area->addLayer(200,400,10,20,IntelliImage::ImageType::RASTERIMAGE); + area->colorPicker.setFirstColor(QColor(255,255,255,255)); + area->colorPicker.setSecondColor(QColor(0,0,0,255)); + area->createPenTool(); + area->floodFill(255,0,0,255); + + QPoint point1(100,100); + QPoint point2(150,150); + QPoint point3(125,125); + area->Tool->onMouseLeftPressed(point1.x(), point1.y()); + area->Tool->onMouseMoved(point2.x(), point2.y()); + area->Tool->onMouseRightPressed(point2.x(), point2.y()); + area->Tool->onMouseRightReleased(point2.x(),point2.y()); + area->Tool->onMouseLeftReleased(point2.x(), point2.y()); + + QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==QColor(255,0,0,255)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==QColor(255,0,0,255)); + QVERIFY(area->layerBundle[0].image->getPixelColor(point3)==QColor(255,0,0,255)); + + area->deleteLayer(0); +} //test Triangulation -void UnitTest::test_Triangulation_Coverage(){} +void UnitTest::test_Triangulation_Coverage(){ + std::vector points{ + QPoint(10,00), + QPoint(00,10), + QPoint(10,20), + QPoint(20,10) + }; + std::vector test{ + QPoint(00,00), + QPoint(00,20), + QPoint(20,00), + QPoint(20,20), + QPoint(10,10) + }; + std::vector tria = IntelliTriangulation::calculateTriangles(points); + QCOMPARE(IntelliTriangulation::isInPolygon(tria, points[0]), true); + QCOMPARE(IntelliTriangulation::isInPolygon(tria, points[1]), true); + QCOMPARE(IntelliTriangulation::isInPolygon(tria, points[2]), true); + QCOMPARE(IntelliTriangulation::isInPolygon(tria, points[3]), true); + + QCOMPARE(IntelliTriangulation::isInPolygon(tria, test[4]), true); + QCOMPARE(IntelliTriangulation::isInPolygon(tria, test[0]), false); + QCOMPARE(IntelliTriangulation::isInPolygon(tria, test[1]), false); + QCOMPARE(IntelliTriangulation::isInPolygon(tria, test[2]), false); + QCOMPARE(IntelliTriangulation::isInPolygon(tria, test[3]), false); +} QTEST_MAIN(UnitTest)