Make base::Optional constructor constexpr.
BUG=
Review-Url: https://codereview.chromium.org/2434253003
Cr-Commit-Position: refs/heads/master@{#427311}
diff --git a/base/optional_unittest.cc b/base/optional_unittest.cc
index 565b6cd6..83025e8 100644
--- a/base/optional_unittest.cc
+++ b/base/optional_unittest.cc
@@ -98,7 +98,7 @@
TEST(OptionalTest, DefaultConstructor) {
{
- Optional<float> o;
+ constexpr Optional<float> o;
EXPECT_FALSE(o);
}
@@ -144,21 +144,28 @@
TEST(OptionalTest, ValueConstructor) {
{
- Optional<float> o(0.1f);
+ constexpr float value = 0.1f;
+ constexpr Optional<float> o(value);
+
EXPECT_TRUE(o);
- EXPECT_EQ(o.value(), 0.1f);
+ EXPECT_EQ(value, o.value());
}
{
- Optional<std::string> o("foo");
+ std::string value("foo");
+ Optional<std::string> o(value);
+
EXPECT_TRUE(o);
- EXPECT_EQ(o.value(), "foo");
+ EXPECT_EQ(value, o.value());
}
{
- Optional<TestObject> o(TestObject(3, 0.1));
- EXPECT_TRUE(!!o);
- EXPECT_TRUE(o.value() == TestObject(3, 0.1));
+ TestObject value(3, 0.1);
+ Optional<TestObject> o(value);
+
+ EXPECT_TRUE(o);
+ EXPECT_EQ(TestObject::State::COPY_CONSTRUCTED, o->state());
+ EXPECT_EQ(value, o.value());
}
}
@@ -198,35 +205,28 @@
TEST(OptionalTest, MoveValueConstructor) {
{
- Optional<float> first(0.1f);
- Optional<float> second(std::move(first.value()));
+ float value = 0.1f;
+ Optional<float> o(std::move(value));
- EXPECT_TRUE(second);
- EXPECT_EQ(second.value(), 0.1f);
-
- EXPECT_TRUE(first);
+ EXPECT_TRUE(o);
+ EXPECT_EQ(0.1f, o.value());
}
{
- Optional<std::string> first("foo");
- Optional<std::string> second(std::move(first.value()));
+ std::string value("foo");
+ Optional<std::string> o(std::move(value));
- EXPECT_TRUE(second);
- EXPECT_EQ("foo", second.value());
-
- EXPECT_TRUE(first);
+ EXPECT_TRUE(o);
+ EXPECT_EQ("foo", o.value());
}
{
- Optional<TestObject> first(TestObject(3, 0.1));
- Optional<TestObject> second(std::move(first.value()));
+ TestObject value(3, 0.1);
+ Optional<TestObject> o(std::move(value));
- EXPECT_TRUE(!!second);
- EXPECT_EQ(TestObject::State::MOVE_CONSTRUCTED, second->state());
- EXPECT_TRUE(TestObject(3, 0.1) == second.value());
-
- EXPECT_TRUE(!!first);
- EXPECT_EQ(TestObject::State::MOVED_FROM, first->state());
+ EXPECT_TRUE(o);
+ EXPECT_EQ(TestObject::State::MOVE_CONSTRUCTED, o->state());
+ EXPECT_EQ(TestObject(3, 0.1), o.value());
}
}
@@ -251,7 +251,7 @@
}
TEST(OptionalTest, NulloptConstructor) {
- Optional<int> a = base::nullopt;
+ constexpr Optional<int> a(base::nullopt);
EXPECT_FALSE(a);
}