aboutsummaryrefslogtreecommitdiff
path: root/libk/test/types.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libk/test/types.cc')
-rw-r--r--libk/test/types.cc58
1 files changed, 58 insertions, 0 deletions
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>);