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); }