fix16_macros_unittests.c 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. /* This test checks that the F16() and F16C() macros work correctly. */
  2. #include <fix16.h>
  3. #include <stdio.h>
  4. #include <math.h>
  5. #include <stdbool.h>
  6. #include "unittests.h"
  7. #define DO_TEST(i,m) \
  8. TEST(F16(i ## . ## m) == F16C(i,m)) \
  9. TEST(F16(i ## . ## m) == fix16_from_dbl(i ## . ## m))
  10. int main()
  11. {
  12. int status = 0;
  13. /* Corner cases */
  14. DO_TEST(1,234)
  15. DO_TEST(0,0)
  16. DO_TEST(1,0)
  17. DO_TEST(-1,0)
  18. DO_TEST(1,5)
  19. DO_TEST(-1,5)
  20. DO_TEST(000000,00000)
  21. DO_TEST(0,00001)
  22. DO_TEST(0,00010)
  23. DO_TEST(0,1)
  24. DO_TEST(0,10001)
  25. DO_TEST(0,11000)
  26. DO_TEST(25,133)
  27. DO_TEST(32767,00000)
  28. DO_TEST(32767,00001)
  29. DO_TEST(32767,99999)
  30. DO_TEST(0,25)
  31. DO_TEST(0,99555)
  32. DO_TEST(0,99998)
  33. DO_TEST(0,99999)
  34. DO_TEST(-1,1)
  35. DO_TEST(-25,133)
  36. DO_TEST(-32767,00001)
  37. DO_TEST(-32768,00000)
  38. /* Random values */
  39. DO_TEST( 0,02267)
  40. DO_TEST( 1,49887)
  41. DO_TEST( 0,27589)
  42. DO_TEST( 0,38393)
  43. DO_TEST( 0,08934)
  44. DO_TEST( 0,95820)
  45. DO_TEST( 0,95596)
  46. DO_TEST( 72,10642)
  47. DO_TEST( 0,48939)
  48. DO_TEST( 3,37797)
  49. DO_TEST( 1,09194)
  50. DO_TEST( 0,08605)
  51. DO_TEST( 3,04349)
  52. DO_TEST( 3,95401)
  53. DO_TEST( 15,36292)
  54. DO_TEST( 56,09242)
  55. DO_TEST( 0,54071)
  56. DO_TEST( 27,08953)
  57. DO_TEST( 0,03913)
  58. DO_TEST( 1,32707)
  59. DO_TEST( 4,50117)
  60. DO_TEST( 0,24990)
  61. DO_TEST( 44,77319)
  62. DO_TEST( 2,59139)
  63. DO_TEST( 0,16279)
  64. DO_TEST( 17,14712)
  65. DO_TEST( 11,54281)
  66. DO_TEST( 0,02768)
  67. DO_TEST( 0,39278)
  68. DO_TEST( 0,19369)
  69. DO_TEST( -0,04534)
  70. DO_TEST( -0,00349)
  71. DO_TEST( -2,30380)
  72. DO_TEST( -0,03061)
  73. DO_TEST( -7,50065)
  74. DO_TEST( -3,97050)
  75. DO_TEST( -0,43898)
  76. DO_TEST( -3,49876)
  77. DO_TEST( -1,35942)
  78. DO_TEST( -10,81154)
  79. DO_TEST( -0,26676)
  80. DO_TEST( -9,52134)
  81. DO_TEST( -0,42592)
  82. DO_TEST( -0,05424)
  83. DO_TEST( -0,62461)
  84. DO_TEST( -0,21562)
  85. DO_TEST( -0,22366)
  86. DO_TEST( -0,09074)
  87. DO_TEST( -1,29527)
  88. DO_TEST( -4,98427)
  89. DO_TEST( -0,10721)
  90. DO_TEST( -11,39446)
  91. DO_TEST(-451,53916)
  92. DO_TEST( -0,04279)
  93. DO_TEST( -3,36543)
  94. DO_TEST( -0,01003)
  95. DO_TEST( -12,08326)
  96. DO_TEST( -1,07143)
  97. DO_TEST( -1,07737)
  98. DO_TEST( -0,22957)
  99. if (status != 0)
  100. fprintf(stdout, "\n\nSome tests FAILED!\n");
  101. return status;
  102. }