5 #include <doctest/doctest.h> 29 TEST_CASE(
"SimpleStringTests")
32 CHECK(static_cast<bool>(optionalString) ==
false);
33 CHECK(optionalString.
has_value() ==
false);
36 optionalString = std::string(
"Hello World");
37 CHECK(static_cast<bool>(optionalString) ==
true);
38 CHECK(optionalString.
has_value() ==
true);
39 CHECK(optionalString.
value() ==
"Hello World");
43 otherString = optionalString;
44 CHECK(static_cast<bool>(otherString) ==
true);
45 CHECK(otherString.
value() ==
"Hello World");
47 optionalString.
reset();
48 CHECK(static_cast<bool>(optionalString) ==
false);
49 CHECK(optionalString.
has_value() ==
false);
51 const std::string stringValue(
"Hello World");
53 CHECK(static_cast<bool>(optionalString2) ==
true);
54 CHECK(optionalString2.
has_value() ==
true);
55 CHECK(optionalString2.
value() ==
"Hello World");
58 CHECK(static_cast<bool>(optionalString3) ==
true);
59 CHECK(optionalString3.has_value() ==
true);
60 CHECK(optionalString3.value() ==
"Hello World");
63 TEST_CASE(
"StringRefTests")
66 CHECK(optionalStringRef.has_value() ==
false);
68 PassStringRef(optionalStringRef);
69 PassStringRefWithDefault();
73 std::string helloWorld(
"Hello World");
75 std::string& helloWorldRef = helloWorld;
77 CHECK(optionalHelloRef.
has_value() ==
true);
78 CHECK(optionalHelloRef.
value() ==
"Hello World");
81 CHECK(optionalHelloRef2.has_value() ==
true);
82 CHECK(optionalHelloRef2.value() ==
"Hello World");
85 CHECK(optionalHelloRef3.has_value() ==
true);
86 CHECK(optionalHelloRef3.value() ==
"Hello World");
89 CHECK(optionalHelloRef4.has_value() ==
true);
90 CHECK(optionalHelloRef4.value() ==
"Hello World");
93 optionalHelloRef4.
value().assign(
"Long Other String");
94 CHECK(helloWorld ==
"Long Other String");
95 CHECK(optionalHelloRef.
value() ==
"Long Other String");
96 CHECK(optionalHelloRef2.value() ==
"Long Other String");
97 CHECK(optionalHelloRef3.value() ==
"Long Other String");
100 TEST_CASE(
"SimpleIntTests")
102 const int intValue = 123;
105 CHECK(static_cast<bool>(optionalInt) ==
false);
109 optionalInt = intValue;
110 CHECK(static_cast<bool>(optionalInt) ==
true);
112 CHECK(optionalInt.
value() == intValue);
116 otherOptionalInt = optionalInt;
117 CHECK(static_cast<bool>(otherOptionalInt) ==
true);
118 CHECK(otherOptionalInt.
value() == intValue);
121 TEST_CASE(
"ObjectConstructedInPlaceTests")
126 SimpleObject(
const std::string& name,
int value)
133 return m_Name == other.m_Name &&
134 m_Value == other.m_Value;
142 std::string objectName(
"SimpleObject");
144 SimpleObject referenceObject(objectName, objectValue);
148 CHECK(static_cast<bool>(optionalObject1) ==
true);
149 CHECK(optionalObject1.
has_value() ==
true);
150 CHECK((optionalObject1.
value() == referenceObject));
154 CHECK(static_cast<bool>(optionalObject1) ==
true);
155 CHECK(optionalObject1.
has_value() ==
true);
156 CHECK((optionalObject1.
value() == referenceObject));
#define CONSTRUCT_IN_PLACE
void IgnoreUnused(Ts &&...)
TEST_SUITE("OptionalTests")
bool operator==(const armnn::DataLayout &dataLayout, const DataLayoutIndexed &indexed)
Equality methods.
bool has_value() const noexcept
EmptyOptional is used to initialize the Optional class in case we want to have default value for an O...