const gchar * grn_test_send_command(grn_ctx *context, const gchar *command) { unsigned int send_id, receive_id; GString *result; const gchar **lines; result = g_string_new(NULL); lines = cut_take_string_array(g_strsplit(command, "\n", 0)); for (; *lines; lines++) { gchar *command_result; unsigned int command_result_length; int flags = 0; send_id = grn_ctx_send(context, *lines, strlen(*lines), 0); receive_id = grn_ctx_recv(context, &command_result, &command_result_length, &flags); cut_assert_equal_uint(send_id, receive_id); g_string_append_len(result, command_result, command_result_length); grn_test_assert_context(context, cut_message("<%s>:<%s>", command, result->str)); } return cut_take_strdup(g_string_free(result, FALSE)); }
void grn_test_send_commands(grn_ctx *context, const gchar *line_separated_commands) { const gchar **commands; commands = cut_take_string_array(g_strsplit(line_separated_commands, "\n", 0)); for (; *commands; commands++) { if (*commands[0] != '\0') { grn_test_send_command(context, *commands); } } }
void grn_test_assert_send_command_error_helper (grn_ctx *context, grn_rc expected_rc, const gchar *expected_message, const gchar *command, const gchar *expected_rc_expression, const gchar *expected_message_expression, const gchar *command_expression) { const gchar **lines; lines = cut_take_string_array(g_strsplit(command, "\n", 0)); for (; *lines; lines++) { grn_ctx_send(context, *lines, strlen(*lines), 0); if (context->rc) { break; } } if (context->rc == expected_rc && cut_equal_string(expected_message, context->errbuf)) { gchar *command_result; unsigned int command_result_length; int flags = 0; cut_test_pass(); grn_ctx_recv(context, &command_result, &command_result_length, &flags); } else { cut_set_expected(cut_take_printf("<%s>(%s)", expected_message, grn_rc_to_string(expected_rc))); cut_set_actual(cut_take_printf("<%s>(%s)", context->errbuf, grn_rc_to_string(context->rc))); cut_test_fail(cut_take_printf("<send(\"%s\")>\n" "%s:%d: %s():", command_expression, context->errfile, context->errline, context->errfunc)); } }