Paolo Bonzini <pbonz...@redhat.com> writes: > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> > --- > tests/qapi-schema/qapi-schema-test.json | 1 + > tests/qapi-schema/qapi-schema-test.out | 4 +++ > tests/unit/test-qobject-input-visitor.c | 43 +++++++++++++++++++++++++ > 3 files changed, 48 insertions(+) > > diff --git a/tests/qapi-schema/qapi-schema-test.json > b/tests/qapi-schema/qapi-schema-test.json > index 43b8697002..ba7302f42b 100644 > --- a/tests/qapi-schema/qapi-schema-test.json > +++ b/tests/qapi-schema/qapi-schema-test.json > @@ -119,6 +119,7 @@ > { 'alternate': 'AltEnumNum', 'data': { 'e': 'EnumOne', 'n': 'number' } } > { 'alternate': 'AltNumEnum', 'data': { 'n': 'number', 'e': 'EnumOne' } } > { 'alternate': 'AltEnumInt', 'data': { 'e': 'EnumOne', 'i': 'int' } } > +{ 'alternate': 'AltListInt', 'data': { 'l': ['int'], 'i': 'int' } } > > # for testing use of 'str' within alternates > { 'alternate': 'AltStrObj', 'data': { 's': 'str', 'o': 'TestStruct' } } > diff --git a/tests/qapi-schema/qapi-schema-test.out > b/tests/qapi-schema/qapi-schema-test.out > index 1f9585fa9b..043d75c655 100644 > --- a/tests/qapi-schema/qapi-schema-test.out > +++ b/tests/qapi-schema/qapi-schema-test.out > @@ -121,6 +121,10 @@ alternate AltEnumInt > tag type > case e: EnumOne > case i: int > +alternate AltListInt > + tag type > + case l: intList > + case i: int > alternate AltStrObj > tag type > case s: str > diff --git a/tests/unit/test-qobject-input-visitor.c > b/tests/unit/test-qobject-input-visitor.c > index 6f59a7f432..2af002dd82 100644 > --- a/tests/unit/test-qobject-input-visitor.c > +++ b/tests/unit/test-qobject-input-visitor.c > @@ -776,6 +776,7 @@ static void > test_visitor_in_alternate_number(TestInputVisitorData *data, > AltEnumNum *aen; > AltNumEnum *ans; > AltEnumInt *asi; > + AltListInt *ali; > > /* Parsing an int */ > > @@ -802,6 +803,12 @@ static void > test_visitor_in_alternate_number(TestInputVisitorData *data, > g_assert_cmpint(asi->u.i, ==, 42); > qapi_free_AltEnumInt(asi); > > + v = visitor_input_test_init(data, "42"); > + visit_type_AltListInt(v, NULL, &ali, &error_abort); > + g_assert_cmpint(ali->type, ==, QTYPE_QNUM); > + g_assert_cmpint(ali->u.i, ==, 42); > + qapi_free_AltListInt(ali); > + > /* Parsing a double */ > > v = visitor_input_test_init(data, "42.5"); > @@ -827,6 +834,40 @@ static void > test_visitor_in_alternate_number(TestInputVisitorData *data, > qapi_free_AltEnumInt(asi); > } > > +static void test_visitor_in_alternate_list(TestInputVisitorData *data, > + const void *unused) > +{ > + intList *item; > + Visitor *v; > + AltListInt *ali; > + int i; > + > + v = visitor_input_test_init(data, "[ 42, 43, 44 ]"); > + visit_type_AltListInt(v, NULL, &ali, &error_abort); > + g_assert(ali != NULL); > + > + g_assert_cmpint(ali->type, ==, QTYPE_QLIST); > + for (i = 0, item = ali->u.l; item; item = item->next, i++) { > + char string[12]; > + > + snprintf(string, sizeof(string), "string%d", i);
This appears to be unused. Can drop in my tree. > + g_assert_cmpint(item->value, ==, 42 + i); > + } > + > + qapi_free_AltListInt(ali); > + ali = NULL; > + > + /* An empty list is valid */ > + v = visitor_input_test_init(data, "[]"); > + visit_type_AltListInt(v, NULL, &ali, &error_abort); > + g_assert(ali != NULL); > + > + g_assert_cmpint(ali->type, ==, QTYPE_QLIST); > + g_assert(!ali->u.l); > + qapi_free_AltListInt(ali); > + ali = NULL; > +} > + > static void input_visitor_test_add(const char *testpath, > const void *user_data, > void (*test_func)(TestInputVisitorData > *data, > @@ -1188,6 +1229,8 @@ int main(int argc, char **argv) > NULL, test_visitor_in_wrong_type); > input_visitor_test_add("/visitor/input/alternate-number", > NULL, test_visitor_in_alternate_number); > + input_visitor_test_add("/visitor/input/alternate-list", > + NULL, test_visitor_in_alternate_list); > input_visitor_test_add("/visitor/input/fail/struct", > NULL, test_visitor_in_fail_struct); > input_visitor_test_add("/visitor/input/fail/struct-nested", Other than that: Reviewed-by: Markus Armbruster <arm...@redhat.com>