void check_token(const char *input, unsigned int input_size, unsigned int *pos, const char *expected_result, unsigned int expected_pos) { char result[80]; lex_look_ahead(input, input_size, pos, result, sizeof(result)); check_unsigned_ints(*pos, expected_pos, "expected pos"); check_strs(result, expected_result, "token"); }
void check_depth(unsigned int check_num, names_stack *stack, const char *name, unsigned int depth) { unsigned int actual_depth; char buf[MAX_TO_STRING]; sprintf(buf, "check %u: ", check_num); stack_to_string(stack, buf + strlen(buf), MAX_TO_STRING - strlen(buf)); actual_depth = stack_name_pos(stack, name); check_unsigned_ints(actual_depth, depth, buf); }
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 check_expected_calls(ecc_context *ctx, const char *test_name, const char **expected_calls, unsigned int count) { mock_data *data = (mock_data *)ctx->data; unsigned int i, len; char buf[10000]; sprintf(buf, "%s:\nexpected_calls {\n", test_name); for (i = 0; i < count; i++) { len = strlen(buf); sprintf(&buf[len], "%d:\t%s\n", i, expected_calls[i]); } len = strlen(buf); sprintf(&buf[len], "}\n"); len = strlen(buf); ctx->to_string(ctx, &buf[len], sizeof(buf) - len); check_unsigned_ints(data->calls, count, buf); for (i = 0; i < count; i++) { check_strs(data->call[i], expected_calls[i], buf); } }