test_tarray.c 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. /**
  2. * This is a test for tarray in $package$
  3. */
  4. #include "si_test.h"
  5. /* Get Tarray interface, generate for integer type */
  6. #define TEMPLATE_ZERO 0
  7. #define TEMPLATE_T int
  8. #define TEMPLATE_NAME Intarr
  9. #define TEMPLATE_PREFIX intarr_
  10. #include "tarray.h"
  11. /* Get Tarray implementation, generate for integer type */
  12. #define TEMPLATE_ZERO 0
  13. #define TEMPLATE_IMPLEMENT
  14. #define TEMPLATE_T int
  15. #define TEMPLATE_NAME Intarr
  16. #define TEMPLATE_PREFIX intarr_
  17. #include "tarray.h"
  18. /* Get interface for pointer type. */
  19. #define TEMPLATE_ZERO NULL
  20. #define TEMPLATE_T void*
  21. #define TEMPLATE_NAME Ptrarr
  22. #define TEMPLATE_PREFIX ptrarr_
  23. #include "tarray.h"
  24. /* Get implementation for pointer type. */
  25. #define TEMPLATE_ZERO NULL
  26. #define TEMPLATE_IMPLEMENT
  27. #define TEMPLATE_T void*
  28. #define TEMPLATE_NAME Ptrarr
  29. #define TEMPLATE_PREFIX ptrarr_
  30. #include "tarray.h"
  31. TEST_FUNC(tarray_int) {
  32. Intarr array_struct;
  33. Intarr * array = &array_struct;
  34. int get;
  35. TEST_NOTNULL(intarr_init(array, 5));
  36. TEST_NOTNULL(intarr_put(array, 3, 123));
  37. TEST_NOTNULL(intarr_put(array, 0, 654));
  38. TEST_NULL(intarr_put(array, 5, 321));
  39. TEST_NOTNULL(intarr_put(array, 1, 321));
  40. TEST_NULL(intarr_put(array, 10, 456));
  41. TEST_INTEQ(123, intarr_getraw(array, 3, 0));
  42. TEST_INTEQ(654, intarr_getraw(array, 0, 0));
  43. TEST_TRUE(intarr_get(array, 3, &get));
  44. TEST_INTEQ(123, get);
  45. TEST_TRUE(intarr_get(array, 0, &get));
  46. TEST_INTEQ(654, get);
  47. TEST_FALSE(intarr_get(array, 5, &get));
  48. TEST_TRUE(intarr_get(array, 1, &get));
  49. TEST_FALSE(intarr_get(array, 10, &get));
  50. TEST_NOTNULL(intarr_done(array));
  51. TEST_DONE();
  52. }
  53. TEST_FUNC(tarray_ptr) {
  54. Ptrarr array_struct;
  55. Ptrarr * array = &array_struct;
  56. int i1 = 123;
  57. int i2 = 234;
  58. int i3 = 354;
  59. int i4 = 456;
  60. void * get;
  61. void * p1 = &i1;
  62. void * p2 = &i2;
  63. void * p3 = &i3;
  64. void * p4 = &i4;
  65. TEST_NOTNULL(ptrarr_init(array, 5));
  66. TEST_NOTNULL(ptrarr_put(array, 3, p1));
  67. TEST_NOTNULL(ptrarr_put(array, 0, p2));
  68. TEST_NULL(ptrarr_put(array, 5, p3));
  69. TEST_NOTNULL(ptrarr_put(array, 1, p3));
  70. TEST_NULL(ptrarr_put(array, 10, p4));
  71. TEST_PTREQ(p1, ptrarr_getraw(array, 3, NULL));
  72. TEST_PTREQ(p2, ptrarr_getraw(array, 0, NULL));
  73. TEST_TRUE(ptrarr_get(array, 3, &get));
  74. TEST_PTREQ(p1, get);
  75. TEST_TRUE(ptrarr_get(array, 0, &get));
  76. TEST_PTREQ(p2, get);
  77. TEST_FALSE(ptrarr_get(array, 5, &get));
  78. TEST_TRUE(ptrarr_get(array, 1, &get));
  79. TEST_FALSE(ptrarr_get(array, 10, &get));
  80. TEST_NOTNULL(ptrarr_done(array));
  81. TEST_DONE();
  82. }
  83. int main(void) {
  84. TEST_INIT();
  85. TEST_RUN(tarray_int);
  86. TEST_RUN(tarray_ptr);
  87. TEST_REPORT();
  88. }