return (specified_);
}
+ /// @brief Specifies a new value value and marks it "specified".
+ ///
+ /// @param value New actual value.
+ void operator=(const T& value) {
+ specify(value);
+ }
+
+ /// @brief Equality operator.
+ ///
+ /// @param value Actual value to compare to.
+ bool operator==(const T& value) {
+ return (value_ == value);
+ }
+
+ /// @brief Inequality operator.
+ ///
+ /// @param value Actual value to compare to.
+ bool operator!=(const T& value) {
+ return (value_ != value);
+ }
+
+
private:
T value_; ///< Encapsulated value.
bool specified_; ///< Flag which indicates if the value is specified.
ASSERT_TRUE(value.isSpecified());
}
+// This test checks if the assignment operator assignining an actual
+// value to the optional value works as expected.
+TEST(OptionalValueTest, assignValue) {
+ OptionalValue<int> value(10);
+ ASSERT_EQ(10, value.get());
+ ASSERT_FALSE(value.isSpecified());
+
+ // Set the new value and mark it "specified".
+ value = 111;
+ ASSERT_EQ(111, value.get());
+ ASSERT_TRUE(value.isSpecified());
+
+ // Specify another value. The value should be still "specified".
+ value = 1000;
+ ASSERT_EQ(1000, value.get());
+ ASSERT_TRUE(value.isSpecified());
+}
+
+// This test checks if the equality and inequality operators work
+// correctly for the optional value.
+TEST(OptionalValueTest, equalityOperators) {
+ OptionalValue<int> value(10);
+ ASSERT_EQ(10, value.get());
+ ASSERT_FALSE(value.isSpecified());
+
+ EXPECT_TRUE(value == 10);
+ EXPECT_FALSE(value != 10);
+
+ value = 123;
+ EXPECT_TRUE(value == 123);
+ EXPECT_FALSE(value != 123);
+}
+
+
+
} // end of anonymous namespace