aocc22

Advent of Code 2022
git clone git://www.tkruger.se/aocc22.git
Log | Files | Refs | README

test_stack_str.c (1768B)


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