@@ -36,9 +36,65 @@ TEST(OptionalTest, ValidTest) {
3636 EXPECT_EQ (5 , index.value ());
3737}
3838
39- TEST (OptionalTest, AssignmentTest ) {
39+ TEST (OptionalTest, AssignmentFromValueTest ) {
4040 optional_t <int > index (5 );
4141 index = 3 ;
4242 EXPECT_TRUE (index.has_value ());
4343 EXPECT_EQ (3 , index.value ());
4444}
45+
46+ TEST (OptionalTest, AssignmentFromOptionalTest) {
47+ optional_t <int > v1 (5 );
48+ const optional_t <int > v2 (2 );
49+ v1 = v2;
50+ EXPECT_TRUE (v1.has_value ());
51+ EXPECT_EQ (2 , v1.value ());
52+ EXPECT_TRUE (v2.has_value ());
53+ EXPECT_EQ (2 , v2.value ());
54+ }
55+
56+ TEST (OptionalTest, AssignmentFromNullOptionalTest) {
57+ optional_t <int > v1 (5 );
58+ const optional_t <int > v2;
59+ v1 = v2;
60+ EXPECT_FALSE (v1.has_value ());
61+ EXPECT_FALSE (v2.has_value ());
62+ }
63+
64+ TEST (OptionalTest, AssignmentToNullFromValueTest) {
65+ optional_t <int > index;
66+ index = 3 ;
67+ EXPECT_TRUE (index.has_value ());
68+ EXPECT_EQ (3 , index.value ());
69+ }
70+
71+ TEST (OptionalTest, AssignmentToNullFromOptionalTest) {
72+ optional_t <int > v1;
73+ const optional_t <int > v2 (2 );
74+ v1 = v2;
75+ EXPECT_TRUE (v1.has_value ());
76+ EXPECT_EQ (2 , v1.value ());
77+ EXPECT_TRUE (v2.has_value ());
78+ EXPECT_EQ (2 , v2.value ());
79+ }
80+
81+ TEST (OptionalTest, AssignmentToNullFromNullOptionalTest) {
82+ optional_t <int > v1;
83+ const optional_t <int > v2;
84+ v1 = v2;
85+ EXPECT_FALSE (v1.has_value ());
86+ EXPECT_FALSE (v2.has_value ());
87+ }
88+
89+ TEST (OptionalTest, CopyConstructorTest) {
90+ const optional_t <int > v2 (5 );
91+ const optional_t <int > v1 (v2);
92+ EXPECT_TRUE (v1.has_value ());
93+ EXPECT_EQ (5 , v2.value ());
94+ }
95+
96+ TEST (OptionalTest, CopyConstructorNullTest) {
97+ const optional_t <int > v2;
98+ const optional_t <int > v1 (v2);
99+ EXPECT_FALSE (v1.has_value ());
100+ }
0 commit comments