diff options
| author | Petteri Aimonen <jpa@github.mail.kapsi.fi> | 2020-10-23 08:22:13 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-10-23 08:22:13 +0300 |
| commit | 54c1f9276afa44fd21dba7ff2c8b117e7dbbfcf8 (patch) | |
| tree | 28c2c99189b3e0c5dc710274c025e623e90a99a1 /unittests | |
| parent | 66365d58887df65df8f3047474e5973f885f13de (diff) | |
| parent | 2859cbf31dd209cba93986c68c2ead37610eae66 (diff) | |
| download | libfixmath-54c1f9276afa44fd21dba7ff2c8b117e7dbbfcf8.tar.gz | |
Merge pull request #20 from HamAndChris/fix_linear_interpolation
Fix type conversion bugs in linear interpolation functions
Diffstat (limited to 'unittests')
| -rw-r--r-- | unittests/fix16_unittests.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/unittests/fix16_unittests.c b/unittests/fix16_unittests.c index 9a301a1..b63c25d 100644 --- a/unittests/fix16_unittests.c +++ b/unittests/fix16_unittests.c @@ -330,6 +330,36 @@ int main() TEST(failures == 0); } +#ifndef FIXMATH_NO_64BIT + { + COMMENT("Running linear interpolation test cases"); + + TEST(fix16_lerp8(0, 2, 0) == 0); + TEST(fix16_lerp8(0, 2, 127) == 0); + TEST(fix16_lerp8(0, 2, 128) == 1); + TEST(fix16_lerp8(0, 2, 255) == 1); + TEST(fix16_lerp8(fix16_minimum, fix16_maximum, 0) == fix16_minimum); + TEST(fix16_lerp8(fix16_minimum, fix16_maximum, 255) == (fix16_maximum - (1<<24))); + TEST(fix16_lerp8(-fix16_maximum, fix16_maximum, 128) == 0); + + TEST(fix16_lerp16(0, 2, 0) == 0); + TEST(fix16_lerp16(0, 2, 0x7fff) == 0); + TEST(fix16_lerp16(0, 2, 0x8000) == 1); + TEST(fix16_lerp16(0, 2, 0xffff) == 1); + TEST(fix16_lerp16(fix16_minimum, fix16_maximum, 0) == fix16_minimum); + TEST(fix16_lerp16(fix16_minimum, fix16_maximum, 0xffff) == (fix16_maximum - (1<<16))); + TEST(fix16_lerp16(-fix16_maximum, fix16_maximum, 0x8000) == 0); + + TEST(fix16_lerp32(0, 2, 0) == 0); + TEST(fix16_lerp32(0, 2, 0x7fffffff) == 0); + TEST(fix16_lerp32(0, 2, 0x80000000) == 1); + TEST(fix16_lerp32(0, 2, 0xffffffff) == 1); + TEST(fix16_lerp32(fix16_minimum, fix16_maximum, 0) == fix16_minimum); + 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"); |
