Add tests for nullable
This commit is contained in:
parent
e2b1252438
commit
eb9ebc31a7
@ -17,7 +17,9 @@ cc_test(
|
||||
"unit/internals/optional.cpp",
|
||||
"unit/internals/result.cpp",
|
||||
"unit/internals/string_utils.cpp",
|
||||
"unit/internals/general.cpp"
|
||||
"unit/internals/general.cpp",
|
||||
"unit/lib/formatting.cpp",
|
||||
"unit/lib/nullable.cpp"
|
||||
],
|
||||
linkstatic = 1,
|
||||
)
|
||||
@ -87,6 +87,8 @@ if(NOT CPPTRACE_SKIP_UNIT)
|
||||
unit/internals/result.cpp
|
||||
unit/internals/string_utils.cpp
|
||||
unit/internals/general.cpp
|
||||
unit/lib/formatting.cpp
|
||||
unit/lib/nullable.cpp
|
||||
)
|
||||
target_compile_features(unittest PRIVATE cxx_std_20)
|
||||
target_link_libraries(unittest PRIVATE ${target_name} GTest::gtest_main GTest::gmock_main)
|
||||
|
||||
60
test/unit/lib/nullable.cpp
Normal file
60
test/unit/lib/nullable.cpp
Normal file
@ -0,0 +1,60 @@
|
||||
#include <cpptrace/basic.hpp>
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
#include <gtest/gtest-matchers.h>
|
||||
#include <gmock/gmock.h>
|
||||
#include <gmock/gmock-matchers.h>
|
||||
|
||||
using cpptrace::nullable;
|
||||
|
||||
namespace {
|
||||
|
||||
TEST(NullableTest, Basic) {
|
||||
nullable<std::uint32_t> a{12};
|
||||
EXPECT_EQ(a.value(), 12);
|
||||
EXPECT_EQ(a.raw_value, 12);
|
||||
// TODO: =
|
||||
}
|
||||
|
||||
TEST(NullableTest, Null) {
|
||||
auto a = nullable<std::uint32_t>::null();
|
||||
EXPECT_FALSE(a.has_value());
|
||||
EXPECT_EQ(a.raw_value, (std::numeric_limits<std::uint32_t>::max)());
|
||||
// TODO: default construct
|
||||
}
|
||||
|
||||
TEST(NullableTest, Assignment) {
|
||||
nullable<std::uint32_t> a;
|
||||
a = 12;
|
||||
EXPECT_EQ(a.value(), 12);
|
||||
}
|
||||
|
||||
TEST(NullableTest, Reset) {
|
||||
nullable<std::uint32_t> a{12};
|
||||
a.reset();
|
||||
EXPECT_FALSE(a.has_value());
|
||||
}
|
||||
|
||||
TEST(NullableTest, ValueOr) {
|
||||
auto a = nullable<std::uint32_t>::null();
|
||||
EXPECT_EQ(a.value_or(20), 20);
|
||||
}
|
||||
|
||||
TEST(NullableTest, Comparison) {
|
||||
EXPECT_EQ(nullable<std::uint32_t>{12}, nullable<std::uint32_t>{12});
|
||||
EXPECT_NE(nullable<std::uint32_t>{12}, nullable<std::uint32_t>{20});
|
||||
EXPECT_NE(nullable<std::uint32_t>{12}, nullable<std::uint32_t>::null());
|
||||
EXPECT_EQ(nullable<std::uint32_t>::null(), nullable<std::uint32_t>::null());
|
||||
}
|
||||
|
||||
TEST(NullableTest, Swap) {
|
||||
auto a = nullable<std::uint32_t>::null();
|
||||
nullable<std::uint32_t> b{12};
|
||||
EXPECT_FALSE(a.has_value());
|
||||
EXPECT_EQ(b.value(), 12);
|
||||
a.swap(b);
|
||||
EXPECT_FALSE(b.has_value());
|
||||
EXPECT_EQ(a.value(), 12);
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user