From aa23a842a1042f7ef473c316f14db5fa27f35fc1 Mon Sep 17 00:00:00 2001 From: Konstantin Matskevich Date: Thu, 23 Jan 2014 17:54:53 +0400 Subject: [PATCH 1/3] test for failure --- modules/core/test/test_umat.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/modules/core/test/test_umat.cpp b/modules/core/test/test_umat.cpp index cfea5c5931..270de1323f 100644 --- a/modules/core/test/test_umat.cpp +++ b/modules/core/test/test_umat.cpp @@ -248,3 +248,28 @@ TEST(UMat, Sync) EXPECT_EQ(0, cv::norm(um.getMat(ACCESS_READ), cv::Mat(um.size(), um.type(), 19), NORM_INF)); } + +TEST(UMat, setOpenCL) +{ + Mat m = (Mat_(3,3)<<0,1,2,3,4,5,6,7,8); + + ocl::setUseOpenCL(true); + UMat um1; + m.copyTo(um1); + + ocl::setUseOpenCL(false); + UMat um2; + m.copyTo(um2); + + ocl::setUseOpenCL(true); + countNonZero(um1); + countNonZero(um2); + um1.copyTo(um2); + um2.copyTo(um1); + + ocl::setUseOpenCL(false); + countNonZero(um1); + countNonZero(um2); + um1.copyTo(um2); + um2.copyTo(um1); +} From cc47edb8504bb9e500667540183ee9e1d7fc4c0a Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Sun, 2 Feb 2014 15:31:14 +0400 Subject: [PATCH 2/3] more strict checks and reseting state --- modules/core/test/test_umat.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/modules/core/test/test_umat.cpp b/modules/core/test/test_umat.cpp index 270de1323f..4c3f09a17d 100644 --- a/modules/core/test/test_umat.cpp +++ b/modules/core/test/test_umat.cpp @@ -40,6 +40,7 @@ //M*/ #include "test_precomp.hpp" +#include "opencv2/ts/ocl_test.hpp" #include #include @@ -249,8 +250,13 @@ TEST(UMat, Sync) EXPECT_EQ(0, cv::norm(um.getMat(ACCESS_READ), cv::Mat(um.size(), um.type(), 19), NORM_INF)); } +#define EXPECT_MAT_NEAR(m1, m2) ASSERT_EQ(0, cv::norm(m1, m1, cv::NORM_INF)) + TEST(UMat, setOpenCL) { + // save the current state + bool useOCL = ocl::useOpenCL(); + Mat m = (Mat_(3,3)<<0,1,2,3,4,5,6,7,8); ocl::setUseOpenCL(true); @@ -264,12 +270,25 @@ TEST(UMat, setOpenCL) ocl::setUseOpenCL(true); countNonZero(um1); countNonZero(um2); + um1.copyTo(um2); + EXPECT_MAT_NEAR(um1, um2); + EXPECT_MAT_NEAR(um1, m); um2.copyTo(um1); + EXPECT_MAT_NEAR(um1, m); + EXPECT_MAT_NEAR(um1, um2); ocl::setUseOpenCL(false); countNonZero(um1); countNonZero(um2); + um1.copyTo(um2); + EXPECT_MAT_NEAR(um1, um2); + EXPECT_MAT_NEAR(um1, m); um2.copyTo(um1); + EXPECT_MAT_NEAR(um1, um2); + EXPECT_MAT_NEAR(um1, m); + + // reset state to the previous one + ocl::setUseOpenCL(useOCL); } From ffeb2231508a7bf33a9927512fd6b920446e7b48 Mon Sep 17 00:00:00 2001 From: Konstantin Matskevich Date: Thu, 23 Jan 2014 17:54:53 +0400 Subject: [PATCH 3/3] test for failure --- modules/core/test/test_umat.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/core/test/test_umat.cpp b/modules/core/test/test_umat.cpp index 4c3f09a17d..d30b928d17 100644 --- a/modules/core/test/test_umat.cpp +++ b/modules/core/test/test_umat.cpp @@ -40,7 +40,6 @@ //M*/ #include "test_precomp.hpp" -#include "opencv2/ts/ocl_test.hpp" #include #include