aboutsummaryrefslogtreecommitdiff
path: root/unittests
diff options
context:
space:
mode:
authorPetteriAimonen <PetteriAimonen@d3e1167c-abe1-51d5-8199-f9061ebe54e4>2014-12-30 18:41:55 +0000
committerPetteriAimonen <PetteriAimonen@d3e1167c-abe1-51d5-8199-f9061ebe54e4>2014-12-30 18:41:55 +0000
commitcbbfe85a4adb27394898600eea62afbacdb962f3 (patch)
tree60f0e147c5a3995d7ca42d5e8fed1ea22945039d /unittests
parent516f37428ba501ca5a179c35474d6e3e70997fcb (diff)
downloadlibfixmath-cbbfe85a4adb27394898600eea62afbacdb962f3.tar.gz
Add F16C() macro for defining values without float support.
Implementation by Jonas Zeiger.
Diffstat (limited to 'unittests')
-rw-r--r--unittests/Makefile9
-rw-r--r--unittests/fix16_macros_unittests.c110
2 files changed, 118 insertions, 1 deletions
diff --git a/unittests/Makefile b/unittests/Makefile
index 14dac10..329caf4 100644
--- a/unittests/Makefile
+++ b/unittests/Makefile
@@ -8,7 +8,7 @@ CFLAGS = -g -O0 -I../libfixmath -Wall -Wextra -Werror
FIX16_SRC = ../libfixmath/fix16.c ../libfixmath/fix16_sqrt.c ../libfixmath/fix16_str.c \
../libfixmath/fix16_exp.c ../libfixmath/fix16.h
-all: run_fix16_unittests run_fix16_exp_unittests run_fix16_str_unittests
+all: run_fix16_unittests run_fix16_exp_unittests run_fix16_str_unittests run_fix16_macros_unittests
clean:
rm -f fix16_unittests_????
@@ -63,3 +63,10 @@ run_fix16_str_unittests: fix16_str_unittests
fix16_str_unittests: fix16_str_unittests.c $(FIX16_SRC)
$(CC) $(CFLAGS) $(DEFINES) -o $@ $^ -lm
+# Tests for literal macros, run only in default config
+run_fix16_macros_unittests: fix16_macros_unittests
+ ./fix16_macros_unittests > /dev/null
+
+fix16_macros_unittests: fix16_macros_unittests.c $(FIX16_SRC)
+ $(CC) $(CFLAGS) $(DEFINES) -o $@ $^ -lm
+
diff --git a/unittests/fix16_macros_unittests.c b/unittests/fix16_macros_unittests.c
new file mode 100644
index 0000000..cdfcfaf
--- /dev/null
+++ b/unittests/fix16_macros_unittests.c
@@ -0,0 +1,110 @@
+/* This test checks that the F16() and F16C() macros work correctly. */
+
+#include <fix16.h>
+#include <stdio.h>
+#include <math.h>
+#include <stdbool.h>
+#include "unittests.h"
+
+#define DO_TEST(i,m) \
+ TEST(F16(i ## . ## m) == F16C(i,m)) \
+ TEST(F16(i ## . ## m) == fix16_from_dbl(i ## . ## m))
+
+int main()
+{
+ int status = 0;
+
+ /* Corner cases */
+ DO_TEST(1,234)
+ DO_TEST(0,0)
+ DO_TEST(1,0)
+ DO_TEST(-1,0)
+ DO_TEST(1,5)
+ DO_TEST(-1,5)
+ DO_TEST(000000,00000)
+ DO_TEST(0,00001)
+ DO_TEST(0,00010)
+ DO_TEST(0,1)
+ DO_TEST(0,10001)
+ DO_TEST(0,11000)
+ DO_TEST(25,133)
+ DO_TEST(32767,00000)
+ DO_TEST(32767,00001)
+ DO_TEST(32767,99999)
+ DO_TEST(0,25)
+ DO_TEST(0,99555)
+ DO_TEST(0,99998)
+ DO_TEST(0,99999)
+ DO_TEST(-1,1)
+ DO_TEST(-25,133)
+ DO_TEST(-32767,00001)
+ DO_TEST(-32768,00000)
+
+ /* Random values */
+ DO_TEST( 0,02267)
+ DO_TEST( 1,49887)
+ DO_TEST( 0,27589)
+ DO_TEST( 0,38393)
+ DO_TEST( 0,08934)
+ DO_TEST( 0,95820)
+ DO_TEST( 0,95596)
+ DO_TEST( 72,10642)
+ DO_TEST( 0,48939)
+ DO_TEST( 3,37797)
+ DO_TEST( 1,09194)
+ DO_TEST( 0,08605)
+ DO_TEST( 3,04349)
+ DO_TEST( 3,95401)
+ DO_TEST( 15,36292)
+ DO_TEST( 56,09242)
+ DO_TEST( 0,54071)
+ DO_TEST( 27,08953)
+ DO_TEST( 0,03913)
+ DO_TEST( 1,32707)
+ DO_TEST( 4,50117)
+ DO_TEST( 0,24990)
+ DO_TEST( 44,77319)
+ DO_TEST( 2,59139)
+ DO_TEST( 0,16279)
+ DO_TEST( 17,14712)
+ DO_TEST( 11,54281)
+ DO_TEST( 0,02768)
+ DO_TEST( 0,39278)
+ DO_TEST( 0,19369)
+ DO_TEST( -0,04534)
+ DO_TEST( -0,00349)
+ DO_TEST( -2,30380)
+ DO_TEST( -0,03061)
+ DO_TEST( -7,50065)
+ DO_TEST( -3,97050)
+ DO_TEST( -0,43898)
+ DO_TEST( -3,49876)
+ DO_TEST( -1,35942)
+ DO_TEST( -10,81154)
+ DO_TEST( -0,26676)
+ DO_TEST( -9,52134)
+ DO_TEST( -0,42592)
+ DO_TEST( -0,05424)
+ DO_TEST( -0,62461)
+ DO_TEST( -0,21562)
+ DO_TEST( -0,22366)
+ DO_TEST( -0,09074)
+ DO_TEST( -1,29527)
+ DO_TEST( -4,98427)
+ DO_TEST( -0,10721)
+ DO_TEST( -11,39446)
+ DO_TEST(-451,53916)
+ DO_TEST( -0,04279)
+ DO_TEST( -3,36543)
+ DO_TEST( -0,01003)
+ DO_TEST( -12,08326)
+ DO_TEST( -1,07143)
+ DO_TEST( -1,07737)
+ DO_TEST( -0,22957)
+
+ if (status != 0)
+ fprintf(stdout, "\n\nSome tests FAILED!\n");
+
+ return status;
+}
+