aocc23

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

test_stack_u64.c (1373B)


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