From a6a2ddb96477abd81a8751de339130a38737f0d3 Mon Sep 17 00:00:00 2001 From: Pavel Kirienko Date: Thu, 8 Feb 2024 21:24:30 +0200 Subject: [PATCH] add more tests #verification #sonar #docs --- .../suites/unittest/test_pf17_optional.cpp | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/cetlvast/suites/unittest/test_pf17_optional.cpp b/cetlvast/suites/unittest/test_pf17_optional.cpp index d37c95b0..9de029f2 100644 --- a/cetlvast/suites/unittest/test_pf17_optional.cpp +++ b/cetlvast/suites/unittest/test_pf17_optional.cpp @@ -701,6 +701,9 @@ TYPED_TEST(test_optional_combinations, ctor_4) f1.reset(); EXPECT_EQ((TypeParam::dtor_policy_value == policy_nontrivial) ? 2 : 0, f_dtor); EXPECT_EQ((TypeParam::dtor_policy_value == policy_nontrivial) ? 1 : 0, b_dtor); + // Test empty copy. + optional b2(f1); + EXPECT_FALSE(b2); } /// ------------------------------------------------------------------------------------------------ @@ -751,6 +754,9 @@ TYPED_TEST(test_optional_combinations, ctor_5) f1.reset(); EXPECT_EQ((TypeParam::dtor_policy_value == policy_nontrivial) ? 2 : 0, f_dtor); EXPECT_EQ((TypeParam::dtor_policy_value == policy_nontrivial) ? 1 : 0, b_dtor); + // Test empty copy. + optional b2(std::move(f1)); + EXPECT_FALSE(b2); } /// ------------------------------------------------------------------------------------------------ @@ -1318,3 +1324,60 @@ TEST(test_optional, swap) EXPECT_FALSE(a); EXPECT_FALSE(b); } + +/// ------------------------------------------------------------------------------------------------ + +TEST(test_optional, make_optional_1) +{ + const std::int64_t value = 123456; + const optional a = cetl::pf17::make_optional(static_cast(value)); + EXPECT_TRUE(a); + EXPECT_EQ(123456, a.value()); +} + +TEST(test_optional, make_optional_2) +{ + struct value_type + { + value_type(const std::int64_t a, const std::int64_t b) + : a(a) + , b(b) + { + } + std::int64_t a; + std::int64_t b; + }; + const optional opt = cetl::pf17::make_optional(123, 456); + EXPECT_TRUE(opt); + EXPECT_EQ(123, opt.value().a); + EXPECT_EQ(456, opt.value().b); +} + +TEST(test_optional, make_optional_3) +{ + struct value_type + { + value_type(const std::initializer_list list, const std::int64_t b) + : a(list.size()) + , b(b) + { + } + std::size_t a; + std::int64_t b; + }; + const optional opt = + cetl::pf17::make_optional(std::initializer_list{1, 2, 3, 4, 5}, 123); + EXPECT_TRUE(opt); + EXPECT_EQ(5, opt.value().a); + EXPECT_EQ(123, opt.value().b); +} + +/// ------------------------------------------------------------------------------------------------ + +TEST(test_optional, value_or) +{ + const optional a = 12345; + EXPECT_EQ(12345, a.value_or(23456)); + EXPECT_EQ(12345, (optional{12345}).value_or(23456)); + EXPECT_EQ(23456, (optional{}).value_or(23456)); +}