diff options
author | Mateusz Chudyk <mateuszchudyk@gmail.com> | 2019-06-25 15:07:42 +0300 |
---|---|---|
committer | Mateusz Chudyk <mateuszchudyk@gmail.com> | 2019-06-25 15:34:05 +0300 |
commit | 586f71042bae9b369367af6807b108480bdc2472 (patch) | |
tree | 261d256922c26018ddf7ab32697deb9011d517c3 | |
parent | 2b157abbaf327b909f9dbb127e7267576e8e2812 (diff) |
Add unit tests for utils.h
-rw-r--r-- | CMakeLists.txt | 1 | ||||
-rw-r--r-- | test/utils_test.cc | 44 |
2 files changed, 45 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 1a15c7a..5dde6e5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,6 +40,7 @@ add_executable(tests test/postprocess/tanh_test.cc test/postprocess/unquantize_test.cc test/quantize_test.cc + test/utils_test.cc intgemm.cc ) diff --git a/test/utils_test.cc b/test/utils_test.cc new file mode 100644 index 0000000..4391e61 --- /dev/null +++ b/test/utils_test.cc @@ -0,0 +1,44 @@ +#include "3rd_party/catch.hpp" +#include "utils.h" + +#define CHECK_DOUBLE(actual, expected, epsilon) \ + do { \ + if (fabs((actual) - (expected)) < epsilon) { SUCCEED(); } \ + else { CHECK((actual) == (expected)); } \ + } while(0) + +namespace intgemm { +namespace { + +TEST_CASE("Factorial",) { + CHECK(factorial(0) == 1); + CHECK(factorial(1) == 1); + CHECK(factorial(2) == 2); + CHECK(factorial(3) == 6); + CHECK(factorial(4) == 24); + + // Maximum result that fits in unsinged long long + CHECK(factorial(20) == 2432902008176640000); +} + +TEST_CASE("Expi (negative)",) { + const double eps = 0.0000001; + CHECK_DOUBLE(expi(-1), 0.3678794411714423, eps); + CHECK_DOUBLE(expi(-2), 0.1353352832366127, eps); + CHECK_DOUBLE(expi(-10), 0.0000453999297625, eps); +} + +TEST_CASE("Expi (zero)",) { + const double eps = 0.0000001; + CHECK_DOUBLE(expi(0), 1.0, eps); +} + +TEST_CASE("Expi (positive)",) { + const double eps = 0.0000001; + CHECK_DOUBLE(expi(1), 2.7182818284590452, eps); + CHECK_DOUBLE(expi(2), 7.3890560989306502, eps); + CHECK_DOUBLE(expi(10), 22026.4657948067165170, eps); +} + +} +} |