aocc22

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

test_sd.c (2077B)


      1 #include "test_sd.h"
      2 
      3 void test_sd_init()
      4 {
      5     sd s;
      6     sd_init(&s, 12);
      7 
      8     CU_ASSERT(s.size == 12);
      9 
     10     size_t i;
     11     for(i = 0; i < s.size; i++) 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 {
     35     char* strs[4] = {"bc", "abc", "abd", "abcd"};
     36 
     37     sd ss[4];
     38     size_t i;
     39     for(i = 0; i < 4; i++) {
     40         sd_init_str(&ss[i], strs[i]);
     41     }
     42 
     43     CU_ASSERT(sd_cmp(&ss[0], &ss[1]) < 0);
     44     CU_ASSERT(sd_cmp(&ss[0], &ss[2]) < 0);
     45     CU_ASSERT(sd_cmp(&ss[0], &ss[3]) < 0);
     46     CU_ASSERT(sd_cmp(&ss[0], &ss[0]) == 0);
     47     CU_ASSERT(sd_cmp(&ss[1], &ss[2]) < 0);
     48     CU_ASSERT(sd_cmp(&ss[1], &ss[3]) < 0);
     49     CU_ASSERT(sd_cmp(&ss[3], &ss[2]) > 0);
     50     
     51     for(i = 0; i < 4; i++) {
     52         sd_clear(&ss[i]);
     53     }
     54 }
     55 
     56 void test_sd_hash()
     57 {
     58     char* strs[4] = {"bc", "abc", "abd", "abd"};
     59 
     60     sd ss[4];
     61     size_t i;
     62     for(i = 0; i < 4; i++) {
     63         sd_init_str(&ss[i], strs[i]);
     64     }
     65 
     66     CU_ASSERT(sd_hash(&ss[0]) != sd_hash(&ss[1]));
     67     CU_ASSERT(sd_hash(&ss[0]) != sd_hash(&ss[2]));
     68     CU_ASSERT(sd_hash(&ss[0]) != sd_hash(&ss[3]));
     69     CU_ASSERT(sd_hash(&ss[1]) != sd_hash(&ss[2]));
     70     CU_ASSERT(sd_hash(&ss[1]) != sd_hash(&ss[3]));
     71     CU_ASSERT(sd_hash(&ss[2]) == sd_hash(&ss[3]));
     72 
     73     for(i = 0; i < 4; i++)
     74         sd_clear(&ss[i]);
     75 }
     76 
     77 void test_sd_conv_u64()
     78 {
     79 	sd s;
     80 	sd_init_u64(&s,0xdeadbeeffeedbaaf);
     81 	uint64_t c = sd_conv_u64(&s);
     82 	CU_ASSERT(c == 0xdeadbeeffeedbaaf);
     83 	sd_clear(&s);
     84 }
     85 
     86 void test_sd_get_str()
     87 {
     88 	sd s;
     89 	char* str = "hello world!";
     90 	sd_init_str(&s, str);
     91 	char* mystr = sd_get_str(&s);
     92 
     93 	CU_ASSERT(mystr != str);
     94 	CU_ASSERT(strncmp(str, mystr, 13) == 0);
     95 
     96 	sd_clear(&s);
     97 }