main.c 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #include "sllist.h"
  2. #include "common.h"
  3. static inline int test_create()
  4. {
  5. sl_list *a = sllist_create();
  6. _assertNotNull(a);
  7. _assertEqual(sllist_count(a), 0);
  8. _assertEqual(sllist_count(sllist_clear(a)), 0);
  9. sllist_destroy(a);
  10. return 0;
  11. }
  12. static inline int add1_fnc(void **_i, void *nullable)
  13. {
  14. (void) nullable;
  15. int * i = (int *)_i;
  16. (*i)++;
  17. return 1;
  18. }
  19. static inline int test_add()
  20. {
  21. unsigned long long i;
  22. sl_list *a = sllist_create();
  23. _assertNotNull(a);
  24. _assertEqual(sllist_count(a), 0);
  25. sllist_pushback(a, (void *)3);
  26. _assertEqual(sllist_count(a), 1);
  27. _assertEqual(sllist_at(a, 0), 3);
  28. sllist_pushback(a, (void *)2);
  29. _assertEqual(sllist_count(a), 2);
  30. _assertEqual(sllist_at(a, 0), 3);
  31. _assertEqual(sllist_at(a, 1), 2);
  32. _assertEqual(sllist_popback(a), 2);
  33. _assertEqual(sllist_count(a), 1);
  34. _assertEqual(sllist_at(a, 0), 3);
  35. sllist_clear(a);
  36. _assertEqual(sllist_count(a), 0);
  37. for (i=0; i < 1024; ++i)
  38. sllist_pushback(a, (void *)(i * 2));
  39. _assertEqual(sllist_count(a), 1024);
  40. _assertEqual(sllist_at(a, 0), 0);
  41. _assertEqual(sllist_at(a, 1023), 2046);
  42. _assertEqual(sllist_at(a, 1024), 0);
  43. i = 0;
  44. _assertEqual(sllist_find(a, sllist_cmp_int, (void*)i), 0);
  45. i = 2;
  46. _assertEqual(sllist_find(a, sllist_cmp_int, (void*)i), 1);
  47. i = 2046;
  48. _assertEqual(sllist_find(a, sllist_cmp_int, (void*)i), 1023);
  49. i = 2048;
  50. _assertEqual(sllist_find(a, sllist_cmp_int, (void*)i), -1);
  51. sllist_foreach(a, add1_fnc, NULL);
  52. _assertEqual(sllist_count(a), 1024);
  53. _assertEqual(sllist_at(a, 0), 1);
  54. _assertEqual(sllist_at(a, 1023), 2047);
  55. _assertEqual(sllist_at(a, 1024), 0);
  56. i = 1;
  57. _assertEqual(sllist_find(a, sllist_cmp_int, (void*)i), 0);
  58. i = 3;
  59. _assertEqual(sllist_find(a, sllist_cmp_int, (void*)i), 1);
  60. i = 2047;
  61. _assertEqual(sllist_find(a, sllist_cmp_int, (void*)i), 1023);
  62. _assertEqual(sllist_remove(a, sllist_cmp_int, (void*)i), 1);
  63. _assertEqual(sllist_find(a, sllist_cmp_int, (void*)i), -1);
  64. while (sllist_count(a))
  65. sllist_popback(a);
  66. for (i=0; i < 1024; ++i)
  67. sllist_pushback(a, (void *)(i * 2));
  68. _assertEqual(sllist_count(a), 1024);
  69. _assertEqual(sllist_at(a, 0), 0);
  70. _assertEqual(sllist_at(a, 1023), 2046);
  71. _assertEqual(sllist_at(a, 1024), 0);
  72. sllist_destroy(a);
  73. return 0;
  74. }
  75. int main()
  76. {
  77. int success = 1;
  78. success &= !test_create();
  79. success &= !test_add();
  80. exit(success ? EXIT_SUCCESS: EXIT_FAILURE);
  81. }