[libcxx-commits] [PATCH] D60350: General abs tests
Zoe Carver via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Fri Apr 5 17:47:12 PDT 2019
zoecarver created this revision.
zoecarver added reviewers: mclow.lists, EricWF.
Herald added subscribers: libcxx-commits, ldionne.
**Why?**
1. Because there was a lack of `abs` tests
2. Because these tests make it very clear what `abs` declarations are where
Repository:
rCXX libc++
https://reviews.llvm.org/D60350
Files:
test/std/numerics/numerics.abs/abs_tests.h
test/std/numerics/numerics.abs/cinttypes.pass.cpp
test/std/numerics/numerics.abs/cmath.pass.cpp
test/std/numerics/numerics.abs/cstdlib.pass.cpp
test/std/numerics/numerics.abs/stdlib.h.pass.cpp
Index: test/std/numerics/numerics.abs/stdlib.h.pass.cpp
===================================================================
--- /dev/null
+++ test/std/numerics/numerics.abs/stdlib.h.pass.cpp
@@ -0,0 +1,9 @@
+#include "abs_tests.h"
+
+#include <stdlib.h>
+
+int main()
+{
+ general_test<long, long>(abs);
+ general_test<long long, long long>(abs);
+}
\ No newline at end of file
Index: test/std/numerics/numerics.abs/cstdlib.pass.cpp
===================================================================
--- /dev/null
+++ test/std/numerics/numerics.abs/cstdlib.pass.cpp
@@ -0,0 +1,13 @@
+#include "abs_tests.h"
+
+#include <cstdlib>
+
+int main()
+{
+ general_test<int, int>(std::abs);
+ general_test<long, long>(std::abs);
+ general_test<long long, long long>(std::abs);
+
+ general_test<long, long>(std::labs);
+ general_test<long long, long long>(std::llabs);
+}
\ No newline at end of file
Index: test/std/numerics/numerics.abs/cmath.pass.cpp
===================================================================
--- /dev/null
+++ test/std/numerics/numerics.abs/cmath.pass.cpp
@@ -0,0 +1,13 @@
+#include "abs_tests.h"
+
+#include <cmath>
+
+int main()
+{
+ general_test<float, float>(std::abs);
+ general_test<float, float>(std::fabs);
+ general_test<float, float>(std::fabsf);
+ general_test<double, double>(std::fabs);
+ general_test<long double, long double>(std::fabs);
+ general_test<long double, long double>(std::fabsl);
+}
Index: test/std/numerics/numerics.abs/cinttypes.pass.cpp
===================================================================
--- /dev/null
+++ test/std/numerics/numerics.abs/cinttypes.pass.cpp
@@ -0,0 +1,9 @@
+#include "abs_tests.h"
+
+#include <cinttypes>
+
+int main()
+{
+ // general_test<std::intmax_t, std::intmax_t>(std::abs);
+ general_test<std::intmax_t, std::intmax_t>(std::imaxabs);
+}
Index: test/std/numerics/numerics.abs/abs_tests.h
===================================================================
--- /dev/null
+++ test/std/numerics/numerics.abs/abs_tests.h
@@ -0,0 +1,16 @@
+#include <test_macros.h>
+#include <cassert>
+
+template<class In, class Out>
+void general_test(Out f(In))
+{
+ for (In i = -50; i < 50; ++i)
+ {
+ auto res = f(i);
+ ASSERT_SAME_TYPE(decltype(res), Out);
+ if (i > 0)
+ assert(res == i);
+ else
+ assert(res == i - (i * 2));
+ }
+}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D60350.193990.patch
Type: text/x-patch
Size: 2477 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20190406/30384203/attachment.bin>
More information about the libcxx-commits
mailing list