mirror of
https://github.com/opencv/opencv.git
synced 2026-07-29 15:23:05 +04:00
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,119 @@
|
||||
// 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 "gapi_mock_kernels.hpp"
|
||||
|
||||
namespace opencv_test
|
||||
{
|
||||
|
||||
TEST(Lookup, CreateOrder)
|
||||
{
|
||||
const auto order = cv::gapi::lookup_order({Jupiter::backend(),
|
||||
Saturn::backend()});
|
||||
EXPECT_EQ(2u, order.size());
|
||||
EXPECT_EQ(Jupiter::backend(), order[0]);
|
||||
EXPECT_EQ(Saturn ::backend(), order[1]);
|
||||
}
|
||||
|
||||
TEST(Lookup, NoOrder)
|
||||
{
|
||||
namespace J = Jupiter;
|
||||
namespace S = Saturn;
|
||||
const auto pkg = cv::gapi::kernels<J::Foo, J::Bar, J::Baz,
|
||||
S::Foo, S::Bar, S::Baz>();
|
||||
|
||||
EXPECT_NO_THROW (pkg.lookup<I::Foo>());
|
||||
EXPECT_NO_THROW (pkg.lookup<I::Bar>());
|
||||
EXPECT_NO_THROW (pkg.lookup<I::Baz>());
|
||||
EXPECT_ANY_THROW(pkg.lookup<I::Qux>());
|
||||
}
|
||||
|
||||
TEST(Lookup, Only_Jupiter)
|
||||
{
|
||||
namespace J = Jupiter;
|
||||
namespace S = Saturn;
|
||||
const auto pkg = cv::gapi::kernels<J::Foo, J::Bar, J::Baz,
|
||||
S::Foo, S::Bar, S::Baz>();
|
||||
|
||||
auto order = cv::gapi::lookup_order({J::backend()});
|
||||
|
||||
EXPECT_EQ(J::backend(), pkg.lookup<I::Foo>(order));
|
||||
EXPECT_EQ(J::backend(), pkg.lookup<I::Bar>(order));
|
||||
EXPECT_EQ(J::backend(), pkg.lookup<I::Baz>(order));
|
||||
EXPECT_ANY_THROW(pkg.lookup<I::Qux>(order));
|
||||
}
|
||||
|
||||
TEST(Lookup, Only_Saturn)
|
||||
{
|
||||
namespace J = Jupiter;
|
||||
namespace S = Saturn;
|
||||
const auto pkg = cv::gapi::kernels<J::Foo, J::Bar, J::Baz,
|
||||
S::Foo, S::Bar, S::Baz>();
|
||||
|
||||
auto order = cv::gapi::lookup_order({S::backend()});
|
||||
|
||||
EXPECT_EQ(S::backend(), pkg.lookup<I::Foo>(order));
|
||||
EXPECT_EQ(S::backend(), pkg.lookup<I::Bar>(order));
|
||||
EXPECT_EQ(S::backend(), pkg.lookup<I::Baz>(order));
|
||||
EXPECT_ANY_THROW(pkg.lookup<I::Qux>(order));
|
||||
}
|
||||
|
||||
TEST(Lookup, With_Order)
|
||||
{
|
||||
namespace J = Jupiter;
|
||||
namespace S = Saturn;
|
||||
const auto pkg = cv::gapi::kernels<J::Foo, J::Bar, J::Baz,
|
||||
S::Foo, S::Bar, S::Baz>();
|
||||
|
||||
auto prefer_j = cv::gapi::lookup_order({J::backend(), S::backend()});
|
||||
EXPECT_EQ(J::backend(), pkg.lookup<I::Foo>(prefer_j));
|
||||
EXPECT_EQ(J::backend(), pkg.lookup<I::Bar>(prefer_j));
|
||||
EXPECT_EQ(J::backend(), pkg.lookup<I::Baz>(prefer_j));
|
||||
EXPECT_ANY_THROW(pkg.lookup<I::Qux>(prefer_j));
|
||||
|
||||
auto prefer_s = cv::gapi::lookup_order({S::backend(), J::backend()});
|
||||
EXPECT_EQ(S::backend(), pkg.lookup<I::Foo>(prefer_s));
|
||||
EXPECT_EQ(S::backend(), pkg.lookup<I::Bar>(prefer_s));
|
||||
EXPECT_EQ(S::backend(), pkg.lookup<I::Baz>(prefer_s));
|
||||
EXPECT_ANY_THROW(pkg.lookup<I::Qux>(prefer_s));
|
||||
}
|
||||
|
||||
TEST(Lookup, NoOverlap)
|
||||
{
|
||||
namespace J = Jupiter;
|
||||
namespace S = Saturn;
|
||||
const auto pkg = cv::gapi::kernels<J::Foo, J::Bar, S::Baz, S::Qux>();
|
||||
EXPECT_EQ(J::backend(), pkg.lookup<I::Foo>());
|
||||
EXPECT_EQ(J::backend(), pkg.lookup<I::Bar>());
|
||||
EXPECT_EQ(S::backend(), pkg.lookup<I::Baz>());
|
||||
EXPECT_EQ(S::backend(), pkg.lookup<I::Qux>());
|
||||
}
|
||||
|
||||
TEST(Lookup, ExtraBackend)
|
||||
{
|
||||
namespace J = Jupiter;
|
||||
namespace S = Saturn;
|
||||
const auto pkg = cv::gapi::kernels<J::Foo, J::Bar, J::Baz>();
|
||||
|
||||
// Even if pkg doesn't contain S kernels while S is preferable,
|
||||
// it should work.
|
||||
const auto prefer_sj = cv::gapi::lookup_order({S::backend(), J::backend()});
|
||||
EXPECT_EQ(J::backend(), pkg.lookup<I::Foo>(prefer_sj));
|
||||
EXPECT_EQ(J::backend(), pkg.lookup<I::Bar>(prefer_sj));
|
||||
EXPECT_EQ(J::backend(), pkg.lookup<I::Baz>(prefer_sj));
|
||||
|
||||
// If search scope is limited to S only, neither J nor S kernels
|
||||
// shouldn't be found
|
||||
const auto only_s = cv::gapi::lookup_order({S::backend()});
|
||||
EXPECT_ANY_THROW(pkg.lookup<I::Foo>(only_s));
|
||||
EXPECT_ANY_THROW(pkg.lookup<I::Bar>(only_s));
|
||||
EXPECT_ANY_THROW(pkg.lookup<I::Baz>(only_s));
|
||||
}
|
||||
|
||||
} // namespace opencv_test
|
||||
Reference in New Issue
Block a user