aboutsummaryrefslogtreecommitdiff
path: root/libk/test
diff options
context:
space:
mode:
Diffstat (limited to 'libk/test')
-rw-r--r--libk/test/result.cc16
-rw-r--r--libk/test/string.cc14
-rw-r--r--libk/test/types.cc58
3 files changed, 88 insertions, 0 deletions
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 <result.h>
+
+enum ErrorX { one, two = 5, three, NoError };
+
+// operator bool
+static_assert(!(Result<int, ErrorX>{ErrorX::one}));
+static_assert(!(Result<int, ErrorX>{ErrorX::two}));
+static_assert((Result<int, ErrorX>{5}));
+
+// error
+static_assert((Result<int, ErrorX>{ErrorX::one}).error() == ErrorX::one);
+static_assert((Result<int, ErrorX>{5}).error() == ErrorX::NoError);
+
+// value
+static_assert((Result<int, ErrorX>{ErrorX::one}).value() == int{});
+static_assert((Result<int, ErrorX>{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 <string.h>
+
+// 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 <stdint.h>
+
+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<int, int>() == true);
+static_assert(libk::is_same<int, unsigned int>() == false);
+
+// is_unsigned
+static_assert(libk::is_unsigned<uint8_t>() == true);
+static_assert(libk::is_unsigned<uint16_t>() == true);
+static_assert(libk::is_unsigned<uint32_t>() == true);
+static_assert(libk::is_unsigned<uint64_t>() == true);
+
+static_assert(libk::is_unsigned<int8_t>() == false);
+static_assert(libk::is_unsigned<int16_t>() == false);
+static_assert(libk::is_unsigned<int32_t>() == false);
+static_assert(libk::is_unsigned<int64_t>() == false);
+
+// error_enum_t
+enum EnumX { x, y, z };
+enum ErrorX { one, two, three, NoError };
+
+static_assert(!libk::error_enum_t<EnumX>);
+static_assert(libk::error_enum_t<ErrorX>);