tests: lcov++ (sw_engine)

This commit is contained in:
Mira Grudzinska 2023-05-09 02:08:34 +02:00 committed by Hermet Park
parent e84b181da8
commit 78c5034229

View file

@ -38,7 +38,7 @@ TEST_CASE("Basic draw", "[tvgSwEngine]")
REQUIRE(canvas);
uint32_t buffer[100*100];
REQUIRE(canvas->target(buffer, 100, 100, 100, SwCanvas::Colorspace::ABGR8888) == Result::Success);
REQUIRE(canvas->target(buffer, 100, 100, 100, SwCanvas::Colorspace::ABGR8888_STRAIGHT) == Result::Success);
//Arc Line
auto shape1 = tvg::Shape::gen();
@ -118,9 +118,11 @@ TEST_CASE("Image Draw", "[tvgSwEngine]")
auto rectMask = tvg::Shape::gen();
REQUIRE(rectMask);
REQUIRE(rectMask->appendRect(10, 10, 30, 30, 0, 0) == Result::Success);
REQUIRE(rectMask->fill(100, 100, 100, 255) == Result::Success);
auto rleMask = tvg::Shape::gen();
REQUIRE(rleMask);
REQUIRE(rleMask->appendRect(0, 10, 20, 30, 5, 5) == Result::Success);
REQUIRE(rleMask->fill(100, 100, 100, 255) == Result::Success);
// Rect images
auto basicPicture2 = std::unique_ptr<Picture>(static_cast<Picture*>(basicPicture->duplicate()));
@ -135,15 +137,20 @@ TEST_CASE("Image Draw", "[tvgSwEngine]")
auto basicPicture4 = std::unique_ptr<Picture>(static_cast<Picture*>(basicPicture->duplicate()));
REQUIRE(basicPicture4);
auto rectMask4 = std::unique_ptr<Shape>(static_cast<Shape*>(rectMask->duplicate()));
REQUIRE(rectMask4);
// Rle images
auto basicPicture5 = std::unique_ptr<Picture>(static_cast<Picture*>(basicPicture->duplicate()));
REQUIRE(basicPicture5);
// Rle images
auto basicPicture6 = std::unique_ptr<Picture>(static_cast<Picture*>(basicPicture->duplicate()));
REQUIRE(basicPicture6);
auto rleMask6 = std::unique_ptr<Shape>(static_cast<Shape*>(rleMask->duplicate()));
REQUIRE(rleMask6);
auto basicPicture7 = std::unique_ptr<Picture>(static_cast<Picture*>(basicPicture->duplicate()));
REQUIRE(basicPicture7);
auto rleMask7 = std::unique_ptr<Shape>(static_cast<Shape*>(rleMask->duplicate()));
REQUIRE(rleMask7);
// Rect
REQUIRE(basicPicture->composite(move(rectMask), tvg::CompositeMethod::AlphaMask) == Result::Success);
@ -155,17 +162,20 @@ TEST_CASE("Image Draw", "[tvgSwEngine]")
REQUIRE(basicPicture3->composite(move(rectMask3), tvg::CompositeMethod::ClipPath) == Result::Success);
REQUIRE(canvas->push(move(basicPicture3)) == Result::Success);
REQUIRE(basicPicture4->opacity(100) == Result::Success);
REQUIRE(basicPicture4->composite(move(rectMask4), tvg::CompositeMethod::LumaMask) == Result::Success);
REQUIRE(canvas->push(move(basicPicture4)) == Result::Success);
// Rle
REQUIRE(basicPicture5->composite(move(rleMask), tvg::CompositeMethod::ClipPath) == Result::Success);
REQUIRE(basicPicture5->opacity(100) == Result::Success);
REQUIRE(canvas->push(move(basicPicture5)) == Result::Success);
REQUIRE(basicPicture6->composite(move(rleMask6), tvg::CompositeMethod::ClipPath) == Result::Success);
REQUIRE(basicPicture6->opacity(100) == Result::Success);
// Rle
REQUIRE(basicPicture6->composite(move(rleMask), tvg::CompositeMethod::ClipPath) == Result::Success);
REQUIRE(canvas->push(move(basicPicture6)) == Result::Success);
REQUIRE(basicPicture7->composite(move(rleMask7), tvg::CompositeMethod::ClipPath) == Result::Success);
REQUIRE(basicPicture7->opacity(100) == Result::Success);
REQUIRE(canvas->push(move(basicPicture7)) == Result::Success);
// Transformed images
basicPicture = Picture::gen();
@ -193,15 +203,20 @@ TEST_CASE("Image Draw", "[tvgSwEngine]")
basicPicture4 = std::unique_ptr<Picture>(static_cast<Picture*>(basicPicture->duplicate()));
REQUIRE(basicPicture4);
rectMask4 = std::unique_ptr<Shape>(static_cast<Shape*>(rectMask->duplicate()));
REQUIRE(rectMask4);
// Rle images
basicPicture5 = std::unique_ptr<Picture>(static_cast<Picture*>(basicPicture->duplicate()));
REQUIRE(basicPicture5);
// Rle images
basicPicture6 = std::unique_ptr<Picture>(static_cast<Picture*>(basicPicture->duplicate()));
REQUIRE(basicPicture6);
rleMask6 = std::unique_ptr<Shape>(static_cast<Shape*>(rleMask->duplicate()));
REQUIRE(rleMask6);
basicPicture7 = std::unique_ptr<Picture>(static_cast<Picture*>(basicPicture->duplicate()));
REQUIRE(basicPicture7);
rleMask7 = std::unique_ptr<Shape>(static_cast<Shape*>(rleMask->duplicate()));
REQUIRE(rleMask7);
// Rect
REQUIRE(basicPicture->composite(move(rectMask), tvg::CompositeMethod::AlphaMask) == Result::Success);
@ -213,17 +228,20 @@ TEST_CASE("Image Draw", "[tvgSwEngine]")
REQUIRE(basicPicture3->composite(move(rectMask3), tvg::CompositeMethod::ClipPath) == Result::Success);
REQUIRE(canvas->push(move(basicPicture3)) == Result::Success);
REQUIRE(basicPicture4->opacity(100) == Result::Success);
REQUIRE(basicPicture4->composite(move(rectMask4), tvg::CompositeMethod::LumaMask) == Result::Success);
REQUIRE(canvas->push(move(basicPicture4)) == Result::Success);
// Rle
REQUIRE(basicPicture5->composite(move(rleMask), tvg::CompositeMethod::ClipPath) == Result::Success);
REQUIRE(basicPicture5->opacity(100) == Result::Success);
REQUIRE(canvas->push(move(basicPicture5)) == Result::Success);
REQUIRE(basicPicture6->composite(move(rleMask6), tvg::CompositeMethod::ClipPath) == Result::Success);
REQUIRE(basicPicture6->opacity(100) == Result::Success);
// Rle
REQUIRE(basicPicture6->composite(move(rleMask), tvg::CompositeMethod::ClipPath) == Result::Success);
REQUIRE(canvas->push(move(basicPicture6)) == Result::Success);
REQUIRE(basicPicture7->composite(move(rleMask7), tvg::CompositeMethod::ClipPath) == Result::Success);
REQUIRE(basicPicture7->opacity(100) == Result::Success);
REQUIRE(canvas->push(move(basicPicture7)) == Result::Success);
// Upscaled images
basicPicture = Picture::gen();
@ -250,15 +268,20 @@ TEST_CASE("Image Draw", "[tvgSwEngine]")
basicPicture4 = std::unique_ptr<Picture>(static_cast<Picture*>(basicPicture->duplicate()));
REQUIRE(basicPicture4);
rectMask4 = std::unique_ptr<Shape>(static_cast<Shape*>(rectMask->duplicate()));
REQUIRE(rectMask4);
// Rle images
basicPicture5 = std::unique_ptr<Picture>(static_cast<Picture*>(basicPicture->duplicate()));
REQUIRE(basicPicture5);
// Rle images
basicPicture6 = std::unique_ptr<Picture>(static_cast<Picture*>(basicPicture->duplicate()));
REQUIRE(basicPicture6);
rleMask6 = std::unique_ptr<Shape>(static_cast<Shape*>(rleMask->duplicate()));
REQUIRE(rleMask6);
basicPicture7 = std::unique_ptr<Picture>(static_cast<Picture*>(basicPicture->duplicate()));
REQUIRE(basicPicture7);
rleMask7 = std::unique_ptr<Shape>(static_cast<Shape*>(rleMask->duplicate()));
REQUIRE(rleMask7);
// Rect
REQUIRE(basicPicture->composite(move(rectMask), tvg::CompositeMethod::AlphaMask) == Result::Success);
@ -270,17 +293,20 @@ TEST_CASE("Image Draw", "[tvgSwEngine]")
REQUIRE(basicPicture3->composite(move(rectMask3), tvg::CompositeMethod::ClipPath) == Result::Success);
REQUIRE(canvas->push(move(basicPicture3)) == Result::Success);
REQUIRE(basicPicture4->opacity(100) == Result::Success);
REQUIRE(basicPicture4->composite(move(rectMask4), tvg::CompositeMethod::LumaMask) == Result::Success);
REQUIRE(canvas->push(move(basicPicture4)) == Result::Success);
// Rle
REQUIRE(basicPicture5->composite(move(rleMask), tvg::CompositeMethod::ClipPath) == Result::Success);
REQUIRE(basicPicture5->opacity(100) == Result::Success);
REQUIRE(canvas->push(move(basicPicture5)) == Result::Success);
REQUIRE(basicPicture6->composite(move(rleMask6), tvg::CompositeMethod::ClipPath) == Result::Success);
REQUIRE(basicPicture6->opacity(100) == Result::Success);
// Rle
REQUIRE(basicPicture6->composite(move(rleMask), tvg::CompositeMethod::ClipPath) == Result::Success);
REQUIRE(canvas->push(move(basicPicture6)) == Result::Success);
REQUIRE(basicPicture7->composite(move(rleMask7), tvg::CompositeMethod::ClipPath) == Result::Success);
REQUIRE(basicPicture7->opacity(100) == Result::Success);
REQUIRE(canvas->push(move(basicPicture7)) == Result::Success);
// Downscaled images
basicPicture = Picture::gen();
@ -307,15 +333,20 @@ TEST_CASE("Image Draw", "[tvgSwEngine]")
basicPicture4 = std::unique_ptr<Picture>(static_cast<Picture*>(basicPicture->duplicate()));
REQUIRE(basicPicture4);
rectMask4 = std::unique_ptr<Shape>(static_cast<Shape*>(rectMask->duplicate()));
REQUIRE(rectMask4);
// Rle images
basicPicture5 = std::unique_ptr<Picture>(static_cast<Picture*>(basicPicture->duplicate()));
REQUIRE(basicPicture5);
// Rle images
basicPicture6 = std::unique_ptr<Picture>(static_cast<Picture*>(basicPicture->duplicate()));
REQUIRE(basicPicture6);
rleMask6 = std::unique_ptr<Shape>(static_cast<Shape*>(rleMask->duplicate()));
REQUIRE(rleMask6);
basicPicture7 = std::unique_ptr<Picture>(static_cast<Picture*>(basicPicture->duplicate()));
REQUIRE(basicPicture7);
rleMask7 = std::unique_ptr<Shape>(static_cast<Shape*>(rleMask->duplicate()));
REQUIRE(rleMask7);
// Rect
REQUIRE(basicPicture->composite(move(rectMask), tvg::CompositeMethod::AlphaMask) == Result::Success);
@ -327,17 +358,20 @@ TEST_CASE("Image Draw", "[tvgSwEngine]")
REQUIRE(basicPicture3->composite(move(rectMask3), tvg::CompositeMethod::ClipPath) == Result::Success);
REQUIRE(canvas->push(move(basicPicture3)) == Result::Success);
REQUIRE(basicPicture4->opacity(100) == Result::Success);
REQUIRE(basicPicture4->composite(move(rectMask4), tvg::CompositeMethod::LumaMask) == Result::Success);
REQUIRE(canvas->push(move(basicPicture4)) == Result::Success);
// Rle
REQUIRE(basicPicture5->composite(move(rleMask), tvg::CompositeMethod::ClipPath) == Result::Success);
REQUIRE(basicPicture5->opacity(100) == Result::Success);
REQUIRE(canvas->push(move(basicPicture5)) == Result::Success);
REQUIRE(basicPicture6->composite(move(rleMask6), tvg::CompositeMethod::ClipPath) == Result::Success);
REQUIRE(basicPicture6->opacity(100) == Result::Success);
// Rle
REQUIRE(basicPicture6->composite(move(rleMask), tvg::CompositeMethod::ClipPath) == Result::Success);
REQUIRE(canvas->push(move(basicPicture6)) == Result::Success);
REQUIRE(basicPicture7->composite(move(rleMask7), tvg::CompositeMethod::ClipPath) == Result::Success);
REQUIRE(basicPicture7->opacity(100) == Result::Success);
REQUIRE(canvas->push(move(basicPicture7)) == Result::Success);
//Draw
REQUIRE(canvas->draw() == Result::Success);
REQUIRE(canvas->sync() == Result::Success);
@ -379,6 +413,11 @@ TEST_CASE("Rect Draw", "[tvgSwEngine]")
auto basicShape4 = std::unique_ptr<Shape>(static_cast<Shape*>(basicShape->duplicate()));
REQUIRE(basicShape4);
auto basicMask4 = std::unique_ptr<Shape>(static_cast<Shape*>(basicMask->duplicate()));
REQUIRE(basicMask4);
auto basicShape5 = std::unique_ptr<Shape>(static_cast<Shape*>(basicShape->duplicate()));
REQUIRE(basicShape5);
REQUIRE(basicShape->composite(move(basicMask), tvg::CompositeMethod::AlphaMask) == Result::Success);
REQUIRE(canvas->push(move(basicShape)) == Result::Success);
@ -389,8 +428,11 @@ TEST_CASE("Rect Draw", "[tvgSwEngine]")
REQUIRE(basicShape3->composite(move(basicMask3), tvg::CompositeMethod::ClipPath) == Result::Success);
REQUIRE(canvas->push(move(basicShape3)) == Result::Success);
REQUIRE(basicShape4->composite(move(basicMask4), tvg::CompositeMethod::LumaMask) == Result::Success);
REQUIRE(canvas->push(move(basicShape4)) == Result::Success);
REQUIRE(canvas->push(move(basicShape5)) == Result::Success);
//Draw
REQUIRE(canvas->draw() == Result::Success);
REQUIRE(canvas->sync() == Result::Success);
@ -430,6 +472,11 @@ TEST_CASE("RLE Draw", "[tvgSwEngine]")
auto basicShape4 = std::unique_ptr<Shape>(static_cast<Shape*>(basicShape->duplicate()));
REQUIRE(basicShape4);
auto basicMask4 = std::unique_ptr<Shape>(static_cast<Shape*>(basicMask->duplicate()));
REQUIRE(basicMask4);
auto basicShape5 = std::unique_ptr<Shape>(static_cast<Shape*>(basicShape->duplicate()));
REQUIRE(basicShape5);
REQUIRE(basicShape->composite(move(basicMask), tvg::CompositeMethod::AlphaMask) == Result::Success);
REQUIRE(canvas->push(move(basicShape)) == Result::Success);
@ -440,8 +487,11 @@ TEST_CASE("RLE Draw", "[tvgSwEngine]")
REQUIRE(basicShape3->composite(move(basicMask3), tvg::CompositeMethod::ClipPath) == Result::Success);
REQUIRE(canvas->push(move(basicShape3)) == Result::Success);
REQUIRE(basicShape4->composite(move(basicMask4), tvg::CompositeMethod::LumaMask) == Result::Success);
REQUIRE(canvas->push(move(basicShape4)) == Result::Success);
REQUIRE(canvas->push(move(basicShape5)) == Result::Success);
//Draw
REQUIRE(canvas->draw() == Result::Success);
REQUIRE(canvas->sync() == Result::Success);
@ -670,6 +720,66 @@ TEST_CASE("Filling InvAlphaMask", "[tvgSwEngine]")
}
TEST_CASE("Filling LumaMask", "[tvgSwEngine]")
{
REQUIRE(Initializer::init(CanvasEngine::Sw, 0) == Result::Success);
auto canvas = SwCanvas::gen();
REQUIRE(canvas);
uint32_t buffer[100*100];
REQUIRE(canvas->target(buffer, 100, 100, 100, SwCanvas::Colorspace::ABGR8888) == Result::Success);
//Fill
auto linearFill = LinearGradient::gen();
REQUIRE(linearFill);
auto radialFill = RadialGradient::gen();
REQUIRE(radialFill);
Fill::ColorStop cs[4] = {
{0.0f, 0, 0, 0, 0},
{0.2f, 50, 25, 50, 25},
{0.5f, 100, 100, 100, 125},
{1.0f, 255, 255, 255, 255}
};
REQUIRE(linearFill->colorStops(cs, 4) == Result::Success);
REQUIRE(radialFill->colorStops(cs, 4) == Result::Success);
REQUIRE(linearFill->linear(0.0f, 0.0f, 100.0f, 120.0f) == Result::Success);
REQUIRE(radialFill->radial(50.0f, 50.0f, 50.0f) == Result::Success);
//Mask
auto mask = tvg::Shape::gen();
REQUIRE(mask);
REQUIRE(mask->appendCircle(50, 50, 50, 50) == Result::Success);
//Filled Shapes
auto shape3 = tvg::Shape::gen();
REQUIRE(shape3);
auto shape4 = tvg::Shape::gen();
REQUIRE(shape4);
REQUIRE(shape3->appendRect(0, 0, 50, 50, 0, 0) == Result::Success);
REQUIRE(shape4->appendRect(50, 0, 50, 50, 0, 0) == Result::Success);
REQUIRE(shape3->fill(move(linearFill)) == Result::Success);
REQUIRE(shape4->fill(move(radialFill)) == Result::Success);
//Scene
auto scene = tvg::Scene::gen();
REQUIRE(scene);
REQUIRE(scene->push(move(shape3)) == Result::Success);
REQUIRE(scene->push(move(shape4)) == Result::Success);
REQUIRE(scene->composite(move(mask), tvg::CompositeMethod::LumaMask) == Result::Success);
REQUIRE(canvas->push(move(scene)) == Result::Success);
//Draw
REQUIRE(canvas->draw() == Result::Success);
REQUIRE(canvas->sync() == Result::Success);
REQUIRE(Initializer::term(CanvasEngine::Sw) == Result::Success);
}
TEST_CASE("Filling ClipPath", "[tvgSwEngine]")
{
REQUIRE(Initializer::init(CanvasEngine::Sw, 0) == Result::Success);
@ -950,6 +1060,66 @@ TEST_CASE("RLE Filling InvAlphaMask", "[tvgSwEngine]")
}
TEST_CASE("RLE Filling LumaMask", "[tvgSwEngine]")
{
REQUIRE(Initializer::init(CanvasEngine::Sw, 0) == Result::Success);
auto canvas = SwCanvas::gen();
REQUIRE(canvas);
uint32_t buffer[100*100];
REQUIRE(canvas->target(buffer, 100, 100, 100, SwCanvas::Colorspace::ABGR8888) == Result::Success);
//Fill
auto linearFill = LinearGradient::gen();
REQUIRE(linearFill);
auto radialFill = RadialGradient::gen();
REQUIRE(radialFill);
Fill::ColorStop cs[4] = {
{0.0f, 0, 0, 0, 0},
{0.2f, 50, 25, 50, 25},
{0.5f, 100, 100, 100, 125},
{1.0f, 255, 255, 255, 255}
};
REQUIRE(linearFill->colorStops(cs, 4) == Result::Success);
REQUIRE(radialFill->colorStops(cs, 4) == Result::Success);
REQUIRE(linearFill->linear(0.0f, 0.0f, 100.0f, 120.0f) == Result::Success);
REQUIRE(radialFill->radial(50.0f, 50.0f, 50.0f) == Result::Success);
//Mask
auto mask = tvg::Shape::gen();
REQUIRE(mask);
REQUIRE(mask->appendCircle(50, 50, 50, 50) == Result::Success);
//Filled Shapes
auto shape3 = tvg::Shape::gen();
REQUIRE(shape3);
auto shape4 = tvg::Shape::gen();
REQUIRE(shape4);
REQUIRE(shape3->appendRect(0, 0, 50, 50, 10, 10) == Result::Success);
REQUIRE(shape4->appendRect(50, 0, 50, 50, 10, 10) == Result::Success);
REQUIRE(shape3->fill(move(linearFill)) == Result::Success);
REQUIRE(shape4->fill(move(radialFill)) == Result::Success);
//Scene
auto scene = tvg::Scene::gen();
REQUIRE(scene);
REQUIRE(scene->push(move(shape3)) == Result::Success);
REQUIRE(scene->push(move(shape4)) == Result::Success);
REQUIRE(scene->composite(move(mask), tvg::CompositeMethod::LumaMask) == Result::Success);
REQUIRE(canvas->push(move(scene)) == Result::Success);
//Draw
REQUIRE(canvas->draw() == Result::Success);
REQUIRE(canvas->sync() == Result::Success);
REQUIRE(Initializer::term(CanvasEngine::Sw) == Result::Success);
}
TEST_CASE("RLE Filling ClipPath", "[tvgSwEngine]")
{
REQUIRE(Initializer::init(CanvasEngine::Sw, 0) == Result::Success);