Publishing 2019 R1 content
[platform/upstream/dldt.git] / inference-engine / thirdparty / fluid / modules / gapi / test / util / any_tests.cpp
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-2019 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