aboutsummaryrefslogtreecommitdiff
path: root/unittests
diff options
context:
space:
mode:
authorPetteri Aimonen <jpa@github.mail.kapsi.fi>2020-10-29 21:23:07 +0200
committerGitHub <noreply@github.com>2020-10-29 21:23:07 +0200
commit83c5f4438ebc2e781b0f98e4612b56c75db59c9d (patch)
tree28fd64f5c735936210a5cff3c3deb9dda2c48c45 /unittests
parent54c1f9276afa44fd21dba7ff2c8b117e7dbbfcf8 (diff)
parent18a9ad00de49ce1724000b74a339e7dd3165bdd1 (diff)
downloadlibfixmath-83c5f4438ebc2e781b0f98e4612b56c75db59c9d.tar.gz
Merge pull request #21 from HamAndChris/fix_linear_interpolation
Removed 64-bit restriction on linear interpolation functions, fixed int64 bugs
Diffstat (limited to 'unittests')
-rw-r--r--unittests/fix16_unittests.c28
-rw-r--r--unittests/run_unittests.sh16
2 files changed, 42 insertions, 2 deletions
diff --git a/unittests/fix16_unittests.c b/unittests/fix16_unittests.c
index b63c25d..51d8f61 100644
--- a/unittests/fix16_unittests.c
+++ b/unittests/fix16_unittests.c
@@ -2,6 +2,7 @@
#include <stdio.h>
#include <math.h>
#include <stdbool.h>
+#include "int64.h"
#include "unittests.h"
const fix16_t testcases[] = {
@@ -330,7 +331,31 @@ int main()
TEST(failures == 0);
}
-#ifndef FIXMATH_NO_64BIT
+ {
+ COMMENT("Running int64 test cases");
+ TEST(int64_cmp_eq(int64_const(0,1), int64_from_int32(1)));
+ TEST(int64_cmp_eq(int64_const(0xffffffff,0xfffffffe), int64_from_int32(-2)));
+ TEST(int64_cmp_eq(int64_const(1,0), int64_shift(int64_from_int32(1),32)));
+ TEST(int64_cmp_eq(int64_const(1,0), int64_shift(int64_from_int32(2),31)));
+ TEST(int64_cmp_eq(int64_const(0,(1<<31)), int64_shift(int64_from_int32(1),31)));
+ TEST(int64_cmp_eq(int64_const(-2,0), int64_shift(int64_from_int32(-1),33)));
+ TEST(int64_cmp_eq(int64_const(0,1), int64_shift(int64_const(0,2),-1)));
+ TEST(int64_cmp_eq(int64_const(2,1), int64_shift(int64_const(4,2),-1)));
+ TEST(int64_cmp_eq(int64_const(0,(1<<31)), int64_shift(int64_const(1,0),-1)));
+ TEST(int64_cmp_eq(int64_const(0,4), int64_shift(int64_const(2,0),-31)));
+ TEST(int64_cmp_eq(int64_const(0,2), int64_shift(int64_const(2,0),-32)));
+ TEST(int64_cmp_eq(int64_const(0,1), int64_shift(int64_const(2,0),-33)));
+ int64_t bit31 = int64_const(0, 0x80000000);
+ int64_t negbit31 = int64_const(-1, 0x80000000);
+ TEST(int64_cmp_eq(negbit31, int64_neg(bit31)));
+ TEST(int64_cmp_eq(int64_const(1,0), int64_mul_i64_i32(bit31, 2)));
+ TEST(int64_cmp_eq(int64_const(-1,(1<<31)), int64_mul_i64_i32(bit31, -1)));
+ TEST(int64_cmp_eq(int64_mul_i64_i32(int64_const(0,-1), fix16_maximum),
+ int64_const(0x7ffffffe, 0x80000001)));
+ TEST(int64_cmp_eq(int64_mul_i64_i32(int64_const(0,1), fix16_minimum),
+ int64_const(-1, fix16_minimum)));
+ }
+
{
COMMENT("Running linear interpolation test cases");
@@ -358,7 +383,6 @@ int main()
TEST(fix16_lerp32(fix16_minimum, fix16_maximum, 0xffffffff) == (fix16_maximum - 1));
TEST(fix16_lerp32(-fix16_maximum, fix16_maximum, 0x80000000) == 0);
}
-#endif
if (status != 0)
fprintf(stdout, "\n\nSome tests FAILED!\n");
diff --git a/unittests/run_unittests.sh b/unittests/run_unittests.sh
new file mode 100644
index 0000000..1fc1469
--- /dev/null
+++ b/unittests/run_unittests.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+fail=0
+pass=0
+
+for f in fix16_unittests_* fix16_exp_unittests fix16_macros_unittests fix16_str_unittests_*
+do
+ if ! ./$f >> /dev/null; then
+ echo "./$f failed!"
+ ((fail=fail+1))
+ else
+ ((pass=pass+1))
+ fi
+done
+
+echo "$fail tests failed, $pass tests passed." \ No newline at end of file