main.c 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #include <string.h>
  2. #include <stdlib.h>
  3. #include "cmocka/cmocka.h"
  4. #include "DynString.h"
  5. void test_DynString_alloc(void** state) {
  6. const char* c_str = "Hello";
  7. const size_t c_str_len = strlen(c_str);
  8. DynString dstr = DynString_alloc(c_str, c_str_len);
  9. assert_memory_equal(dstr.data, c_str, c_str_len + 1);
  10. assert_true(dstr.len == c_str_len);
  11. assert_true(dstr.capacity == c_str_len);
  12. free(dstr.data);
  13. }
  14. void test_DynString_free(void** state) {
  15. DynString dstr = DynString_alloc("Hello", strlen("Hello"));
  16. DynString_free(&dstr);
  17. assert_null(dstr.data);
  18. assert_true(dstr.len == 0);
  19. assert_true(dstr.capacity == 0);
  20. }
  21. void test_DynString_equal(void** state) {
  22. DynString s1 = DynString_alloc("Hello", strlen("Hello"));
  23. DynString s2 = DynString_alloc("Hello", strlen("Hello"));
  24. assert_true(DynString_equal(&s1, &s2));
  25. DynString_free(&s1);
  26. DynString_free(&s2);
  27. s1 = DynString_alloc("Hello", strlen("Hello"));
  28. s2 = DynString_alloc("Hello", strlen("Hello"));
  29. assert_true(DynString_equal(&s1, &s2));
  30. DynString_free(&s1);
  31. DynString_free(&s2);
  32. }
  33. void test_DynString_concat_c_str(void** state) {
  34. const char* dstr_c_str = "Hello";
  35. const char* c_str = " World";
  36. const size_t combined_length = strlen(dstr_c_str) + strlen(c_str);
  37. DynString dstr = DynString_alloc(dstr_c_str, strlen("Hello"));
  38. DynString_concat_c_str(&dstr, c_str, strlen(c_str));
  39. assert_memory_equal(dstr.data, "Hello World", strlen("Hello World"));
  40. assert_true(dstr.len == combined_length);
  41. assert_true(dstr.capacity == combined_length + 1);
  42. DynString_free(&dstr);
  43. }
  44. void test_DynString_c_str(void** state) {
  45. const char* c_str = "Hello";
  46. DynString dstr = DynString_alloc(c_str, strlen(c_str));
  47. assert_string_equal(c_str, DynString_c_str(&dstr));
  48. DynString_concat_c_str(&dstr, " World", strlen(" World"));
  49. assert_string_equal("Hello World", DynString_c_str(&dstr));
  50. }
  51. int main() {
  52. const struct CMUnitTest tests[] = {
  53. cmocka_unit_test(test_DynString_alloc),
  54. cmocka_unit_test(test_DynString_free),
  55. cmocka_unit_test(test_DynString_equal),
  56. cmocka_unit_test(test_DynString_concat_c_str),
  57. cmocka_unit_test(test_DynString_c_str),
  58. };
  59. return cmocka_run_group_tests(tests, NULL, NULL);
  60. }