Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
72ccb5fe
Commit
72ccb5fe
authored
Aug 13, 2019
by
Alexander Alekhin
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #15283 from smirnov-alexey:gapi_transform_tests
parents
bf0765fc
4c168e95
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
113 additions
and
37 deletions
+113
-37
gapi_transform_tests.cpp
modules/gapi/test/gapi_transform_tests.cpp
+113
-37
No files found.
modules/gapi/test/gapi_transform_tests.cpp
View file @
72ccb5fe
...
...
@@ -23,6 +23,9 @@ using GMat3 = std::tuple<GMat, GMat, GMat>;
using
GScalar
=
cv
::
GScalar
;
template
<
typename
T
>
using
GArray
=
cv
::
GArray
<
T
>
;
using
ArrayT
=
int
;
using
WrongArrayT
=
char
;
GAPI_TRANSFORM
(
gmat_in_gmat_out
,
<
GMat
(
GMat
)
>
,
"gmat_in_gmat_out"
)
{
static
GMat
pattern
(
GMat
)
{
return
{};
}
...
...
@@ -59,22 +62,34 @@ GAPI_TRANSFORM(gmat_in_gsc_out, <GScalar(GMat)>, "gmat_in_gsc_out")
static
GScalar
substitute
(
GMat
)
{
return
{};
}
};
GAPI_TRANSFORM
(
garr_in_gmat_out
,
<
GMat
(
GArray
<
int
>
)
>
,
"garr_in_gmat_out"
)
GAPI_TRANSFORM
(
garr_in_gmat_out
,
<
GMat
(
GArray
<
ArrayT
>
)
>
,
"garr_in_gmat_out"
)
{
static
GMat
pattern
(
GArray
<
ArrayT
>
)
{
return
{};
}
static
GMat
substitute
(
GArray
<
ArrayT
>
)
{
return
{};
}
};
GAPI_TRANSFORM
(
gmat_in_garr_out
,
<
GArray
<
ArrayT
>
(
GMat
)
>
,
"gmat_in_garr_out"
)
{
static
G
Mat
pattern
(
GArray
<
int
>
)
{
return
{};
}
static
G
Mat
substitute
(
GArray
<
int
>
)
{
return
{};
}
static
G
Array
<
ArrayT
>
pattern
(
GMat
)
{
return
{};
}
static
G
Array
<
ArrayT
>
substitute
(
GMat
)
{
return
{};
}
};
GAPI_TRANSFORM
(
g
mat_in_garr_out
,
<
GArray
<
int
>
(
GMat
)
>
,
"gmat_in_gar
r_out"
)
GAPI_TRANSFORM
(
g
arr_in_gscalar_out
,
<
GScalar
(
GArray
<
ArrayT
>
)
>
,
"garr_in_gscala
r_out"
)
{
static
G
Array
<
int
>
pattern
(
GMat
)
{
return
{};
}
static
G
Array
<
int
>
substitute
(
GMat
)
{
return
{};
}
static
G
Scalar
pattern
(
GArray
<
ArrayT
>
)
{
return
{};
}
static
G
Scalar
substitute
(
GArray
<
ArrayT
>
)
{
return
{};
}
};
GAPI_TRANSFORM
(
g
mat_gsc_garray_in_gmat2_out
,
<
GMat2
(
GMat
,
GScalar
,
GArray
<
int
>
)
>
,
"gmat_gsc_garray_in_gmat2
_out"
)
GAPI_TRANSFORM
(
g
scalar_in_garr_out
,
<
GArray
<
ArrayT
>
(
GScalar
)
>
,
"gscalar_in_garr
_out"
)
{
static
GMat2
pattern
(
GMat
,
GScalar
,
GArray
<
int
>
)
{
return
{};
}
static
GMat2
substitute
(
GMat
,
GScalar
,
GArray
<
int
>
)
{
return
{};
}
static
GArray
<
ArrayT
>
pattern
(
GScalar
)
{
return
{};
}
static
GArray
<
ArrayT
>
substitute
(
GScalar
)
{
return
{};
}
};
GAPI_TRANSFORM
(
gmat_gsc_garray_in_gmat2_out
,
<
GMat2
(
GMat
,
GScalar
,
GArray
<
ArrayT
>
)
>
,
"gmat_gsc_garray_in_gmat2_out"
)
{
static
GMat2
pattern
(
GMat
,
GScalar
,
GArray
<
ArrayT
>
)
{
return
{};
}
static
GMat2
substitute
(
GMat
,
GScalar
,
GArray
<
ArrayT
>
)
{
return
{};
}
};
}
// anonymous namespace
...
...
@@ -90,11 +105,13 @@ TEST(KernelPackageTransform, CreatePackage)
,
gmat_in_gsc_out
,
garr_in_gmat_out
,
gmat_in_garr_out
,
garr_in_gscalar_out
,
gscalar_in_garr_out
,
gmat_gsc_garray_in_gmat2_out
>
();
auto
tr
=
pkg
.
get_transformations
();
EXPECT_EQ
(
9
u
,
tr
.
size
());
EXPECT_EQ
(
11
u
,
tr
.
size
());
}
TEST
(
KernelPackageTransform
,
Include
)
...
...
@@ -116,14 +133,15 @@ TEST(KernelPackageTransform, Combine)
EXPECT_EQ
(
2u
,
tr
.
size
());
}
namespace
{
namespace
{
template
<
typename
T
>
inline
bool
ProtoContainsT
(
const
cv
::
GProtoArg
&
arg
)
{
return
cv
::
GProtoArg
::
index_of
<
T
>
()
==
arg
.
index
();
}
}
// anonymous namespace
TEST
(
KernelPackageTransform
,
gmat_gsc_
in_gmat
_out
)
TEST
(
KernelPackageTransform
,
gmat_gsc_
garray_in_gmat2
_out
)
{
auto
tr
=
gmat_gsc_garray_in_gmat2_out
::
transformation
();
...
...
@@ -135,8 +153,8 @@ TEST(KernelPackageTransform, gmat_gsc_in_gmat_out)
EXPECT_TRUE
(
ProtoContainsT
<
GMat
>
(
p
.
m_ins
[
0
]));
EXPECT_TRUE
(
ProtoContainsT
<
GScalar
>
(
p
.
m_ins
[
1
]));
EXPECT_TRUE
(
ProtoContainsT
<
cv
::
detail
::
GArrayU
>
(
p
.
m_ins
[
2
]));
EXPECT_TRUE
(
cv
::
util
::
get
<
cv
::
detail
::
GArrayU
>
(
p
.
m_ins
[
2
]).
holds
<
int
>
());
EXPECT_FALSE
(
cv
::
util
::
get
<
cv
::
detail
::
GArrayU
>
(
p
.
m_ins
[
2
]).
holds
<
char
>
());
EXPECT_TRUE
(
cv
::
util
::
get
<
cv
::
detail
::
GArrayU
>
(
p
.
m_ins
[
2
]).
holds
<
ArrayT
>
());
EXPECT_FALSE
(
cv
::
util
::
get
<
cv
::
detail
::
GArrayU
>
(
p
.
m_ins
[
2
]).
holds
<
WrongArrayT
>
());
EXPECT_TRUE
(
ProtoContainsT
<
GMat
>
(
p
.
m_outs
[
0
]));
EXPECT_TRUE
(
ProtoContainsT
<
GMat
>
(
p
.
m_outs
[
1
]));
...
...
@@ -146,44 +164,102 @@ TEST(KernelPackageTransform, gmat_gsc_in_gmat_out)
check
(
tr
.
substitute
());
}
TEST
(
KernelPackageTransform
,
gmat_in_garr_out
)
namespace
{
auto
tr
=
gmat_in_garr_out
::
transformation
();
template
<
typename
InType
,
typename
OutType
>
typename
std
::
enable_if
<
(
cv
::
detail
::
GTypeTraits
<
OutType
>::
kind
==
cv
::
detail
::
ArgKind
::
GARRAY
),
void
>::
type
array_check
(
const
cv
::
GComputation
::
Priv
&
p
)
{
EXPECT_TRUE
(
ProtoContainsT
<
InType
>
(
p
.
m_ins
[
0
]));
auto
check
=
[](
const
cv
::
GComputation
&
comp
){
EXPECT_TRUE
(
ProtoContainsT
<
cv
::
detail
::
GArrayU
>
(
p
.
m_outs
[
0
]));
EXPECT_TRUE
(
cv
::
util
::
get
<
cv
::
detail
::
GArrayU
>
(
p
.
m_outs
[
0
]).
holds
<
ArrayT
>
());
EXPECT_FALSE
(
cv
::
util
::
get
<
cv
::
detail
::
GArrayU
>
(
p
.
m_outs
[
0
]).
holds
<
WrongArrayT
>
());
}
template
<
typename
InType
,
typename
OutType
>
typename
std
::
enable_if
<
(
cv
::
detail
::
GTypeTraits
<
InType
>::
kind
==
cv
::
detail
::
ArgKind
::
GARRAY
),
void
>::
type
array_check
(
const
cv
::
GComputation
::
Priv
&
p
)
{
EXPECT_TRUE
(
ProtoContainsT
<
OutType
>
(
p
.
m_outs
[
0
]));
EXPECT_TRUE
(
ProtoContainsT
<
cv
::
detail
::
GArrayU
>
(
p
.
m_ins
[
0
]));
EXPECT_TRUE
(
cv
::
util
::
get
<
cv
::
detail
::
GArrayU
>
(
p
.
m_ins
[
0
]).
holds
<
ArrayT
>
());
EXPECT_FALSE
(
cv
::
util
::
get
<
cv
::
detail
::
GArrayU
>
(
p
.
m_ins
[
0
]).
holds
<
WrongArrayT
>
());
}
template
<
typename
InType
,
typename
OutType
>
typename
std
::
enable_if
<
(
cv
::
detail
::
GTypeTraits
<
InType
>::
kind
==
cv
::
detail
::
ArgKind
::
GARRAY
||
cv
::
detail
::
GTypeTraits
<
OutType
>::
kind
==
cv
::
detail
::
ArgKind
::
GARRAY
),
void
>::
type
args_check
(
const
cv
::
GComputation
&
comp
)
{
const
auto
&
p
=
comp
.
priv
();
EXPECT_EQ
(
1u
,
p
.
m_ins
.
size
());
EXPECT_EQ
(
1u
,
p
.
m_outs
.
size
());
EXPECT_TRUE
(
ProtoContainsT
<
GMat
>
(
p
.
m_ins
[
0
]));
EXPECT_TRUE
(
ProtoContainsT
<
cv
::
detail
::
GArrayU
>
(
p
.
m_outs
[
0
]));
EXPECT_TRUE
(
cv
::
util
::
get
<
cv
::
detail
::
GArrayU
>
(
p
.
m_outs
[
0
]).
holds
<
int
>
());
EXPECT_FALSE
(
cv
::
util
::
get
<
cv
::
detail
::
GArrayU
>
(
p
.
m_outs
[
0
]).
holds
<
float
>
());
array_check
<
InType
,
OutType
>
(
p
);
};
check
(
tr
.
pattern
());
check
(
tr
.
substitute
());
template
<
typename
InType
,
typename
OutType
>
typename
std
::
enable_if
<
(
cv
::
detail
::
GTypeTraits
<
InType
>::
kind
!=
cv
::
detail
::
ArgKind
::
GARRAY
&&
cv
::
detail
::
GTypeTraits
<
OutType
>::
kind
!=
cv
::
detail
::
ArgKind
::
GARRAY
),
void
>::
type
args_check
(
const
cv
::
GComputation
&
comp
)
{
const
auto
&
p
=
comp
.
priv
();
EXPECT_EQ
(
1u
,
p
.
m_ins
.
size
());
EXPECT_EQ
(
1u
,
p
.
m_outs
.
size
());
EXPECT_TRUE
(
ProtoContainsT
<
InType
>
(
p
.
m_ins
[
0
]));
EXPECT_TRUE
(
ProtoContainsT
<
OutType
>
(
p
.
m_outs
[
0
]));
}
}
// anonymous namespace
template
<
typename
Transformation
,
typename
InType
,
typename
OutType
>
static
void
transformTest
()
{
auto
tr
=
Transformation
::
transformation
();
args_check
<
InType
,
OutType
>
(
tr
.
pattern
());
args_check
<
InType
,
OutType
>
(
tr
.
substitute
());
}
TEST
(
KernelPackageTransform
,
g
arr
_in_gmat_out
)
TEST
(
KernelPackageTransform
,
g
mat
_in_gmat_out
)
{
auto
tr
=
garr_in_gmat_out
::
transformation
();
transformTest
<
gmat_in_gmat_out
,
GMat
,
GMat
>
();
}
auto
check
=
[](
const
cv
::
GComputation
&
comp
){
const
auto
&
p
=
comp
.
priv
();
EXPECT_EQ
(
1u
,
p
.
m_ins
.
size
()
);
EXPECT_EQ
(
1u
,
p
.
m_outs
.
size
());
TEST
(
KernelPackageTransform
,
gmatp_in_gmatp_out
)
{
transformTest
<
gmatp_in_gmatp_out
,
GMatP
,
GMatP
>
(
);
}
EXPECT_TRUE
(
ProtoContainsT
<
cv
::
detail
::
GArrayU
>
(
p
.
m_ins
[
0
]));
EXPECT_TRUE
(
cv
::
util
::
get
<
cv
::
detail
::
GArrayU
>
(
p
.
m_ins
[
0
]).
holds
<
int
>
());
EXPECT_FALSE
(
cv
::
util
::
get
<
cv
::
detail
::
GArrayU
>
(
p
.
m_ins
[
0
]).
holds
<
bool
>
());
TEST
(
KernelPackageTransform
,
gsc_in_gmat_out
)
{
transformTest
<
gsc_in_gmat_out
,
GScalar
,
GMat
>
();
}
EXPECT_TRUE
(
ProtoContainsT
<
GMat
>
(
p
.
m_outs
[
0
]));
};
TEST
(
KernelPackageTransform
,
gmat_in_gsc_out
)
{
transformTest
<
gmat_in_gsc_out
,
GMat
,
GScalar
>
();
}
check
(
tr
.
pattern
());
check
(
tr
.
substitute
());
TEST
(
KernelPackageTransform
,
garr_in_gmat_out
)
{
transformTest
<
garr_in_gmat_out
,
GArray
<
ArrayT
>
,
GMat
>
();
}
TEST
(
KernelPackageTransform
,
gmat_in_garr_out
)
{
transformTest
<
gmat_in_garr_out
,
GMat
,
GArray
<
ArrayT
>>
();
}
TEST
(
KernelPackageTransform
,
garr_in_gscalar_out
)
{
transformTest
<
garr_in_gscalar_out
,
GArray
<
ArrayT
>
,
GScalar
>
();
}
TEST
(
KernelPackageTransform
,
gscalar_in_garr_out
)
{
transformTest
<
gscalar_in_garr_out
,
GScalar
,
GArray
<
ArrayT
>>
();
}
}
// namespace opencv_test
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment