diff --git a/modules/core/test/test_arithm.cpp b/modules/core/test/test_arithm.cpp index 20c0cbce26..332e7d17c6 100644 --- a/modules/core/test/test_arithm.cpp +++ b/modules/core/test/test_arithm.cpp @@ -1640,7 +1640,7 @@ INSTANTIATE_TEST_CASE_P(Core_CartToPolarToCart, ElemWiseTest, ::testing::Values( // Mixed Type Arithmetic Operations -typedef std::tuple> SomeType; +typedef std::tuple, int> SomeType; class ArithmMixedTest : public ::testing::TestWithParam {}; TEST_P(ArithmMixedTest, accuracy) @@ -1649,7 +1649,10 @@ TEST_P(ArithmMixedTest, accuracy) ElemWiseOpPtr op = std::get<0>(p); int srcDepth = std::get<0>(std::get<1>(p)); int dstDepth = std::get<1>(std::get<1>(p)); + int channels = std::get<2>(p); + int srcType = CV_MAKETYPE(srcDepth, channels); + int dstType = CV_MAKETYPE(dstDepth, channels); op->flags |= BaseElemWiseOp::MIXED_TYPE; int testIdx = 0; RNG rng((uint64)ARITHM_RNG_SEED); @@ -1664,15 +1667,15 @@ TEST_P(ArithmMixedTest, accuracy) int ninputs = op->ninputs; vector src(ninputs); for(int i = 0; i < ninputs; i++ ) - src[i] = cvtest::randomMat(rng, size, srcDepth, minval, maxval, true); + src[i] = cvtest::randomMat(rng, size, srcType, minval, maxval, true); Mat dst0, dst, mask; if( haveMask ) { mask = cvtest::randomMat(rng, size, CV_8UC1, 0, 2, true); } - dst0 = cvtest::randomMat(rng, size, dstDepth, minval, maxval, false); - dst = cvtest::randomMat(rng, size, dstDepth, minval, maxval, true); + dst0 = cvtest::randomMat(rng, size, dstType, minval, maxval, false); + dst = cvtest::randomMat(rng, size, dstType, minval, maxval, true); cvtest::copy(dst, dst0); op->generateScalars(dstDepth, rng); @@ -1692,53 +1695,62 @@ INSTANTIATE_TEST_CASE_P(Core_AddMixed, ArithmMixedTest, ::testing::Values(std::tuple{CV_8U, CV_16U}, std::tuple{CV_8S, CV_16S}, std::tuple{CV_8U, CV_32F}, - std::tuple{CV_8S, CV_32F}))); + std::tuple{CV_8S, CV_32F}), + ::testing::Values(1, 3, 4))); INSTANTIATE_TEST_CASE_P(Core_AddScalarMixed, ArithmMixedTest, ::testing::Combine(::testing::Values(ElemWiseOpPtr(new AddSOp)), ::testing::Values(std::tuple{CV_8U, CV_16U}, std::tuple{CV_8S, CV_16S}, std::tuple{CV_8U, CV_32F}, - std::tuple{CV_8S, CV_32F}))); + std::tuple{CV_8S, CV_32F}), + ::testing::Values(1, 3, 4))); INSTANTIATE_TEST_CASE_P(Core_AddWeightedMixed, ArithmMixedTest, ::testing::Combine(::testing::Values(ElemWiseOpPtr(new AddWeightedOp)), ::testing::Values(std::tuple{CV_8U, CV_16U}, std::tuple{CV_8S, CV_16S}, std::tuple{CV_8U, CV_32F}, - std::tuple{CV_8S, CV_32F}))); + std::tuple{CV_8S, CV_32F}), + ::testing::Values(1, 3, 4))); INSTANTIATE_TEST_CASE_P(Core_SubMixed, ArithmMixedTest, ::testing::Combine(::testing::Values(ElemWiseOpPtr(new SubOp)), ::testing::Values(std::tuple{CV_8U, CV_16U}, std::tuple{CV_8S, CV_16S}, std::tuple{CV_8U, CV_32F}, - std::tuple{CV_8S, CV_32F}))); + std::tuple{CV_8S, CV_32F}), + ::testing::Values(1, 3, 4))); INSTANTIATE_TEST_CASE_P(Core_SubScalarMinusArgMixed, ArithmMixedTest, ::testing::Combine(::testing::Values(ElemWiseOpPtr(new SubRSOp)), ::testing::Values(std::tuple{CV_8U, CV_16U}, std::tuple{CV_8S, CV_16S}, std::tuple{CV_8U, CV_32F}, - std::tuple{CV_8S, CV_32F}))); + std::tuple{CV_8S, CV_32F}), + ::testing::Values(1, 3, 4))); INSTANTIATE_TEST_CASE_P(Core_MulMixed, ArithmMixedTest, ::testing::Combine(::testing::Values(ElemWiseOpPtr(new MulOp)), ::testing::Values(std::tuple{CV_8U, CV_16U}, std::tuple{CV_8S, CV_16S}, std::tuple{CV_8U, CV_32F}, - std::tuple{CV_8S, CV_32F}))); + std::tuple{CV_8S, CV_32F}), + ::testing::Values(1, 3, 4))); INSTANTIATE_TEST_CASE_P(Core_MulScalarMixed, ArithmMixedTest, ::testing::Combine(::testing::Values(ElemWiseOpPtr(new MulSOp)), ::testing::Values(std::tuple{CV_8U, CV_16U}, std::tuple{CV_8S, CV_16S}, std::tuple{CV_8U, CV_32F}, - std::tuple{CV_8S, CV_32F}))); + std::tuple{CV_8S, CV_32F}), + ::testing::Values(1, 3, 4))); INSTANTIATE_TEST_CASE_P(Core_DivMixed, ArithmMixedTest, ::testing::Combine(::testing::Values(ElemWiseOpPtr(new DivOp)), ::testing::Values(std::tuple{CV_8U, CV_16U}, std::tuple{CV_8S, CV_16S}, std::tuple{CV_8U, CV_32F}, - std::tuple{CV_8S, CV_32F}))); + std::tuple{CV_8S, CV_32F}), + ::testing::Values(1, 3, 4))); INSTANTIATE_TEST_CASE_P(Core_RecipMixed, ArithmMixedTest, ::testing::Combine(::testing::Values(ElemWiseOpPtr(new RecipOp)), - ::testing::Values(std::tuple{CV_8U, CV_32F}, - std::tuple{CV_8S, CV_32F}))); + ::testing::Values(std::tuple{CV_8U, CV_16U}, + std::tuple{CV_8S, CV_32F}), + ::testing::Values(1, 3, 4))); TEST(Core_ArithmMask, uninitialized) {