void test_str_nlen() { const char *input = "foo"; const char *input2 = "fo\0bar"; const char *input3 = ""; unsigned int result, expected_result; result = str_nlen(input, sizeof(input)); expected_result = strlen(input); check_unsigned_ints(result, expected_result, "compare with libc"); check_unsigned_int(result, 3); result = str_nlen(input2, sizeof(input2)); expected_result = strlen(input2); check_unsigned_int(result, expected_result); result = str_nlen(input3, sizeof(input3)); expected_result = strlen(input3); check_unsigned_int(result, expected_result); result = str_nlen(input, 2); check_unsigned_ints(result, 2, "limit to 2 not 3"); }
void test_two_level_stack(void) { names_stack *stack; unsigned int check_num; check_num = 0; stack = stack_new(); stack_enter(stack); check_depth(check_num++, stack, "foo", 0); check_depth(check_num++, stack, "bar", 0); check_depth(check_num++, stack, "baz", 0); check_unsigned_int(stack_frame_size(stack), 0); stack_name_add(stack, "foo"); stack_name_add(stack, "bar"); check_depth(check_num++, stack, "foo", 1); check_depth(check_num++, stack, "bar", 2); check_depth(check_num++, stack, "baz", 0); check_unsigned_ints(stack_frame_size(stack), 2, "1"); stack_enter(stack); check_unsigned_ints(stack_frame_size(stack), 0, "2"); stack_name_add(stack, "baz"); check_unsigned_ints(stack_frame_size(stack), 1, "3"); stack_name_add(stack, "foo"); check_unsigned_ints(stack_frame_size(stack), 2, "4"); check_depth(check_num++, stack, "foo", 2); check_depth(check_num++, stack, "bar", 0); check_depth(check_num++, stack, "baz", 1); stack_leave(stack); check_unsigned_ints(stack_frame_size(stack), 2, "5"); check_depth(check_num++, stack, "foo", 1); check_depth(check_num++, stack, "bar", 2); check_depth(check_num++, stack, "baz", 0); stack_leave(stack); check_unsigned_ints(stack_frame_size(stack), 0, "6"); check_depth(check_num++, stack, "foo", 0); check_depth(check_num++, stack, "bar", 0); check_depth(check_num++, stack, "baz", 0); stack_destroy(stack); }
void test_str_ncpy() { const char *src = "foo"; char dest[80]; char *result, *expected_result; dest[60] = 'X'; check_unsigned_int(sizeof(dest), 80); check_char(dest[60], 'X'); result = str_ncpy(dest, src, sizeof(dest)); check_strs(dest, src, "1"); check_ptrs(result, dest, "2"); check_chars(dest[60], '\0', "should null-out rest of buffer"); expected_result = strncpy(dest, src, sizeof(dest)); check_strs(dest, src, "3"); check_ptrs(result, expected_result, "4"); }