main.c 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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 test_add()
  17. {
  18. unsigned long long i;
  19. sl_list *a = sllist_create();
  20. _assertNotNull(a);
  21. _assertEqual(sllist_count(a), 0);
  22. sllist_pushback(a, (void *)3);
  23. _assertEqual(sllist_count(a), 1);
  24. _assertEqual(sllist_at(a, 0), 3);
  25. sllist_pushback(a, (void *)2);
  26. _assertEqual(sllist_count(a), 2);
  27. _assertEqual(sllist_at(a, 0), 3);
  28. _assertEqual(sllist_at(a, 1), 2);
  29. _assertEqual(sllist_popback(a), 2);
  30. _assertEqual(sllist_count(a), 1);
  31. _assertEqual(sllist_at(a, 0), 3);
  32. sllist_clear(a);
  33. _assertEqual(sllist_count(a), 0);
  34. for (i=0; i < 1024; ++i)
  35. sllist_pushback(a, (void *)(i * 2));
  36. _assertEqual(sllist_count(a), 1024);
  37. _assertEqual(sllist_at(a, 0), 0);
  38. _assertEqual(sllist_at(a, 1023), 2046);
  39. _assertEqual(sllist_at(a, 1024), 0);
  40. _assertEqual(sllist_find(a, cmp_int, 0), 0);
  41. _assertEqual(sllist_find(a, cmp_int, (void *)2), 1);
  42. _assertEqual(sllist_find(a, cmp_int, (void *)2046), 1023);
  43. _assertEqual(sllist_find(a, cmp_int, (void *)2048), -1);
  44. while (sllist_count(a))
  45. sllist_popback(a);
  46. for (i=0; i < 1024; ++i)
  47. sllist_pushback(a, (void *)(i * 2));
  48. _assertEqual(sllist_count(a), 1024);
  49. _assertEqual(sllist_at(a, 0), 0);
  50. _assertEqual(sllist_at(a, 1023), 2046);
  51. _assertEqual(sllist_at(a, 1024), 0);
  52. sllist_destroy(a);
  53. return 0;
  54. }
  55. int main()
  56. {
  57. int success = 1;
  58. success &= !test_create();
  59. success &= !test_add();
  60. exit(success ? EXIT_SUCCESS: EXIT_FAILURE);
  61. }