test_common.c 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. #include "test.h"
  2. #include "util.h"
  3. #include "util.c"
  4. static void check_util(void)
  5. {
  6. int ret;
  7. /* Check: sdiv_round_up() */
  8. ret = sdiv_round_up(10, 1);
  9. CHECK(ret == 10);
  10. ret = sdiv_round_up(10, 5);
  11. CHECK(ret == 2);
  12. ret = sdiv_round_up(10, 6);
  13. CHECK(ret == 2);
  14. ret = sdiv_round_up(10, 9);
  15. CHECK(ret == 2);
  16. ret = sdiv_round_up(10, 10);
  17. CHECK(ret == 1);
  18. ret = sdiv_round_up(-10, 1);
  19. CHECK(ret == -10);
  20. ret = sdiv_round_up(-10, 5);
  21. CHECK(ret == -2);
  22. ret = sdiv_round_up(-10, 6);
  23. CHECK(ret == -1);
  24. ret = sdiv_round_up(-10, 9);
  25. CHECK(ret == -1);
  26. ret = sdiv_round_up(-10, 10);
  27. CHECK(ret == -1);
  28. ret = sdiv_round_up(10, -1);
  29. CHECK(ret == -10);
  30. ret = sdiv_round_up(10, -5);
  31. CHECK(ret == -2);
  32. ret = sdiv_round_up(10, -6);
  33. CHECK(ret == -1);
  34. ret = sdiv_round_up(10, -9);
  35. CHECK(ret == -1);
  36. ret = sdiv_round_up(10, -10);
  37. CHECK(ret == -1);
  38. ret = sdiv_round_up(-10, -1);
  39. CHECK(ret == 10);
  40. ret = sdiv_round_up(-10, -5);
  41. CHECK(ret == 2);
  42. ret = sdiv_round_up(-10, -6);
  43. CHECK(ret == 2);
  44. ret = sdiv_round_up(-10, -9);
  45. CHECK(ret == 2);
  46. ret = sdiv_round_up(-10, -10);
  47. CHECK(ret == 1);
  48. /* Check: udiv_round_up() */
  49. ret = udiv_round_up(10, 1);
  50. CHECK(ret == 10);
  51. ret = udiv_round_up(10, 5);
  52. CHECK(ret == 2);
  53. ret = udiv_round_up(10, 6);
  54. CHECK(ret == 2);
  55. ret = udiv_round_up(10, 9);
  56. CHECK(ret == 2);
  57. ret = udiv_round_up(10, 10);
  58. CHECK(ret == 1);
  59. /* Check: sdiv_round() */
  60. ret = sdiv_round(10, 1);
  61. CHECK(ret == 10);
  62. ret = sdiv_round(10, 5);
  63. CHECK(ret == 2);
  64. ret = sdiv_round(10, 6);
  65. CHECK(ret == 2);
  66. ret = sdiv_round(10, 9);
  67. CHECK(ret == 1);
  68. ret = sdiv_round(10, 10);
  69. CHECK(ret == 1);
  70. ret = sdiv_round(15, 6);
  71. CHECK(ret == 3);
  72. ret = sdiv_round(-10, 1);
  73. CHECK(ret == -10);
  74. ret = sdiv_round(-10, 5);
  75. CHECK(ret == -2);
  76. ret = sdiv_round(-10, 6);
  77. CHECK(ret == -2);
  78. ret = sdiv_round(-10, 9);
  79. CHECK(ret == -1);
  80. ret = sdiv_round(-10, 10);
  81. CHECK(ret == -1);
  82. ret = sdiv_round(-15, 6);
  83. CHECK(ret == -3);
  84. ret = sdiv_round(10, -1);
  85. CHECK(ret == -10);
  86. ret = sdiv_round(10, -5);
  87. CHECK(ret == -2);
  88. ret = sdiv_round(10, -6);
  89. CHECK(ret == -2);
  90. ret = sdiv_round(10, -9);
  91. CHECK(ret == -1);
  92. ret = sdiv_round(10, -10);
  93. CHECK(ret == -1);
  94. ret = sdiv_round(15, -6);
  95. CHECK(ret == -3);
  96. ret = sdiv_round(-10, -1);
  97. CHECK(ret == 10);
  98. ret = sdiv_round(-10, -5);
  99. CHECK(ret == 2);
  100. ret = sdiv_round(-10, -6);
  101. CHECK(ret == 2);
  102. ret = sdiv_round(-10, -9);
  103. CHECK(ret == 1);
  104. ret = sdiv_round(-10, -10);
  105. CHECK(ret == 1);
  106. ret = sdiv_round(-15, -6);
  107. CHECK(ret == 3);
  108. /* Check: udiv_round() */
  109. ret = udiv_round(10, 1);
  110. CHECK(ret == 10);
  111. ret = udiv_round(10, 5);
  112. CHECK(ret == 2);
  113. ret = udiv_round(10, 6);
  114. CHECK(ret == 2);
  115. ret = udiv_round(10, 9);
  116. CHECK(ret == 1);
  117. ret = udiv_round(10, 10);
  118. CHECK(ret == 1);
  119. ret = udiv_round(15, 6);
  120. CHECK(ret == 3);
  121. /* Check: pow_int() */
  122. CHECK_EQ_II(pow_int(0, 1), 0);
  123. CHECK_EQ_II(pow_int(10, 0), 1);
  124. CHECK_EQ_II(pow_int(10, 1), 10);
  125. CHECK_EQ_II(pow_int(10, 2), 100);
  126. CHECK_EQ_II(pow_int(10, 3), 1000);
  127. CHECK_EQ_II(pow_int(10, 4), 10000);
  128. CHECK_EQ_II(pow_int(10, 5), 100000);
  129. CHECK_EQ_II(pow_int(-10, 0), 1);
  130. CHECK_EQ_II(pow_int(-10, 1), -10);
  131. CHECK_EQ_II(pow_int(-10, 2), 100);
  132. CHECK_EQ_II(pow_int(-10, 3), -1000);
  133. CHECK_EQ_II(pow_int(-10, 4), 10000);
  134. CHECK_EQ_II(pow_int(-10, 5), -100000);
  135. CHECK_EQ_II(pow_int(3, 0), 1);
  136. CHECK_EQ_II(pow_int(3, 1), 3);
  137. CHECK_EQ_II(pow_int(3, 2), 9);
  138. CHECK_EQ_II(pow_int(3, 3), 27);
  139. CHECK_EQ_II(pow_int(3, 4), 81);
  140. CHECK_EQ_II(pow_int(3, 5), 243);
  141. CHECK_EQ_II(pow_int(-3, 0), 1);
  142. CHECK_EQ_II(pow_int(-3, 1), -3);
  143. CHECK_EQ_II(pow_int(-3, 2), 9);
  144. CHECK_EQ_II(pow_int(-3, 3), -27);
  145. CHECK_EQ_II(pow_int(-3, 4), 81);
  146. CHECK_EQ_II(pow_int(-3, 5), -243);
  147. }
  148. int main(void)
  149. {
  150. check_util();
  151. return 0;
  152. }