summaryrefslogtreecommitdiffhomepage
path: root/test/map.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/map.cpp')
-rw-r--r--test/map.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/test/map.cpp b/test/map.cpp
new file mode 100644
index 00000000..62860b22
--- /dev/null
+++ b/test/map.cpp
@@ -0,0 +1,37 @@
+#ifdef __GNUG__
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+#endif
+
+#include "compat/map.hpp"
+#include "compat/assert.hpp"
+
+namespace floormat {
+
+namespace {
+
+constexpr bool test1()
+{
+ constexpr auto array = std::array{0, 1, 2, 3, 4};
+ auto array2 = map(array, [](int x) constexpr {
+ return (unsigned)(x - 1);
+ });
+ constexpr auto array3 = std::array{(unsigned)-1, 0u, 1u, 2u, 3u};
+ fm_assert(array2.size() == array.size());
+ fm_assert(array3.size() == array.size());
+ for (auto i = 0uz; i < array.size(); i++)
+ fm_assert(array2[i] == array3[i]);
+ return true;
+}
+
+constexpr bool test2()
+{
+ fm_assert(map(std::array<int, 0>{}, [](int x) constexpr { return x;}).size() == 0);
+ return true;
+}
+
+static_assert(test1());
+static_assert(test2());
+
+} // namespace
+
+} // namespace floormat