diff options
| author | Petteri Aimonen <jpa@github.mail.kapsi.fi> | 2020-10-29 21:23:07 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-10-29 21:23:07 +0200 |
| commit | 83c5f4438ebc2e781b0f98e4612b56c75db59c9d (patch) | |
| tree | 28fd64f5c735936210a5cff3c3deb9dda2c48c45 /unittests | |
| parent | 54c1f9276afa44fd21dba7ff2c8b117e7dbbfcf8 (diff) | |
| parent | 18a9ad00de49ce1724000b74a339e7dd3165bdd1 (diff) | |
| download | libfixmath-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.c | 28 | ||||
| -rw-r--r-- | unittests/run_unittests.sh | 16 |
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 |
