From b7f5d7565a19efbfebd72f2877444c552e4230c8 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Fri, 12 Mar 2021 16:44:02 +0200 Subject: libk: add Result class --- libk/test/result.cc | 16 +++++++++++++++ libk/test/string.cc | 14 +++++++++++++ libk/test/types.cc | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 libk/test/result.cc create mode 100644 libk/test/string.cc create mode 100644 libk/test/types.cc (limited to 'libk/test') diff --git a/libk/test/result.cc b/libk/test/result.cc new file mode 100644 index 0000000..be93a07 --- /dev/null +++ b/libk/test/result.cc @@ -0,0 +1,16 @@ +#include + +enum ErrorX { one, two = 5, three, NoError }; + +// operator bool +static_assert(!(Result{ErrorX::one})); +static_assert(!(Result{ErrorX::two})); +static_assert((Result{5})); + +// error +static_assert((Result{ErrorX::one}).error() == ErrorX::one); +static_assert((Result{5}).error() == ErrorX::NoError); + +// value +static_assert((Result{ErrorX::one}).value() == int{}); +static_assert((Result{5}).value() == 5); diff --git a/libk/test/string.cc b/libk/test/string.cc new file mode 100644 index 0000000..4d7d340 --- /dev/null +++ b/libk/test/string.cc @@ -0,0 +1,14 @@ +#include + +// strlen +static_assert(strlen("") == 0); +static_assert(strlen("0") == 1); +static_assert(strlen("hello") == 5); +static_assert(strlen("world") == 5); + +// reverse +static_assert([]() { + char s[] = "xyz"; + reverse(s, strlen(s)); + return s[0] == 'z' && s[1] == 'y' && s[2] == 'x' && s[3] == '\0'; +}()); diff --git a/libk/test/types.cc b/libk/test/types.cc new file mode 100644 index 0000000..3686a78 --- /dev/null +++ b/libk/test/types.cc @@ -0,0 +1,58 @@ +#include + +namespace libk { +#include "types.h" +} + +// types +static_assert(sizeof(libk::size_t) >= 2); + +static_assert(sizeof(libk::uint8_t) == 1); +static_assert(libk::uint8_t_max == UINT8_MAX); + +static_assert(sizeof(libk::uint16_t) == 2); +static_assert(libk::uint16_t_max == UINT16_MAX); + +static_assert(sizeof(libk::uint32_t) == 4); +static_assert(libk::uint32_t_max == UINT32_MAX); + +static_assert(sizeof(libk::uint64_t) == 8); +static_assert(libk::uint64_t_max == UINT64_MAX); + +static_assert(sizeof(libk::int8_t) == 1); +static_assert(libk::int8_t_min == INT8_MIN); +static_assert(libk::int8_t_max == INT8_MAX); + +static_assert(sizeof(libk::int16_t) == 2); +static_assert(libk::int16_t_min == INT16_MIN); +static_assert(libk::int16_t_max == INT16_MAX); + +static_assert(sizeof(libk::int32_t) == 4); +static_assert(libk::int32_t_min == INT32_MIN); +static_assert(libk::int32_t_max == INT32_MAX); + +static_assert(sizeof(libk::int64_t) == 8); +static_assert(libk::int64_t_min == INT64_MIN); +static_assert(libk::int64_t_max == INT64_MAX); + +// is_same +static_assert(libk::is_same() == true); +static_assert(libk::is_same() == false); + +// is_unsigned +static_assert(libk::is_unsigned() == true); +static_assert(libk::is_unsigned() == true); +static_assert(libk::is_unsigned() == true); +static_assert(libk::is_unsigned() == true); + +static_assert(libk::is_unsigned() == false); +static_assert(libk::is_unsigned() == false); +static_assert(libk::is_unsigned() == false); +static_assert(libk::is_unsigned() == false); + +// error_enum_t +enum EnumX { x, y, z }; +enum ErrorX { one, two, three, NoError }; + +static_assert(!libk::error_enum_t); +static_assert(libk::error_enum_t); -- cgit v1.2.1