test_dynar.c 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. /**
  2. * This is a test for dynar in $package$
  3. */
  4. #include "si_test.h"
  5. #include "dynar.h"
  6. #include <string.h>
  7. int dynar_string_compare(const void * one, const void * two) {
  8. if(!one) {
  9. if(!two) return 0;
  10. return 1;
  11. }
  12. if(!two) return -1;
  13. if(!*(char*)one) {
  14. if(!*(char *)two) return 0;
  15. return 1;
  16. }
  17. if(!*(char *)two) return -1;
  18. printf("Compare: %s, %s\n",*((const char**) one), *((const char**) two));
  19. return strcmp( *((const char**) one), *((const char**) two));
  20. }
  21. TEST_FUNC(dynar) {
  22. int index;
  23. const char * t = "wine";
  24. Dynar * arr;
  25. arr = dynar_newptr(4);
  26. TEST_NOTNULL(dynar_putptr(arr, 0, "zebra"));
  27. TEST_NOTNULL(dynar_putptr(arr, 1, "apple"));
  28. TEST_NOTNULL(dynar_putptr(arr, 2, "bread"));
  29. TEST_NOTNULL(dynar_putptr(arr, 3, "wine"));
  30. dynar_grow(arr, 9);
  31. TEST_NOTNULL(dynar_putptr(arr, 4, "thyme"));
  32. for(index = 5; index < dynar_size(arr); index ++) {
  33. dynar_putptr(arr, index, NULL);
  34. }
  35. for(index = 0; index < dynar_size(arr); index ++) {
  36. char * str = dynar_getptr(arr, index);
  37. if(str) {
  38. printf("Array index %d : %s\n", index, str);
  39. } else {
  40. printf("Array index %d : NULL\n", index);
  41. }
  42. }
  43. TEST_NOTNULL(dynar_qsort(arr, dynar_string_compare));
  44. printf("After qsort:\n");
  45. for(index = 0; index < dynar_size(arr); index ++) {
  46. char * str = dynar_getptr(arr, index);
  47. printf("Array index %d : %s\n", index, str);
  48. }
  49. TEST_NOTNULL(dynar_bsearch(arr, &t, dynar_string_compare));
  50. TEST_DONE();
  51. }
  52. TEST_FUNC(dynar_long) {
  53. long value = 0;
  54. Dynar * arr = dynar_new_long();
  55. dynar_grow(arr, 10);
  56. TEST_NOTNULL(dynar_put_long(arr, 3, 12345678));
  57. TEST_NOTNULL(dynar_get_long(arr, 3, &value));
  58. TEST_LONGEQ(value, 12345678);
  59. TEST_NOTNULL(dynar_append_long(arr, 9876));
  60. TEST_NOTNULL(dynar_get_long(arr, 10, &value));
  61. TEST_LONGEQ(value, 9876);
  62. TEST_NOTNULL(dynar_append_long(arr, 9876));
  63. TEST_NOTNULL(dynar_get_long(arr, 11, &value));
  64. TEST_LONGEQ(value, 9876);
  65. TEST_NOTNULL(dynar_append_long(arr, 9876));
  66. TEST_NOTNULL(dynar_get_long(arr, 12, &value));
  67. TEST_LONGEQ(value, 9876);
  68. TEST_NOTNULL(dynar_append_long(arr, 9876));
  69. TEST_NOTNULL(dynar_get_long(arr, 13, &value));
  70. TEST_LONGEQ(value, 9876);
  71. TEST_NOTNULL(dynar_append_long(arr, 9876));
  72. TEST_NOTNULL(dynar_get_long(arr, 14, &value));
  73. TEST_LONGEQ(value, 9876);
  74. TEST_NOTNULL(dynar_append_long(arr, 9876));
  75. TEST_NOTNULL(dynar_get_long(arr, 15, &value));
  76. TEST_LONGEQ(value, 9876);
  77. TEST_NOTNULL(dynar_append_long(arr, 9876));
  78. TEST_NOTNULL(dynar_get_long(arr, 16, &value));
  79. TEST_LONGEQ(value, 9876);
  80. TEST_NOTNULL(dynar_append_long(arr, 9876));
  81. TEST_NOTNULL(dynar_get_long(arr, 17, &value));
  82. TEST_LONGEQ(value, 9876);
  83. TEST_DONE();
  84. }
  85. int main(void) {
  86. TEST_INIT();
  87. TEST_RUN(dynar);
  88. TEST_RUN(dynar_long);
  89. TEST_REPORT();
  90. }