1 #include "first.h" 2 3 #undef NDEBUG 4 #include <assert.h> 5 #include <stdio.h> 6 #include <stdlib.h> 7 8 #include "array.h" 9 #include "buffer.h" 10 11 static void test_array_get_int_ptr (void) { 12 data_integer *di; 13 int *i; 14 array *a = array_init(); 15 16 i = array_get_int_ptr(a, CONST_STR_LEN("abc")); 17 assert(NULL != i); 18 *i = 4; 19 i = array_get_int_ptr(a, CONST_STR_LEN("abc")); 20 assert(NULL != i); 21 assert(*i == 4); 22 di = (data_integer *)array_get_element_klen(a, CONST_STR_LEN("does-not-exist")); 23 assert(NULL == di); 24 di = (data_integer *)array_get_element_klen(a, CONST_STR_LEN("abc")); 25 assert(NULL != di); 26 assert(di->value == 4); 27 28 array_free(a); 29 } 30 31 static void test_array_insert_value (void) { 32 data_string *ds; 33 array *a = array_init(); 34 35 array_insert_value(a, CONST_STR_LEN("def")); 36 ds = (data_string *)a->data[0]; 37 assert(NULL != ds); 38 assert(buffer_is_equal_string(ds->value, CONST_STR_LEN("def"))); 39 40 array_free(a); 41 } 42 43 static void test_array_insert_key_value (void) { 44 data_string *ds; 45 array *a = array_init(); 46 47 array_insert_key_value(a, CONST_STR_LEN("abc"), CONST_STR_LEN("alfrag")); 48 ds = (data_string *)array_get_element_klen(a, CONST_STR_LEN("does-not-exist")); 49 assert(NULL == ds); 50 ds = (data_string *)array_get_element_klen(a, CONST_STR_LEN("abc")); 51 assert(NULL != ds); 52 assert(buffer_is_equal_string(ds->key, CONST_STR_LEN("abc"))); 53 assert(buffer_is_equal_string(ds->value, CONST_STR_LEN("alfrag"))); 54 55 array_insert_key_value(a, CONST_STR_LEN("abc"), CONST_STR_LEN("hameplman")); 56 ds = (data_string *)array_get_element_klen(a, CONST_STR_LEN("does-not-exist")); 57 assert(NULL == ds); 58 ds = (data_string *)array_get_element_klen(a, CONST_STR_LEN("abc")); 59 assert(NULL != ds); 60 assert(buffer_is_equal_string(ds->key, CONST_STR_LEN("abc"))); 61 assert(buffer_is_equal_string(ds->value, CONST_STR_LEN("alfrag, hameplman"))); 62 63 array_insert_key_value(a, CONST_STR_LEN("123"), CONST_STR_LEN("alfrag")); 64 ds = (data_string *)array_get_element_klen(a, CONST_STR_LEN("does-not-exist")); 65 assert(NULL == ds); 66 ds = (data_string *)array_get_element_klen(a, CONST_STR_LEN("123")); 67 assert(NULL != ds); 68 assert(buffer_is_equal_string(ds->key, CONST_STR_LEN("123"))); 69 assert(buffer_is_equal_string(ds->value, CONST_STR_LEN("alfrag"))); 70 71 array_free(a); 72 } 73 74 static void test_array_set_key_value (void) { 75 data_string *ds; 76 array *a = array_init(); 77 78 array_set_key_value(a, CONST_STR_LEN("abc"), CONST_STR_LEN("def")); 79 ds = (data_string *)array_get_element_klen(a, CONST_STR_LEN("does-not-exist")); 80 assert(NULL == ds); 81 ds = (data_string *)array_get_element_klen(a, CONST_STR_LEN("abc")); 82 assert(NULL != ds); 83 assert(buffer_is_equal_string(ds->key, CONST_STR_LEN("abc"))); 84 assert(buffer_is_equal_string(ds->value, CONST_STR_LEN("def"))); 85 86 array_set_key_value(a, CONST_STR_LEN("abc"), CONST_STR_LEN("ghi")); 87 ds = (data_string *)array_get_element_klen(a, CONST_STR_LEN("does-not-exist")); 88 assert(NULL == ds); 89 ds = (data_string *)array_get_element_klen(a, CONST_STR_LEN("abc")); 90 assert(NULL != ds); 91 assert(buffer_is_equal_string(ds->key, CONST_STR_LEN("abc"))); 92 assert(buffer_is_equal_string(ds->value, CONST_STR_LEN("ghi"))); 93 94 array_free(a); 95 } 96 97 int main() { 98 test_array_get_int_ptr(); 99 test_array_insert_value(); 100 test_array_insert_key_value(); 101 test_array_set_key_value(); 102 103 return 0; 104 } 105