Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Tetragramm
GitHub Repository: Tetragramm/opencv
Path: blob/master/modules/gapi/test/util/any_tests.cpp
16354 views
1
// This file is part of OpenCV project.
2
// It is subject to the license terms in the LICENSE file found in the top-level directory
3
// of this distribution and at http://opencv.org/license.html.
4
//
5
// Copyright (C) 2018 Intel Corporation
6
7
8
#include "test_precomp.hpp"
9
#include "opencv2/gapi/util/any.hpp"
10
11
namespace opencv_test
12
{
13
14
TEST(Any, basic)
15
{
16
using namespace util;
17
any a(8);
18
auto casted_pointer = any_cast<int>(&a);
19
ASSERT_NE(nullptr, casted_pointer);
20
ASSERT_EQ(*casted_pointer, 8);
21
22
*casted_pointer = 7;
23
ASSERT_EQ(any_cast<int>(a), 7);
24
}
25
26
TEST(Any, any_cast_ref_throws_on_empty)
27
{
28
using namespace util;
29
any a;
30
31
ASSERT_THROW(util::any_cast<int>(a), bad_any_cast);
32
}
33
34
TEST(Any, copy)
35
{
36
using namespace util;
37
any a(8);
38
39
ASSERT_EQ(any_cast<int>(a), 8);
40
41
any b (a);
42
43
ASSERT_NE(nullptr, any_cast<int>(&b));
44
ASSERT_EQ(8 , any_cast<int>(b));
45
ASSERT_EQ(8 , any_cast<int>(a));
46
}
47
48
TEST(Any, copy_empty)
49
{
50
using namespace util;
51
any a;
52
53
ASSERT_EQ(nullptr, any_cast<int>(&a));
54
55
any b (a);
56
57
ASSERT_EQ(nullptr, any_cast<int>(&a));
58
ASSERT_EQ(nullptr, any_cast<int>(&b));
59
}
60
61
TEST(Any, move)
62
{
63
using namespace util;
64
any a(8);
65
66
ASSERT_EQ(any_cast<int>(a), 8);
67
68
any b (std::move(a));
69
70
ASSERT_NE(nullptr, any_cast<int>(&b));
71
ASSERT_EQ(8 , any_cast<int>(b));
72
ASSERT_EQ(nullptr, any_cast<int>(&a));
73
}
74
75
TEST(Any, swap)
76
{
77
using namespace util;
78
any a(8);
79
any b(7);
80
81
ASSERT_EQ(7, any_cast<int>(b));
82
ASSERT_EQ(8, any_cast<int>(a));
83
84
swap(a,b);
85
86
ASSERT_EQ(8, any_cast<int>(b));
87
ASSERT_EQ(7, any_cast<int>(a));
88
}
89
90
TEST(Any, move_assign)
91
{
92
using namespace util;
93
any a(8);
94
any b;
95
96
ASSERT_EQ(any_cast<int>(a), 8);
97
98
b = (std::move(a));
99
100
ASSERT_NE(nullptr, any_cast<int>(&b));
101
ASSERT_EQ(8 , any_cast<int>(b));
102
ASSERT_EQ(nullptr, any_cast<int>(&a));
103
}
104
105
TEST(Any, copy_assign)
106
{
107
using namespace util;
108
any a(8);
109
any b;
110
111
ASSERT_EQ(any_cast<int>(a), 8);
112
ASSERT_EQ(nullptr, any_cast<int>(&b));
113
114
b = a;
115
116
ASSERT_NE(nullptr, any_cast<int>(&b));
117
ASSERT_EQ(8 , any_cast<int>(b));
118
ASSERT_EQ(8 , any_cast<int>(a));
119
}
120
121
} // namespace opencv_test
122
123