Annotation of qemu/tests/test-string-output-visitor.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * String Output Visitor unit-tests.
        !             3:  *
        !             4:  * Copyright (C) 2012 Red Hat Inc.
        !             5:  *
        !             6:  * Authors:
        !             7:  *  Paolo Bonzini <[email protected]> (based on test-qmp-output-visitor)
        !             8:  *
        !             9:  * This work is licensed under the terms of the GNU GPL, version 2 or later.
        !            10:  * See the COPYING file in the top-level directory.
        !            11:  */
        !            12: 
        !            13: #include <glib.h>
        !            14: 
        !            15: #include "qapi/string-output-visitor.h"
        !            16: #include "test-qapi-types.h"
        !            17: #include "test-qapi-visit.h"
        !            18: #include "qemu-objects.h"
        !            19: 
        !            20: typedef struct TestOutputVisitorData {
        !            21:     StringOutputVisitor *sov;
        !            22:     Visitor *ov;
        !            23: } TestOutputVisitorData;
        !            24: 
        !            25: static void visitor_output_setup(TestOutputVisitorData *data,
        !            26:                                  const void *unused)
        !            27: {
        !            28:     data->sov = string_output_visitor_new();
        !            29:     g_assert(data->sov != NULL);
        !            30: 
        !            31:     data->ov = string_output_get_visitor(data->sov);
        !            32:     g_assert(data->ov != NULL);
        !            33: }
        !            34: 
        !            35: static void visitor_output_teardown(TestOutputVisitorData *data,
        !            36:                                     const void *unused)
        !            37: {
        !            38:     string_output_visitor_cleanup(data->sov);
        !            39:     data->sov = NULL;
        !            40:     data->ov = NULL;
        !            41: }
        !            42: 
        !            43: static void test_visitor_out_int(TestOutputVisitorData *data,
        !            44:                                  const void *unused)
        !            45: {
        !            46:     int64_t value = -42;
        !            47:     Error *errp = NULL;
        !            48:     char *str;
        !            49: 
        !            50:     visit_type_int(data->ov, &value, NULL, &errp);
        !            51:     g_assert(error_is_set(&errp) == 0);
        !            52: 
        !            53:     str = string_output_get_string(data->sov);
        !            54:     g_assert(str != NULL);
        !            55:     g_assert_cmpstr(str, ==, "-42");
        !            56:     g_free(str);
        !            57: }
        !            58: 
        !            59: static void test_visitor_out_bool(TestOutputVisitorData *data,
        !            60:                                   const void *unused)
        !            61: {
        !            62:     Error *errp = NULL;
        !            63:     bool value = true;
        !            64:     char *str;
        !            65: 
        !            66:     visit_type_bool(data->ov, &value, NULL, &errp);
        !            67:     g_assert(error_is_set(&errp) == 0);
        !            68: 
        !            69:     str = string_output_get_string(data->sov);
        !            70:     g_assert(str != NULL);
        !            71:     g_assert_cmpstr(str, ==, "true");
        !            72:     g_free(str);
        !            73: }
        !            74: 
        !            75: static void test_visitor_out_number(TestOutputVisitorData *data,
        !            76:                                     const void *unused)
        !            77: {
        !            78:     double value = 3.14;
        !            79:     Error *errp = NULL;
        !            80:     char *str;
        !            81: 
        !            82:     visit_type_number(data->ov, &value, NULL, &errp);
        !            83:     g_assert(error_is_set(&errp) == 0);
        !            84: 
        !            85:     str = string_output_get_string(data->sov);
        !            86:     g_assert(str != NULL);
        !            87:     g_assert_cmpstr(str, ==, "3.14");
        !            88:     g_free(str);
        !            89: }
        !            90: 
        !            91: static void test_visitor_out_string(TestOutputVisitorData *data,
        !            92:                                     const void *unused)
        !            93: {
        !            94:     char *string = (char *) "Q E M U";
        !            95:     Error *errp = NULL;
        !            96:     char *str;
        !            97: 
        !            98:     visit_type_str(data->ov, &string, NULL, &errp);
        !            99:     g_assert(error_is_set(&errp) == 0);
        !           100: 
        !           101:     str = string_output_get_string(data->sov);
        !           102:     g_assert(str != NULL);
        !           103:     g_assert_cmpstr(str, ==, string);
        !           104:     g_free(str);
        !           105: }
        !           106: 
        !           107: static void test_visitor_out_no_string(TestOutputVisitorData *data,
        !           108:                                        const void *unused)
        !           109: {
        !           110:     char *string = NULL;
        !           111:     Error *errp = NULL;
        !           112:     char *str;
        !           113: 
        !           114:     /* A null string should return "" */
        !           115:     visit_type_str(data->ov, &string, NULL, &errp);
        !           116:     g_assert(error_is_set(&errp) == 0);
        !           117: 
        !           118:     str = string_output_get_string(data->sov);
        !           119:     g_assert(str != NULL);
        !           120:     g_assert_cmpstr(str, ==, "");
        !           121:     g_free(str);
        !           122: }
        !           123: 
        !           124: static void test_visitor_out_enum(TestOutputVisitorData *data,
        !           125:                                   const void *unused)
        !           126: {
        !           127:     Error *errp = NULL;
        !           128:     char *str;
        !           129:     EnumOne i;
        !           130: 
        !           131:     for (i = 0; i < ENUM_ONE_MAX; i++) {
        !           132:         visit_type_EnumOne(data->ov, &i, "unused", &errp);
        !           133:         g_assert(!error_is_set(&errp));
        !           134: 
        !           135:         str = string_output_get_string(data->sov);
        !           136:         g_assert(str != NULL);
        !           137:         g_assert_cmpstr(str, ==, EnumOne_lookup[i]);
        !           138:        g_free(str);
        !           139:     }
        !           140: }
        !           141: 
        !           142: static void test_visitor_out_enum_errors(TestOutputVisitorData *data,
        !           143:                                          const void *unused)
        !           144: {
        !           145:     EnumOne i, bad_values[] = { ENUM_ONE_MAX, -1 };
        !           146:     Error *errp;
        !           147: 
        !           148:     for (i = 0; i < ARRAY_SIZE(bad_values) ; i++) {
        !           149:         errp = NULL;
        !           150:         visit_type_EnumOne(data->ov, &bad_values[i], "unused", &errp);
        !           151:         g_assert(error_is_set(&errp) == true);
        !           152:         error_free(errp);
        !           153:     }
        !           154: }
        !           155: 
        !           156: static void output_visitor_test_add(const char *testpath,
        !           157:                                     TestOutputVisitorData *data,
        !           158:                                     void (*test_func)(TestOutputVisitorData *data, const void *user_data))
        !           159: {
        !           160:     g_test_add(testpath, TestOutputVisitorData, data, visitor_output_setup,
        !           161:                test_func, visitor_output_teardown);
        !           162: }
        !           163: 
        !           164: int main(int argc, char **argv)
        !           165: {
        !           166:     TestOutputVisitorData out_visitor_data;
        !           167: 
        !           168:     g_test_init(&argc, &argv, NULL);
        !           169: 
        !           170:     output_visitor_test_add("/string-visitor/output/int",
        !           171:                             &out_visitor_data, test_visitor_out_int);
        !           172:     output_visitor_test_add("/string-visitor/output/bool",
        !           173:                             &out_visitor_data, test_visitor_out_bool);
        !           174:     output_visitor_test_add("/string-visitor/output/number",
        !           175:                             &out_visitor_data, test_visitor_out_number);
        !           176:     output_visitor_test_add("/string-visitor/output/string",
        !           177:                             &out_visitor_data, test_visitor_out_string);
        !           178:     output_visitor_test_add("/string-visitor/output/no-string",
        !           179:                             &out_visitor_data, test_visitor_out_no_string);
        !           180:     output_visitor_test_add("/string-visitor/output/enum",
        !           181:                             &out_visitor_data, test_visitor_out_enum);
        !           182:     output_visitor_test_add("/string-visitor/output/enum-errors",
        !           183:                             &out_visitor_data, test_visitor_out_enum_errors);
        !           184: 
        !           185:     g_test_run();
        !           186: 
        !           187:     return 0;
        !           188: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.