main.c 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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. int cmp_int(const void *a, const void *b)
  13. {
  14. return a == b;
  15. }
  16. static inline int add1_fnc(void **_i, void *nullable)
  17. {
  18. (void) nullable;
  19. int * i = (int *)_i;
  20. (*i)++;
  21. return 1;
  22. }
  23. static inline int test_add()
  24. {
  25. unsigned long long i;
  26. sl_list *a = sllist_create();
  27. _assertNotNull(a);
  28. _assertEqual(sllist_count(a), 0);
  29. sllist_pushback(a, (void *)3);
  30. _assertEqual(sllist_count(a), 1);
  31. _assertEqual(sllist_at(a, 0), 3);
  32. sllist_pushback(a, (void *)2);
  33. _assertEqual(sllist_count(a), 2);
  34. _assertEqual(sllist_at(a, 0), 3);
  35. _assertEqual(sllist_at(a, 1), 2);
  36. _assertEqual(sllist_popback(a), 2);
  37. _assertEqual(sllist_count(a), 1);
  38. _assertEqual(sllist_at(a, 0), 3);
  39. sllist_clear(a);
  40. _assertEqual(sllist_count(a), 0);
  41. for (i=0; i < 1024; ++i)
  42. sllist_pushback(a, (void *)(i * 2));
  43. _assertEqual(sllist_count(a), 1024);
  44. _assertEqual(sllist_at(a, 0), 0);
  45. _assertEqual(sllist_at(a, 1023), 2046);
  46. _assertEqual(sllist_at(a, 1024), 0);
  47. _assertEqual(sllist_find(a, cmp_int, 0), 0);
  48. _assertEqual(sllist_find(a, cmp_int, (void *)2), 1);
  49. _assertEqual(sllist_find(a, cmp_int, (void *)2046), 1023);
  50. _assertEqual(sllist_find(a, cmp_int, (void *)2048), -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. _assertEqual(sllist_find(a, cmp_int, (void *)1), 0);
  57. _assertEqual(sllist_find(a, cmp_int, (void *)3), 1);
  58. _assertEqual(sllist_find(a, cmp_int, (void *)2047), 1023);
  59. while (sllist_count(a))
  60. sllist_popback(a);
  61. for (i=0; i < 1024; ++i)
  62. sllist_pushback(a, (void *)(i * 2));
  63. _assertEqual(sllist_count(a), 1024);
  64. _assertEqual(sllist_at(a, 0), 0);
  65. _assertEqual(sllist_at(a, 1023), 2046);
  66. _assertEqual(sllist_at(a, 1024), 0);
  67. sllist_destroy(a);
  68. return 0;
  69. }
  70. int main()
  71. {
  72. int success = 1;
  73. success &= !test_create();
  74. success &= !test_add();
  75. exit(success ? EXIT_SUCCESS: EXIT_FAILURE);
  76. }