test_stack_str.c (1685B)
1 #include "test_stack_str.h" 2 3 void test_stack_str_init() { 4 stack_str t; 5 stack_str_init(&t); 6 7 CU_ASSERT(t.nmemb == 0); 8 CU_ASSERT(t.alloc > 0); 9 CU_ASSERT(t.data != NULL); 10 11 stack_str_clear(&t); 12 } 13 14 void test_stack_str_push() { 15 stack_str t; 16 stack_str_init(&t); 17 18 uint64_t i; 19 char buf[2 * BASE_STACK_STR_SIZE][256]; 20 for (i = 0; i < 2 * BASE_STACK_STR_SIZE; i++) { 21 snprintf(buf[i], 256, "%llu", i); 22 stack_str_push(&t, buf[i]); 23 } 24 25 CU_ASSERT(t.alloc == 2 * BASE_STACK_STR_SIZE); 26 CU_ASSERT(t.nmemb == 2 * BASE_STACK_STR_SIZE); 27 for (i = 0; i < 2 * BASE_STACK_STR_SIZE; i++) { 28 CU_ASSERT(strncmp(buf[i], t.data[i], 256) == 0); 29 } 30 31 stack_str_clear(&t); 32 } 33 34 void test_stack_str_get_getlast() { 35 stack_str t; 36 stack_str_init(&t); 37 38 uint64_t i; 39 char buf[2 * BASE_STACK_STR_SIZE][256]; 40 for (i = 0; i < 2 * BASE_STACK_STR_SIZE; i++) { 41 snprintf(buf[i], 256, "%llu", i); 42 stack_str_push(&t, buf[i]); 43 } 44 45 for (i = 0; i < t.nmemb; i++) { 46 CU_ASSERT(stack_str_get(&t, i) == buf[i]); 47 } 48 CU_ASSERT(stack_str_getlast(&t) == buf[2 * BASE_STACK_STR_SIZE - 1]); 49 50 stack_str_clear(&t); 51 } 52 53 void test_stack_str_pop() { 54 stack_str t; 55 stack_str_init(&t); 56 57 char *strs[3] = {"hello", "world", "this is a msg"}; 58 59 stack_str_push(&t, strs[0]); 60 stack_str_push(&t, strs[1]); 61 stack_str_push(&t, strs[2]); 62 63 CU_ASSERT(t.nmemb == 3); 64 CU_ASSERT(stack_str_pop(&t) == strs[2]); 65 CU_ASSERT(t.nmemb == 2); 66 CU_ASSERT(stack_str_pop(&t) == strs[1]); 67 CU_ASSERT(t.nmemb == 1); 68 CU_ASSERT(stack_str_pop(&t) == strs[0]); 69 CU_ASSERT(t.nmemb == 0); 70 CU_ASSERT(stack_str_pop(&t) == STACK_STR_EMPTY_POP); 71 CU_ASSERT(t.nmemb == 0); 72 73 stack_str_clear(&t); 74 }