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