test_stack_sd.c (2800B)
1 #include "test_stack_sd.h" 2 3 void test_stack_sd_init() { 4 stack_sd s; 5 stack_sd_init(&s); 6 7 CU_ASSERT(s.nmemb == 0); 8 CU_ASSERT(s.alloc == BASE_STACK_SD_SIZE); 9 CU_ASSERT(s.data != NULL); 10 11 stack_sd_clear(&s); 12 13 stack_sd_init_size(&s, 4); 14 15 CU_ASSERT(s.nmemb == 0); 16 CU_ASSERT(s.alloc == 4); 17 CU_ASSERT(s.data != NULL); 18 19 stack_sd_clear(&s); 20 } 21 22 void test_stack_sd_push() { 23 stack_sd s; 24 stack_sd_init_size(&s, 4); 25 26 sd topush[5]; 27 size_t i; 28 for (i = 0; i < 5; i++) { 29 sd_init_u64(&topush[i], i); 30 stack_sd_push(&s, topush[i]); 31 32 CU_ASSERT(s.nmemb == i + 1); 33 } 34 CU_ASSERT(s.nmemb == 5); 35 CU_ASSERT(s.alloc == 8); 36 37 CU_ASSERT(memcmp(s.data, topush, sizeof(*topush) * 5) == 0); 38 39 for (i = 0; i < 5; i++) 40 sd_clear(&topush[i]); 41 stack_sd_clear(&s); 42 } 43 44 void test_stack_sd_get() { 45 stack_sd s; 46 stack_sd_init(&s); 47 48 sd topush[20]; 49 size_t i; 50 for (i = 0; i < 20; i++) { 51 sd_init_u64(&topush[i], i); 52 stack_sd_push(&s, topush[i]); 53 } 54 55 sd tmp; 56 for (i = 0; i < 20; i++) { 57 tmp = stack_sd_get(&s, i); 58 CU_ASSERT(tmp.size == topush[i].size); 59 CU_ASSERT(tmp.data == topush[i].data); 60 } 61 62 for (i = 0; i < 5; i++) 63 sd_clear(&topush[i]); 64 stack_sd_clear(&s); 65 } 66 67 void test_stack_sd_getlast() { 68 stack_sd s; 69 stack_sd_init_size(&s, 8); 70 71 sd topush[20]; 72 size_t i; 73 for (i = 0; i < 20; i++) { 74 sd_init_u64(&topush[i], i); 75 stack_sd_push(&s, topush[i]); 76 } 77 78 sd tmp = stack_sd_getlast(&s); 79 CU_ASSERT(tmp.size == topush[19].size); 80 CU_ASSERT(tmp.data == topush[19].data); 81 82 for (i = 0; i < 5; i++) 83 sd_clear(&topush[i]); 84 stack_sd_clear(&s); 85 } 86 87 void test_stack_sd_pop() { 88 stack_sd s; 89 stack_sd_init_size(&s, 8); 90 91 sd topush[20]; 92 size_t i; 93 for (i = 0; i < 20; i++) { 94 sd_init_u64(&topush[i], i); 95 stack_sd_push(&s, topush[i]); 96 } 97 98 sd tmp; 99 for (i = 0; i < 20; i++) { 100 tmp = stack_sd_pop(&s); 101 CU_ASSERT(tmp.size == topush[19 - i].size); 102 CU_ASSERT(tmp.data == topush[19 - i].data); 103 } 104 105 tmp = stack_sd_pop(&s); 106 CU_ASSERT(tmp.size == STACK_SD_EMPTY_POP.size); 107 CU_ASSERT(tmp.data == STACK_SD_EMPTY_POP.data); 108 109 tmp = stack_sd_pop(&s); 110 CU_ASSERT(tmp.size == STACK_SD_EMPTY_POP.size); 111 CU_ASSERT(tmp.data == STACK_SD_EMPTY_POP.data); 112 113 for (i = 0; i < 5; i++) 114 sd_clear(&topush[i]); 115 stack_sd_clear(&s); 116 } 117 118 void test_stack_sd_lookup() { 119 stack_sd s; 120 stack_sd_init_size(&s, 8); 121 122 sd topush[20]; 123 size_t i; 124 for (i = 0; i < 20; i++) { 125 sd_init_u64(&topush[i], i); 126 stack_sd_push(&s, topush[i]); 127 } 128 129 sd tmp; 130 sd_init_u64(&tmp, 13); 131 CU_ASSERT(stack_sd_lookup(&s, tmp) == 13); 132 sd_clear(&tmp); 133 sd_init_u64(&tmp, 22); 134 CU_ASSERT(stack_sd_lookup(&s, tmp) == STACK_SD_LOOKUP_NOT_FOUND); 135 sd_clear(&tmp); 136 137 for (i = 0; i < 5; i++) 138 sd_clear(&topush[i]); 139 stack_sd_clear(&s); 140 }