From 8c95db33be58a545dd2e030428bded0bd958c4b6 Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Wed, 16 Oct 2024 22:54:34 +0200 Subject: Start work on the testing framework --- asl/tests/meta_tests.cpp | 170 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 asl/tests/meta_tests.cpp (limited to 'asl/tests/meta_tests.cpp') diff --git a/asl/tests/meta_tests.cpp b/asl/tests/meta_tests.cpp new file mode 100644 index 0000000..5de4f8d --- /dev/null +++ b/asl/tests/meta_tests.cpp @@ -0,0 +1,170 @@ +#include "asl/meta.hpp" +#include "asl/tests/test_types.hpp" + +struct Struct {}; +union Union {}; +enum Enum { EnumVariant = 0, }; +enum class EnumClass { Variant = 0, }; + +static_assert(!asl::is_same); +static_assert(asl::is_same); + +static_assert(asl::is_same, float>); +static_assert(asl::is_same, int>); + +static_assert(asl::default_constructible); +static_assert(asl::default_constructible); +static_assert(asl::default_constructible); +static_assert(!asl::default_constructible); + +static_assert(asl::trivially_default_constructible); +static_assert(asl::trivially_default_constructible); +static_assert(!asl::trivially_default_constructible); +static_assert(!asl::trivially_default_constructible); + +static_assert(asl::copy_constructible); +static_assert(asl::copy_constructible); +static_assert(asl::copy_constructible); +static_assert(!asl::copy_constructible); + +static_assert(asl::trivially_copy_constructible); +static_assert(asl::trivially_copy_constructible); +static_assert(!asl::trivially_copy_constructible); +static_assert(!asl::trivially_copy_constructible); + +static_assert(asl::move_constructible); +static_assert(asl::move_constructible); +static_assert(asl::move_constructible); +static_assert(!asl::move_constructible); + +static_assert(asl::trivially_move_constructible); +static_assert(asl::trivially_move_constructible); +static_assert(!asl::trivially_move_constructible); +static_assert(!asl::trivially_move_constructible); + +static_assert(asl::copy_assignable); +static_assert(asl::copy_assignable); +static_assert(asl::copy_assignable); +static_assert(!asl::copy_assignable); + +static_assert(asl::trivially_copy_assignable); +static_assert(!asl::trivially_copy_assignable); +static_assert(asl::trivially_copy_assignable); +static_assert(!asl::trivially_copy_assignable); + +static_assert(asl::move_assignable); +static_assert(asl::move_assignable); +static_assert(asl::move_assignable); +static_assert(!asl::move_assignable); + +static_assert(asl::trivially_move_assignable); +static_assert(!asl::trivially_move_assignable); +static_assert(asl::trivially_move_assignable); +static_assert(!asl::trivially_move_assignable); + +static_assert(asl::trivially_destructible); +static_assert(asl::trivially_destructible); +static_assert(!asl::trivially_destructible); + +static_assert(asl::is_same>); +static_assert(asl::is_same>); +static_assert(asl::is_same>); + +static_assert(asl::is_same>); +static_assert(asl::is_same>); +static_assert(asl::is_same>); + +static_assert(asl::is_same>); +static_assert(asl::is_same>); +static_assert(asl::is_same>); +static_assert(asl::is_same>); + +static_assert(asl::is_void); +static_assert(asl::is_void); +static_assert(asl::is_void); +static_assert(asl::is_void); +static_assert(!asl::is_void); +static_assert(!asl::is_void); +static_assert(!asl::is_void); +static_assert(!asl::is_void); +static_assert(!asl::is_void); +static_assert(!asl::is_void); + +static_assert(asl::is_ref); +static_assert(asl::is_ref); +static_assert(asl::is_ref); +static_assert(asl::is_ref); +static_assert(!asl::is_ref); +static_assert(!asl::is_ref); +static_assert(!asl::is_ref); +static_assert(!asl::is_ref); + +static_assert(asl::is_ptr); +static_assert(asl::is_ptr); +static_assert(asl::is_ptr); +static_assert(!asl::is_ptr); +static_assert(!asl::is_ptr); +static_assert(!asl::is_ptr); +static_assert(!asl::is_ptr); + +static_assert(asl::is_same>); +static_assert(asl::is_same>); +static_assert(asl::is_same>); +static_assert(asl::is_same>); +static_assert(asl::is_same>); +static_assert(asl::is_same>); +static_assert(asl::is_same>); +static_assert(asl::is_same>); + +static_assert(asl::is_func); +static_assert(asl::is_func); +static_assert(asl::is_func); +static_assert(asl::is_func); +static_assert(asl::is_func); +static_assert(asl::is_func); +static_assert(!asl::is_func); +static_assert(!asl::is_func); +static_assert(!asl::is_func); +static_assert(!asl::is_func); + +static_assert(asl::is_object); +static_assert(asl::is_object); +static_assert(asl::is_object); +static_assert(asl::is_object); +static_assert(asl::is_object); +static_assert(asl::is_object); +static_assert(asl::is_object); +static_assert(asl::is_object); +static_assert(!asl::is_object); +static_assert(!asl::is_object); +static_assert(!asl::is_object); +static_assert(!asl::is_object); + +static_assert(!asl::is_array); +static_assert(!asl::is_array); +static_assert(!asl::is_array); +static_assert(!asl::is_array); +static_assert(!asl::is_array); +static_assert(asl::is_array); +static_assert(asl::is_array); +static_assert(!asl::is_array); +static_assert(!asl::is_array); +static_assert(!asl::is_array); +static_assert(!asl::is_array); +static_assert(!asl::is_array); + +static_assert(asl::is_same>); +static_assert(asl::is_same>); +static_assert(asl::is_same>); +static_assert(asl::is_same>); + +static_assert(asl::types_count == 2); +static_assert(asl::types_count == 2); +static_assert(asl::types_count == 1); +static_assert(asl::types_count<> == 0); + +static_assert(asl::trivially_copyable); +static_assert(!asl::trivially_copyable); +static_assert(!asl::trivially_copyable); +static_assert(asl::trivially_copyable); +static_assert(asl::trivially_copyable); -- cgit