Files
M5Utility/test/optional/assignment.cpp
T

73 lines
1.2 KiB
C++
Raw Permalink Normal View History

2024-08-08 14:30:50 +09:00
#include <gtest/gtest.h>
#include <m5_utility/stl/optional.hpp>
2024-09-25 18:24:01 +09:00
TEST(Optional, Assignment)
{
2024-08-08 14:30:50 +09:00
m5::stl::optional<int> o1 = 42;
m5::stl::optional<int> o2 = 12;
m5::stl::optional<int> o3;
o1 = o1;
EXPECT_TRUE(*o1 == 42);
o1 = o2;
EXPECT_TRUE(*o1 == 12);
o1 = o3;
EXPECT_TRUE(!o1);
o1 = 42;
EXPECT_TRUE(*o1 == 42);
o1 = m5::stl::nullopt;
EXPECT_TRUE(!o1);
o1 = std::move(o2);
EXPECT_TRUE(*o1 == 12);
m5::stl::optional<short> o4 = 42;
o1 = o4;
EXPECT_TRUE(*o1 == 42);
o1 = std::move(o4);
EXPECT_TRUE(*o1 == 42);
}
2024-09-25 18:24:01 +09:00
TEST(Optional, AssignmentReference)
{
2024-08-08 14:30:50 +09:00
auto i = 42;
auto j = 12;
2024-08-08 14:44:12 +09:00
2024-08-08 14:30:50 +09:00
m5::stl::optional<int&> o1 = i;
m5::stl::optional<int&> o2 = j;
m5::stl::optional<int&> o3;
o1 = o1;
EXPECT_TRUE(*o1 == 42);
2024-08-08 14:44:12 +09:00
EXPECT_TRUE(&*o1 == &i);
2024-08-08 14:30:50 +09:00
o1 = o2;
EXPECT_TRUE(*o1 == 12);
o1 = o3;
EXPECT_TRUE(!o1);
auto k = 42;
2024-08-08 14:44:12 +09:00
o1 = k;
2024-08-08 14:30:50 +09:00
EXPECT_TRUE(*o1 == 42);
EXPECT_TRUE(*o1 == i);
2024-08-08 14:44:12 +09:00
EXPECT_TRUE(*o1 == k);
2024-08-08 14:30:50 +09:00
EXPECT_TRUE(&*o1 != &i);
EXPECT_TRUE(&*o1 == &k);
k = 12;
EXPECT_TRUE(*o1 == 12);
o1 = m5::stl::nullopt;
EXPECT_TRUE(!o1);
o1 = std::move(o2);
EXPECT_TRUE(*o1 == 12);
}