aboutsummaryrefslogtreecommitdiff
path: root/unittests
diff options
context:
space:
mode:
Diffstat (limited to 'unittests')
-rw-r--r--unittests/fix16_unittests.c30
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");