aocc22

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

test_stack_u64.c (1451B)


      1 #include "test_stack_u64.h"
      2 
      3 void test_stack_u64_init()
      4 {
      5     stack_u64 t;
      6     stack_u64_init(&t);
      7 
      8     CU_ASSERT(t.nmemb == 0);
      9     CU_ASSERT(t.alloc > 0);
     10     CU_ASSERT(t.data != NULL);
     11 
     12     stack_u64_clear(&t);
     13 }
     14 
     15 void test_stack_u64_push()
     16 {
     17     stack_u64 t;
     18     stack_u64_init(&t);
     19 
     20     uint64_t i;
     21     for(i = 0; i < 2*BASE_STACK_SIZE; i++) {
     22         stack_u64_push(&t, i);
     23     }
     24 
     25     CU_ASSERT(t.alloc == 2*BASE_STACK_SIZE);
     26     CU_ASSERT(t.nmemb == 2*BASE_STACK_SIZE);
     27     for(i = 0; i < 2*BASE_STACK_SIZE; i++) {
     28         CU_ASSERT(t.data[i] == i);
     29     }
     30 
     31     stack_u64_clear(&t);
     32 }
     33 
     34 void test_stack_u64_get_getlast()
     35 {
     36     stack_u64 t;
     37     stack_u64_init(&t);
     38 
     39     uint64_t i;
     40     for(i = 0; i < 2*BASE_STACK_SIZE; i++) {
     41         stack_u64_push(&t, i);
     42     }
     43 
     44     for(i = 0; i < t.nmemb; i++) {
     45         CU_ASSERT(stack_u64_get(&t, i) == i);
     46     }
     47     CU_ASSERT(stack_u64_getlast(&t) == 2*BASE_STACK_SIZE-1);
     48 
     49     stack_u64_clear(&t);
     50 }
     51 
     52 void test_stack_u64_pop()
     53 {
     54     stack_u64 t;
     55     stack_u64_init(&t);
     56 
     57     stack_u64_push(&t, 13);
     58     stack_u64_push(&t, 16);
     59     stack_u64_push(&t, 17);
     60 
     61     CU_ASSERT(t.nmemb == 3);
     62     CU_ASSERT(stack_u64_pop(&t) == 17);
     63     CU_ASSERT(t.nmemb == 2);
     64     CU_ASSERT(stack_u64_pop(&t) == 16);
     65     CU_ASSERT(t.nmemb == 1);
     66     CU_ASSERT(stack_u64_pop(&t) == 13);
     67     CU_ASSERT(t.nmemb == 0);
     68     CU_ASSERT(stack_u64_pop(&t) == STACK_U64_EMPTY_POP);
     69     CU_ASSERT(t.nmemb == 0);
     70 
     71     stack_u64_clear(&t);
     72 }