blob: 3f4c02d56ffa518f331fc3965b20b4b97d595367 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
//
// Copyright © 2017 Arm Ltd. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include <boost/test/unit_test.hpp>
#include <armnn/Optional.hpp>
#include <string>
namespace
{
void PassStringRef(armnn::Optional<std::string&> value)
{
}
void PassStringRefWithDefault(armnn::Optional<std::string&> value = armnn::EmptyOptional())
{
}
} // namespace <anonymous>
BOOST_AUTO_TEST_SUITE(OptionalTests)
BOOST_AUTO_TEST_CASE(SimpleStringTests)
{
armnn::Optional<std::string> optionalString;
BOOST_TEST(optionalString == false);
BOOST_TEST(optionalString.has_value() == false);
optionalString = std::string("Hello World");
BOOST_TEST(optionalString == true);
BOOST_TEST(optionalString.has_value() == true);
BOOST_TEST(optionalString.value() == "Hello World");
armnn::Optional<std::string> otherString;
otherString = optionalString;
BOOST_TEST(otherString == true);
BOOST_TEST(otherString.value() == "Hello World");
optionalString.reset();
BOOST_TEST(optionalString == false);
BOOST_TEST(optionalString.has_value() == false);
const std::string stringValue("Hello World");
armnn::Optional<std::string> optionalString2(stringValue);
BOOST_TEST(optionalString2 == true);
BOOST_TEST(optionalString2.has_value() == true);
BOOST_TEST(optionalString2.value() == "Hello World");
armnn::Optional<std::string> optionalString3(std::move(optionalString2));
BOOST_TEST(optionalString3 == true);
BOOST_TEST(optionalString3.has_value() == true);
BOOST_TEST(optionalString3.value() == "Hello World");
}
BOOST_AUTO_TEST_CASE(StringRefTests)
{
armnn::Optional<std::string&> optionalStringRef{armnn::EmptyOptional()};
BOOST_TEST(optionalStringRef.has_value() == false);
PassStringRef(optionalStringRef);
PassStringRefWithDefault();
armnn::Optional<std::string&> optionalStringRef2 = optionalStringRef;
std::string helloWorld("Hello World");
std::string& helloWorldRef = helloWorld;
armnn::Optional<std::string&> optionalHelloRef = helloWorldRef;
BOOST_TEST(optionalHelloRef.has_value() == true);
BOOST_TEST(optionalHelloRef.value() == "Hello World");
armnn::Optional<std::string&> optionalHelloRef2 = helloWorld;
BOOST_TEST(optionalHelloRef2.has_value() == true);
BOOST_TEST(optionalHelloRef2.value() == "Hello World");
armnn::Optional<std::string&> optionalHelloRef3{helloWorldRef};
BOOST_TEST(optionalHelloRef3.has_value() == true);
BOOST_TEST(optionalHelloRef3.value() == "Hello World");
armnn::Optional<std::string&> optionalHelloRef4{helloWorld};
BOOST_TEST(optionalHelloRef4.has_value() == true);
BOOST_TEST(optionalHelloRef4.value() == "Hello World");
// modify through the optional reference
optionalHelloRef4.value().assign("Long Other String");
BOOST_TEST(helloWorld == "Long Other String");
BOOST_TEST(optionalHelloRef.value() == "Long Other String");
BOOST_TEST(optionalHelloRef2.value() == "Long Other String");
BOOST_TEST(optionalHelloRef3.value() == "Long Other String");
}
BOOST_AUTO_TEST_CASE(SimpleIntTests)
{
const int intValue = 123;
armnn::Optional<int> optionalInt;
BOOST_TEST(optionalInt == false);
BOOST_TEST(optionalInt.has_value() == false);
optionalInt = intValue;
BOOST_TEST(optionalInt == true);
BOOST_TEST(optionalInt.has_value() == true);
BOOST_TEST(optionalInt.value() == intValue);
armnn::Optional<int> otherOptionalInt;
otherOptionalInt = optionalInt;
BOOST_TEST(otherOptionalInt == true);
BOOST_TEST(otherOptionalInt.value() == intValue);
}
BOOST_AUTO_TEST_SUITE_END()
|