tests: Clean up test-string-output-visitor
Use &error_abort and error_free_or_abort() in more places, use the generated qapi_free_intList() instead of open-coding it, reduce the scope of some variables, avoid code duplication during test setup with visitor_output_setup_internal(), and copy the visitor_reset() concept from the qmp-output test to the string-output test. Signed-off-by: Eric Blake <eblake@redhat.com> Message-Id: <1465490926-28625-11-git-send-email-eblake@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
		
							parent
							
								
									1830f22a67
								
							
						
					
					
						commit
						a8fff94d28
					
				@ -25,26 +25,26 @@ typedef struct TestOutputVisitorData {
 | 
			
		||||
    bool human;
 | 
			
		||||
} TestOutputVisitorData;
 | 
			
		||||
 | 
			
		||||
static void visitor_output_setup_internal(TestOutputVisitorData *data,
 | 
			
		||||
                                          bool human)
 | 
			
		||||
{
 | 
			
		||||
    data->human = human;
 | 
			
		||||
    data->sov = string_output_visitor_new(human);
 | 
			
		||||
    g_assert(data->sov);
 | 
			
		||||
    data->ov = string_output_get_visitor(data->sov);
 | 
			
		||||
    g_assert(data->ov);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void visitor_output_setup(TestOutputVisitorData *data,
 | 
			
		||||
                                 const void *unused)
 | 
			
		||||
{
 | 
			
		||||
    data->human = false;
 | 
			
		||||
    data->sov = string_output_visitor_new(data->human);
 | 
			
		||||
    g_assert(data->sov != NULL);
 | 
			
		||||
 | 
			
		||||
    data->ov = string_output_get_visitor(data->sov);
 | 
			
		||||
    g_assert(data->ov != NULL);
 | 
			
		||||
    return visitor_output_setup_internal(data, false);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void visitor_output_setup_human(TestOutputVisitorData *data,
 | 
			
		||||
                                       const void *unused)
 | 
			
		||||
{
 | 
			
		||||
    data->human = true;
 | 
			
		||||
    data->sov = string_output_visitor_new(data->human);
 | 
			
		||||
    g_assert(data->sov != NULL);
 | 
			
		||||
 | 
			
		||||
    data->ov = string_output_get_visitor(data->sov);
 | 
			
		||||
    g_assert(data->ov != NULL);
 | 
			
		||||
    return visitor_output_setup_internal(data, true);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void visitor_output_teardown(TestOutputVisitorData *data,
 | 
			
		||||
@ -55,6 +55,14 @@ static void visitor_output_teardown(TestOutputVisitorData *data,
 | 
			
		||||
    data->ov = NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void visitor_reset(TestOutputVisitorData *data)
 | 
			
		||||
{
 | 
			
		||||
    bool human = data->human;
 | 
			
		||||
 | 
			
		||||
    visitor_output_teardown(data, NULL);
 | 
			
		||||
    visitor_output_setup_internal(data, human);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void test_visitor_out_int(TestOutputVisitorData *data,
 | 
			
		||||
                                 const void *unused)
 | 
			
		||||
{
 | 
			
		||||
@ -106,12 +114,7 @@ static void test_visitor_out_intList(TestOutputVisitorData *data,
 | 
			
		||||
            "0-1,3-6,9-16,21-22,9223372036854775806-9223372036854775807");
 | 
			
		||||
    }
 | 
			
		||||
    g_free(str);
 | 
			
		||||
    while (list) {
 | 
			
		||||
        intList *tmp2;
 | 
			
		||||
        tmp2 = list->next;
 | 
			
		||||
        g_free(list);
 | 
			
		||||
        list = tmp2;
 | 
			
		||||
    }
 | 
			
		||||
    qapi_free_intList(list);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void test_visitor_out_bool(TestOutputVisitorData *data,
 | 
			
		||||
@ -171,12 +174,10 @@ static void test_visitor_out_no_string(TestOutputVisitorData *data,
 | 
			
		||||
                                       const void *unused)
 | 
			
		||||
{
 | 
			
		||||
    char *string = NULL;
 | 
			
		||||
    Error *err = NULL;
 | 
			
		||||
    char *str;
 | 
			
		||||
 | 
			
		||||
    /* A null string should return "" */
 | 
			
		||||
    visit_type_str(data->ov, NULL, &string, &err);
 | 
			
		||||
    g_assert(!err);
 | 
			
		||||
    visit_type_str(data->ov, NULL, &string, &error_abort);
 | 
			
		||||
 | 
			
		||||
    str = string_output_get_string(data->sov);
 | 
			
		||||
    g_assert(str != NULL);
 | 
			
		||||
@ -191,27 +192,24 @@ static void test_visitor_out_no_string(TestOutputVisitorData *data,
 | 
			
		||||
static void test_visitor_out_enum(TestOutputVisitorData *data,
 | 
			
		||||
                                  const void *unused)
 | 
			
		||||
{
 | 
			
		||||
    Error *err = NULL;
 | 
			
		||||
    char *str;
 | 
			
		||||
    EnumOne i;
 | 
			
		||||
 | 
			
		||||
    for (i = 0; i < ENUM_ONE__MAX; i++) {
 | 
			
		||||
        char *str_human;
 | 
			
		||||
 | 
			
		||||
        visit_type_EnumOne(data->ov, "unused", &i, &err);
 | 
			
		||||
        g_assert(!err);
 | 
			
		||||
 | 
			
		||||
        str_human = g_strdup_printf("\"%s\"", EnumOne_lookup[i]);
 | 
			
		||||
        visit_type_EnumOne(data->ov, "unused", &i, &error_abort);
 | 
			
		||||
 | 
			
		||||
        str = string_output_get_string(data->sov);
 | 
			
		||||
        g_assert(str != NULL);
 | 
			
		||||
        if (data->human) {
 | 
			
		||||
            char *str_human = g_strdup_printf("\"%s\"", EnumOne_lookup[i]);
 | 
			
		||||
 | 
			
		||||
            g_assert_cmpstr(str, ==, str_human);
 | 
			
		||||
            g_free(str_human);
 | 
			
		||||
        } else {
 | 
			
		||||
            g_assert_cmpstr(str, ==, EnumOne_lookup[i]);
 | 
			
		||||
        }
 | 
			
		||||
        g_free(str_human);
 | 
			
		||||
        g_free(str);
 | 
			
		||||
        visitor_reset(data);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -224,8 +222,7 @@ static void test_visitor_out_enum_errors(TestOutputVisitorData *data,
 | 
			
		||||
    for (i = 0; i < ARRAY_SIZE(bad_values) ; i++) {
 | 
			
		||||
        err = NULL;
 | 
			
		||||
        visit_type_EnumOne(data->ov, "unused", &bad_values[i], &err);
 | 
			
		||||
        g_assert(err);
 | 
			
		||||
        error_free(err);
 | 
			
		||||
        error_free_or_abort(&err);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user