From 98c5ce9347566c25bf6ba9857b8c6513622283cd Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Thu, 16 Aug 2018 15:06:29 +0300 Subject: [PATCH] imgproc(test): refactor test_intersection.cpp don't use legacy test API --- modules/imgproc/test/test_intersection.cpp | 100 ++++++--------------- 1 file changed, 26 insertions(+), 74 deletions(-) diff --git a/modules/imgproc/test/test_intersection.cpp b/modules/imgproc/test/test_intersection.cpp index 0bb9b6ebf9..0e419c4702 100644 --- a/modules/imgproc/test/test_intersection.cpp +++ b/modules/imgproc/test/test_intersection.cpp @@ -49,31 +49,18 @@ namespace opencv_test { namespace { #define ACCURACY 0.00001 -class CV_RotatedRectangleIntersectionTest: public cvtest::ArrayTest -{ -public: +// See pics/intersection.png for the scenarios we are testing -protected: - void run (int); - -private: - void test1(); - void test2(); - void test3(); - void test4(); - void test5(); - void test6(); - void test7(); - void test8(); - void test9(); - void test10(); - void test11(); - void test12(); - void test13(); - void test14(); - void test15(); - void test16(); -}; +// Test the following scenarios: +// 1 - no intersection +// 2 - partial intersection, rectangle translated +// 3 - partial intersection, rectangle rotated 45 degree on the corner, forms a triangle intersection +// 4 - full intersection, rectangles of same size directly on top of each other +// 5 - partial intersection, rectangle on top rotated 45 degrees +// 6 - partial intersection, rectangle on top of different size +// 7 - full intersection, rectangle fully enclosed in the other +// 8 - partial intersection, rectangle corner just touching. point contact +// 9 - partial intersetion. rectangle side by side, line contact static void compare(const std::vector& test, const std::vector& target) { @@ -82,45 +69,12 @@ static void compare(const std::vector& test, const std::vector ASSERT_TRUE(target.size() < 4 || isContourConvex(target)); for( size_t i = 0; i < test.size(); i++ ) { - double dx = test[i].x - target[i].x; - double dy = test[i].y - target[i].y; - double r = sqrt(dx*dx + dy*dy); + double r = sqrt(normL2Sqr(test[i] - target[i])); ASSERT_LT(r, ACCURACY); } } -void CV_RotatedRectangleIntersectionTest::run(int) -{ - // See pics/intersection.png for the scenarios we are testing - - // Test the following scenarios: - // 1 - no intersection - // 2 - partial intersection, rectangle translated - // 3 - partial intersection, rectangle rotated 45 degree on the corner, forms a triangle intersection - // 4 - full intersection, rectangles of same size directly on top of each other - // 5 - partial intersection, rectangle on top rotated 45 degrees - // 6 - partial intersection, rectangle on top of different size - // 7 - full intersection, rectangle fully enclosed in the other - // 8 - partial intersection, rectangle corner just touching. point contact - // 9 - partial intersetion. rectangle side by side, line contact - - test1(); - test2(); - test3(); - test4(); - test5(); - test6(); - test7(); - test8(); - test9(); - test10(); - test11(); - test12(); - test13(); - test14(); -} - -void CV_RotatedRectangleIntersectionTest::test1() +TEST(Imgproc_RotatedRectangleIntersection, accuracy_1) { // no intersection RotatedRect rect1(Point2f(0, 0), Size2f(2, 2), 12.0f); @@ -133,7 +87,7 @@ void CV_RotatedRectangleIntersectionTest::test1() CV_Assert(vertices.empty()); } -void CV_RotatedRectangleIntersectionTest::test2() +TEST(Imgproc_RotatedRectangleIntersection, accuracy_2) { // partial intersection, rectangles translated RotatedRect rect1(Point2f(0, 0), Size2f(2, 2), 0.0f); @@ -152,7 +106,7 @@ void CV_RotatedRectangleIntersectionTest::test2() compare(vertices, targetVertices); } -void CV_RotatedRectangleIntersectionTest::test3() +TEST(Imgproc_RotatedRectangleIntersection, accuracy_3) { // partial intersection, rectangles rotated 45 degree on the corner, forms a triangle intersection RotatedRect rect1(Point2f(0, 0), Size2f(2, 2), 0.0f); @@ -170,7 +124,7 @@ void CV_RotatedRectangleIntersectionTest::test3() compare(vertices, targetVertices); } -void CV_RotatedRectangleIntersectionTest::test4() +TEST(Imgproc_RotatedRectangleIntersection, accuracy_4) { // full intersection, rectangles of same size directly on top of each other RotatedRect rect1(Point2f(0, 0), Size2f(2, 2), 0.0f); @@ -189,7 +143,7 @@ void CV_RotatedRectangleIntersectionTest::test4() compare(vertices, targetVertices); } -void CV_RotatedRectangleIntersectionTest::test5() +TEST(Imgproc_RotatedRectangleIntersection, accuracy_5) { // partial intersection, rectangle on top rotated 45 degrees RotatedRect rect1(Point2f(0, 0), Size2f(2, 2), 0.0f); @@ -212,7 +166,7 @@ void CV_RotatedRectangleIntersectionTest::test5() compare(vertices, targetVertices); } -void CV_RotatedRectangleIntersectionTest::test6() +TEST(Imgproc_RotatedRectangleIntersection, accuracy_6) { // 6 - partial intersection, rectangle on top of different size RotatedRect rect1(Point2f(0, 0), Size2f(2, 2), 0.0f); @@ -231,7 +185,7 @@ void CV_RotatedRectangleIntersectionTest::test6() compare(vertices, targetVertices); } -void CV_RotatedRectangleIntersectionTest::test7() +TEST(Imgproc_RotatedRectangleIntersection, accuracy_7) { // full intersection, rectangle fully enclosed in the other RotatedRect rect1(Point2f(0, 0), Size2f(12.34f, 56.78f), 0.0f); @@ -250,7 +204,7 @@ void CV_RotatedRectangleIntersectionTest::test7() compare(vertices, targetVertices); } -void CV_RotatedRectangleIntersectionTest::test8() +TEST(Imgproc_RotatedRectangleIntersection, accuracy_8) { // intersection by a single vertex RotatedRect rect1(Point2f(0, 0), Size2f(2, 2), 0.0f); @@ -263,7 +217,7 @@ void CV_RotatedRectangleIntersectionTest::test8() compare(vertices, vector(1, Point2f(1.0f, 1.0f))); } -void CV_RotatedRectangleIntersectionTest::test9() +TEST(Imgproc_RotatedRectangleIntersection, accuracy_9) { // full intersection, rectangle fully enclosed in the other RotatedRect rect1(Point2f(0, 0), Size2f(2, 2), 0.0f); @@ -280,7 +234,7 @@ void CV_RotatedRectangleIntersectionTest::test9() compare(vertices, targetVertices); } -void CV_RotatedRectangleIntersectionTest::test10() +TEST(Imgproc_RotatedRectangleIntersection, accuracy_10) { // three points of rect2 are inside rect1. RotatedRect rect1(Point2f(0, 0), Size2f(2, 2), 0.0f); @@ -300,7 +254,7 @@ void CV_RotatedRectangleIntersectionTest::test10() compare(vertices, targetVertices); } -void CV_RotatedRectangleIntersectionTest::test11() +TEST(Imgproc_RotatedRectangleIntersection, accuracy_11) { RotatedRect rect1(Point2f(0, 0), Size2f(4, 2), 0.0f); RotatedRect rect2(Point2f(0, 0), Size2f(2, 2), -45.0f); @@ -320,7 +274,7 @@ void CV_RotatedRectangleIntersectionTest::test11() compare(vertices, targetVertices); } -void CV_RotatedRectangleIntersectionTest::test12() +TEST(Imgproc_RotatedRectangleIntersection, accuracy_12) { RotatedRect rect1(Point2f(0, 0), Size2f(2, 2), 0.0f); RotatedRect rect2(Point2f(0, 1), Size2f(1, 1), 0.0f); @@ -338,7 +292,7 @@ void CV_RotatedRectangleIntersectionTest::test12() compare(vertices, targetVertices); } -void CV_RotatedRectangleIntersectionTest::test13() +TEST(Imgproc_RotatedRectangleIntersection, accuracy_13) { RotatedRect rect1(Point2f(0, 0), Size2f(1, 3), 0.0f); RotatedRect rect2(Point2f(0, 1), Size2f(3, 1), 0.0f); @@ -356,7 +310,7 @@ void CV_RotatedRectangleIntersectionTest::test13() compare(vertices, targetVertices); } -void CV_RotatedRectangleIntersectionTest::test14() +TEST(Imgproc_RotatedRectangleIntersection, accuracy_14) { const int kNumTests = 100; const float kWidth = 5; @@ -412,6 +366,4 @@ TEST(Imgproc_RotatedRectangleIntersection, regression_12221_2) EXPECT_LE(intersections.size(), (size_t)8); } -TEST (Imgproc_RotatedRectangleIntersection, accuracy) { CV_RotatedRectangleIntersectionTest test; test.safe_run(); } - }} // namespace