Merge pull request #12608 from dmatveev:gapi
* G-API Initial code upload * Update G-API code base to Sep-24-2018 * The majority of OpenCV buildbot problems was addressed * Update G-API code base to 24-Sep-18 EOD * G-API code base update 25-Sep-2018 * Linux warnings should be resolved * Documentation build should become green * Number of Windows warnings should be reduced * Update G-API code base to 25-Sep-18 EOD * ARMv7 build issue should be resolved * ADE is bumped to latest version and should fix Clang builds for macOS/iOS * Remaining Windows warnings should be resolved * New Linux32 / ARMv7 warnings should be resolved * G-API code base update 25-Sep-2018-EOD2 * Final Windows warnings should be resolved now * G-API code base update 26-Sep-2018 * Fixed issues with precompiled headers in module and its tests
This commit is contained in:
committed by
Alexander Alekhin
parent
852f061b26
commit
29e88e50ff
@@ -0,0 +1,202 @@
|
||||
// This file is part of OpenCV project.
|
||||
// It is subject to the license terms in the LICENSE file found in the top-level directory
|
||||
// of this distribution and at http://opencv.org/license.html.
|
||||
//
|
||||
// Copyright (C) 2018 Intel Corporation
|
||||
|
||||
|
||||
#include "test_precomp.hpp"
|
||||
#include "opencv2/gapi/cpu/gcpukernel.hpp"
|
||||
#include "gapi_mock_kernels.hpp"
|
||||
|
||||
namespace opencv_test
|
||||
{
|
||||
|
||||
namespace
|
||||
{
|
||||
G_TYPED_KERNEL(GClone, <GMat(GMat)>, "org.opencv.test.clone")
|
||||
{
|
||||
static GMatDesc outMeta(GMatDesc in) { return in; }
|
||||
|
||||
};
|
||||
|
||||
GAPI_OCV_KERNEL(GCloneImpl, GClone)
|
||||
{
|
||||
static void run(const cv::Mat& in, cv::Mat &out)
|
||||
{
|
||||
out = in.clone();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
TEST(KernelPackage, Create)
|
||||
{
|
||||
namespace J = Jupiter;
|
||||
auto pkg = cv::gapi::kernels<J::Foo, J::Bar, J::Baz>();
|
||||
EXPECT_EQ(3u, pkg.size());
|
||||
}
|
||||
|
||||
TEST(KernelPackage, Includes)
|
||||
{
|
||||
namespace J = Jupiter;
|
||||
auto pkg = cv::gapi::kernels<J::Foo, J::Bar, J::Baz>();
|
||||
EXPECT_TRUE (pkg.includes<J::Foo>());
|
||||
EXPECT_TRUE (pkg.includes<J::Bar>());
|
||||
EXPECT_TRUE (pkg.includes<J::Baz>());
|
||||
EXPECT_FALSE(pkg.includes<J::Qux>());
|
||||
}
|
||||
|
||||
TEST(KernelPackage, Include)
|
||||
{
|
||||
namespace J = Jupiter;
|
||||
auto pkg = cv::gapi::kernels<J::Foo, J::Bar, J::Baz>();
|
||||
EXPECT_FALSE(pkg.includes<J::Qux>());
|
||||
|
||||
pkg.include<J::Qux>();
|
||||
EXPECT_TRUE(pkg.includes<J::Qux>());
|
||||
}
|
||||
|
||||
TEST(KernelPackage, CreateHetero)
|
||||
{
|
||||
namespace J = Jupiter;
|
||||
namespace S = Saturn;
|
||||
auto pkg = cv::gapi::kernels<J::Foo, J::Bar, J::Baz, S::Qux>();
|
||||
EXPECT_EQ(4u, pkg.size());
|
||||
}
|
||||
|
||||
TEST(KernelPackage, IncludesHetero)
|
||||
{
|
||||
namespace J = Jupiter;
|
||||
namespace S = Saturn;
|
||||
auto pkg = cv::gapi::kernels<J::Foo, J::Bar, J::Baz, S::Qux>();
|
||||
EXPECT_TRUE (pkg.includes<J::Foo>());
|
||||
EXPECT_TRUE (pkg.includes<J::Bar>());
|
||||
EXPECT_TRUE (pkg.includes<J::Baz>());
|
||||
EXPECT_FALSE(pkg.includes<J::Qux>());
|
||||
EXPECT_TRUE (pkg.includes<S::Qux>());
|
||||
}
|
||||
|
||||
TEST(KernelPackage, IncludeHetero)
|
||||
{
|
||||
namespace J = Jupiter;
|
||||
namespace S = Saturn;
|
||||
auto pkg = cv::gapi::kernels<J::Foo, J::Bar, J::Baz>();
|
||||
EXPECT_FALSE(pkg.includes<J::Qux>());
|
||||
EXPECT_FALSE(pkg.includes<S::Qux>());
|
||||
|
||||
pkg.include<S::Qux>();
|
||||
EXPECT_FALSE(pkg.includes<J::Qux>());
|
||||
EXPECT_TRUE (pkg.includes<S::Qux>());
|
||||
}
|
||||
|
||||
TEST(KernelPackage, Unite_REPLACE_Full)
|
||||
{
|
||||
namespace J = Jupiter;
|
||||
namespace S = Saturn;
|
||||
auto j_pkg = cv::gapi::kernels<J::Foo, J::Bar, J::Baz>();
|
||||
auto s_pkg = cv::gapi::kernels<S::Foo, S::Bar, S::Baz>();
|
||||
auto u_pkg = cv::gapi::combine(j_pkg, s_pkg, cv::unite_policy::REPLACE);
|
||||
|
||||
EXPECT_EQ(3u, u_pkg.size());
|
||||
EXPECT_FALSE(u_pkg.includes<J::Foo>());
|
||||
EXPECT_FALSE(u_pkg.includes<J::Bar>());
|
||||
EXPECT_FALSE(u_pkg.includes<J::Baz>());
|
||||
EXPECT_TRUE (u_pkg.includes<S::Foo>());
|
||||
EXPECT_TRUE (u_pkg.includes<S::Bar>());
|
||||
EXPECT_TRUE (u_pkg.includes<S::Baz>());
|
||||
}
|
||||
|
||||
TEST(KernelPackage, Unite_REPLACE_Partial)
|
||||
{
|
||||
namespace J = Jupiter;
|
||||
namespace S = Saturn;
|
||||
auto j_pkg = cv::gapi::kernels<J::Foo, J::Bar>();
|
||||
auto s_pkg = cv::gapi::kernels<S::Bar>();
|
||||
auto u_pkg = cv::gapi::combine(j_pkg, s_pkg, cv::unite_policy::REPLACE);
|
||||
|
||||
EXPECT_EQ(2u, u_pkg.size());
|
||||
EXPECT_TRUE (u_pkg.includes<J::Foo>());
|
||||
EXPECT_FALSE(u_pkg.includes<J::Bar>());
|
||||
EXPECT_TRUE (u_pkg.includes<S::Bar>());
|
||||
}
|
||||
|
||||
TEST(KernelPackage, Unite_REPLACE_Append)
|
||||
{
|
||||
namespace J = Jupiter;
|
||||
namespace S = Saturn;
|
||||
auto j_pkg = cv::gapi::kernels<J::Foo, J::Bar>();
|
||||
auto s_pkg = cv::gapi::kernels<S::Qux>();
|
||||
auto u_pkg = cv::gapi::combine(j_pkg, s_pkg, cv::unite_policy::REPLACE);
|
||||
|
||||
EXPECT_EQ(3u, u_pkg.size());
|
||||
EXPECT_TRUE(u_pkg.includes<J::Foo>());
|
||||
EXPECT_TRUE(u_pkg.includes<J::Bar>());
|
||||
EXPECT_TRUE(u_pkg.includes<S::Qux>());
|
||||
}
|
||||
|
||||
TEST(KernelPackage, Unite_KEEP_AllDups)
|
||||
{
|
||||
namespace J = Jupiter;
|
||||
namespace S = Saturn;
|
||||
auto j_pkg = cv::gapi::kernels<J::Foo, J::Bar, J::Baz>();
|
||||
auto s_pkg = cv::gapi::kernels<S::Foo, S::Bar, S::Baz>();
|
||||
auto u_pkg = cv::gapi::combine(j_pkg ,s_pkg, cv::unite_policy::KEEP);
|
||||
|
||||
EXPECT_EQ(6u, u_pkg.size());
|
||||
EXPECT_TRUE(u_pkg.includes<J::Foo>());
|
||||
EXPECT_TRUE(u_pkg.includes<J::Bar>());
|
||||
EXPECT_TRUE(u_pkg.includes<J::Baz>());
|
||||
EXPECT_TRUE(u_pkg.includes<S::Foo>());
|
||||
EXPECT_TRUE(u_pkg.includes<S::Bar>());
|
||||
EXPECT_TRUE(u_pkg.includes<S::Baz>());
|
||||
}
|
||||
|
||||
TEST(KernelPackage, Unite_KEEP_Append_NoDups)
|
||||
{
|
||||
namespace J = Jupiter;
|
||||
namespace S = Saturn;
|
||||
auto j_pkg = cv::gapi::kernels<J::Foo, J::Bar>();
|
||||
auto s_pkg = cv::gapi::kernels<S::Qux>();
|
||||
auto u_pkg = cv::gapi::combine(j_pkg, s_pkg, cv::unite_policy::KEEP);
|
||||
|
||||
EXPECT_EQ(3u, u_pkg.size());
|
||||
EXPECT_TRUE(u_pkg.includes<J::Foo>());
|
||||
EXPECT_TRUE(u_pkg.includes<J::Bar>());
|
||||
EXPECT_TRUE(u_pkg.includes<S::Qux>());
|
||||
}
|
||||
|
||||
TEST(KernelPackage, TestWithEmptyLHS)
|
||||
{
|
||||
namespace J = Jupiter;
|
||||
auto lhs = cv::gapi::kernels<>();
|
||||
auto rhs = cv::gapi::kernels<J::Foo>();
|
||||
auto pkg = cv::gapi::combine(lhs, rhs, cv::unite_policy::KEEP);
|
||||
|
||||
EXPECT_EQ(1u, pkg.size());
|
||||
EXPECT_TRUE(pkg.includes<J::Foo>());
|
||||
}
|
||||
|
||||
TEST(KernelPackage, TestWithEmptyRHS)
|
||||
{
|
||||
namespace J = Jupiter;
|
||||
auto lhs = cv::gapi::kernels<J::Foo>();
|
||||
auto rhs = cv::gapi::kernels<>();
|
||||
auto pkg = cv::gapi::combine(lhs, rhs, cv::unite_policy::KEEP);
|
||||
|
||||
EXPECT_EQ(1u, pkg.size());
|
||||
EXPECT_TRUE(pkg.includes<J::Foo>());
|
||||
}
|
||||
|
||||
TEST(KernelPackage, Can_Use_Custom_Kernel)
|
||||
{
|
||||
cv::GMat in[2];
|
||||
auto out = GClone::on(cv::gapi::add(in[0], in[1]));
|
||||
const auto in_meta = cv::GMetaArg(cv::GMatDesc{CV_8U,1,cv::Size(32,32)});
|
||||
|
||||
auto pkg = cv::gapi::kernels<GCloneImpl>();
|
||||
|
||||
EXPECT_NO_THROW(cv::GComputation(cv::GIn(in[0], in[1]), cv::GOut(out)).
|
||||
compile({in_meta, in_meta}, cv::compile_args(pkg)));
|
||||
}
|
||||
|
||||
} // namespace opencv_test
|
||||
Reference in New Issue
Block a user