aocc23

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

test_sd.c (1990B)


      1 #include "test_sd.h"
      2 
      3 void test_sd_init() {
      4   sd s;
      5   sd_init(&s, 12);
      6 
      7   CU_ASSERT(s.size == 12);
      8 
      9   size_t i;
     10   for (i = 0; i < s.size; i++)
     11     s.data[i] = 0x00;
     12   for (i = 0; i < s.size; i++) {
     13     CU_ASSERT(s.data[i] == 0x00);
     14   }
     15 
     16   sd_clear(&s);
     17 
     18   sd_init_u64(&s, 13);
     19   uint64_t tretton = 13;
     20   CU_ASSERT(s.size == sizeof(uint64_t));
     21   CU_ASSERT(memcmp(s.data, &tretton, sizeof(uint64_t)) == 0);
     22 
     23   sd_clear(&s);
     24 
     25   char *mystr = "this is a test";
     26   sd_init_str(&s, mystr);
     27   CU_ASSERT(s.size == strlen(mystr) + 1);
     28   CU_ASSERT(memcmp(s.data, "this is a test", s.size) == 0);
     29 
     30   sd_clear(&s);
     31 }
     32 
     33 void test_sd_cmp() {
     34   char *strs[4] = {"bc", "abc", "abd", "abcd"};
     35 
     36   sd ss[4];
     37   size_t i;
     38   for (i = 0; i < 4; i++) {
     39     sd_init_str(&ss[i], strs[i]);
     40   }
     41 
     42   CU_ASSERT(sd_cmp(&ss[0], &ss[1]) < 0);
     43   CU_ASSERT(sd_cmp(&ss[0], &ss[2]) < 0);
     44   CU_ASSERT(sd_cmp(&ss[0], &ss[3]) < 0);
     45   CU_ASSERT(sd_cmp(&ss[0], &ss[0]) == 0);
     46   CU_ASSERT(sd_cmp(&ss[1], &ss[2]) < 0);
     47   CU_ASSERT(sd_cmp(&ss[1], &ss[3]) < 0);
     48   CU_ASSERT(sd_cmp(&ss[3], &ss[2]) > 0);
     49 
     50   for (i = 0; i < 4; i++) {
     51     sd_clear(&ss[i]);
     52   }
     53 }
     54 
     55 void test_sd_hash() {
     56   char *strs[4] = {"bc", "abc", "abd", "abd"};
     57 
     58   sd ss[4];
     59   size_t i;
     60   for (i = 0; i < 4; i++) {
     61     sd_init_str(&ss[i], strs[i]);
     62   }
     63 
     64   CU_ASSERT(sd_hash(&ss[0]) != sd_hash(&ss[1]));
     65   CU_ASSERT(sd_hash(&ss[0]) != sd_hash(&ss[2]));
     66   CU_ASSERT(sd_hash(&ss[0]) != sd_hash(&ss[3]));
     67   CU_ASSERT(sd_hash(&ss[1]) != sd_hash(&ss[2]));
     68   CU_ASSERT(sd_hash(&ss[1]) != sd_hash(&ss[3]));
     69   CU_ASSERT(sd_hash(&ss[2]) == sd_hash(&ss[3]));
     70 
     71   for (i = 0; i < 4; i++)
     72     sd_clear(&ss[i]);
     73 }
     74 
     75 void test_sd_conv_u64() {
     76   sd s;
     77   sd_init_u64(&s, 0xdeadbeeffeedbaaf);
     78   uint64_t c = sd_conv_u64(&s);
     79   CU_ASSERT(c == 0xdeadbeeffeedbaaf);
     80   sd_clear(&s);
     81 }
     82 
     83 void test_sd_get_str() {
     84   sd s;
     85   char *str = "hello world!";
     86   sd_init_str(&s, str);
     87   char *mystr = sd_get_str(&s);
     88 
     89   CU_ASSERT(mystr != str);
     90   CU_ASSERT(strncmp(str, mystr, 13) == 0);
     91 
     92   sd_clear(&s);
     93 }