Skip to content

Commit

Permalink
tests/qapi-schema: Avoid 'str' in alternate test cases
Browse files Browse the repository at this point in the history
The next commit is going to make alternate members of type 'str'
conflict with other scalar types.  Would break a few test cases that
don't actually require 'str'.  Flip them from 'str' to 'bool' or
'EnumOne'.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <1495471335-23707-4-git-send-email-armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
  • Loading branch information
Markus Armbruster committed May 31, 2017
1 parent 8339fa2 commit 8168ca8
Show file tree
Hide file tree
Showing 10 changed files with 68 additions and 64 deletions.
2 changes: 1 addition & 1 deletion tests/qapi-schema/alternate-clash.json
Expand Up @@ -5,4 +5,4 @@
# the implicit Alt1Kind enum, we would still have a collision with the
# resulting C union trying to have two members named 'a_b'.
{ 'alternate': 'Alt1',
'data': { 'a-b': 'str', 'a_b': 'int' } }
'data': { 'a-b': 'bool', 'a_b': 'int' } }
2 changes: 1 addition & 1 deletion tests/qapi-schema/alternate-nested.json
@@ -1,5 +1,5 @@
# we reject a nested alternate branch
{ 'alternate': 'Alt1',
'data': { 'name': 'str', 'value': 'int' } }
'data': { 'name': 'bool', 'value': 'int' } }
{ 'alternate': 'Alt2',
'data': { 'nested': 'Alt1', 'b': 'bool' } }
2 changes: 1 addition & 1 deletion tests/qapi-schema/args-alternate.json
@@ -1,3 +1,3 @@
# we do not allow alternate arguments
{ 'alternate': 'Alt', 'data': { 'case1': 'int', 'case2': 'str' } }
{ 'alternate': 'Alt', 'data': { 'case1': 'int', 'case2': 'bool' } }
{ 'command': 'oops', 'data': 'Alt' }
2 changes: 1 addition & 1 deletion tests/qapi-schema/doc-bad-alternate-member.json
Expand Up @@ -6,4 +6,4 @@
# @bb: b
##
{ 'alternate': 'AorB',
'data': { 'a': 'str', 'b': 'int' } }
'data': { 'a': 'bool', 'b': 'int' } }
9 changes: 5 additions & 4 deletions tests/qapi-schema/qapi-schema-test.json
Expand Up @@ -93,16 +93,17 @@
{ 'struct': 'WrapAlternate',
'data': { 'alt': 'UserDefAlternate' } }
{ 'alternate': 'UserDefAlternate',
'data': { 'udfu': 'UserDefFlatUnion', 's': 'str', 'i': 'int' } }
'data': { 'udfu': 'UserDefFlatUnion', 'e': 'EnumOne', 'i': 'int' } }

{ 'struct': 'UserDefC',
'data': { 'string1': 'str', 'string2': 'str' } }

# for testing use of 'number' within alternates
{ 'alternate': 'AltStrBool', 'data': { 's': 'str', 'b': 'bool' } }
{ 'alternate': 'AltStrNum', 'data': { 's': 'str', 'n': 'number' } }
{ 'alternate': 'AltEnumBool', 'data': { 'e': 'EnumOne', 'b': 'bool' } }
{ 'alternate': 'AltEnumNum', 'data': { 'e': 'EnumOne', 'n': 'number' } }
{ 'alternate': 'AltNumStr', 'data': { 'n': 'number', 's': 'str' } }
{ 'alternate': 'AltStrInt', 'data': { 's': 'str', 'i': 'int' } }
{ 'alternate': 'AltNumEnum', 'data': { 'n': 'number', 'e': 'EnumOne' } }
{ 'alternate': 'AltEnumInt', 'data': { 'e': 'EnumOne', 'i': 'int' } }
{ 'alternate': 'AltIntNum', 'data': { 'i': 'int', 'n': 'number' } }
{ 'alternate': 'AltNumInt', 'data': { 'n': 'number', 'i': 'int' } }

Expand Down
30 changes: 17 additions & 13 deletions tests/qapi-schema/qapi-schema-test.out
@@ -1,7 +1,23 @@
alternate AltEnumBool
tag type
case e: EnumOne
case b: bool
alternate AltEnumInt
tag type
case e: EnumOne
case i: int
alternate AltEnumNum
tag type
case e: EnumOne
case n: number
alternate AltIntNum
tag type
case i: int
case n: number
alternate AltNumEnum
tag type
case n: number
case e: EnumOne
alternate AltNumInt
tag type
case n: number
Expand All @@ -10,18 +26,6 @@ alternate AltNumStr
tag type
case n: number
case s: str
alternate AltStrBool
tag type
case s: str
case b: bool
alternate AltStrInt
tag type
case s: str
case i: int
alternate AltStrNum
tag type
case s: str
case n: number
event EVENT_A None
boxed=False
event EVENT_B None
Expand Down Expand Up @@ -66,7 +70,7 @@ object UserDefA
alternate UserDefAlternate
tag type
case udfu: UserDefFlatUnion
case s: str
case e: EnumOne
case i: int
object UserDefB
member intb: int optional=False
Expand Down
2 changes: 1 addition & 1 deletion tests/qapi-schema/returns-alternate.json
@@ -1,3 +1,3 @@
# we reject returns if it is an alternate type
{ 'alternate': 'Alt', 'data': { 'a': 'int', 'b': 'str' } }
{ 'alternate': 'Alt', 'data': { 'a': 'int', 'b': 'bool' } }
{ 'command': 'oops', 'returns': 'Alt' }
23 changes: 11 additions & 12 deletions tests/test-clone-visitor.c
Expand Up @@ -42,29 +42,28 @@ static void test_clone_struct(void)

static void test_clone_alternate(void)
{
AltStrBool *b_src, *s_src, *b_dst, *s_dst;
AltEnumBool *b_src, *s_src, *b_dst, *s_dst;

b_src = g_new0(AltStrBool, 1);
b_src = g_new0(AltEnumBool, 1);
b_src->type = QTYPE_QBOOL;
b_src->u.b = true;
s_src = g_new0(AltStrBool, 1);
s_src = g_new0(AltEnumBool, 1);
s_src->type = QTYPE_QSTRING;
s_src->u.s = g_strdup("World");
s_src->u.e = ENUM_ONE_VALUE1;

b_dst = QAPI_CLONE(AltStrBool, b_src);
b_dst = QAPI_CLONE(AltEnumBool, b_src);
g_assert(b_dst);
g_assert_cmpint(b_dst->type, ==, b_src->type);
g_assert_cmpint(b_dst->u.b, ==, b_src->u.b);
s_dst = QAPI_CLONE(AltStrBool, s_src);
s_dst = QAPI_CLONE(AltEnumBool, s_src);
g_assert(s_dst);
g_assert_cmpint(s_dst->type, ==, s_src->type);
g_assert_cmpstr(s_dst->u.s, ==, s_src->u.s);
g_assert(s_dst->u.s != s_src->u.s);
g_assert_cmpint(s_dst->u.e, ==, s_src->u.e);

qapi_free_AltStrBool(b_src);
qapi_free_AltStrBool(s_src);
qapi_free_AltStrBool(b_dst);
qapi_free_AltStrBool(s_dst);
qapi_free_AltEnumBool(b_src);
qapi_free_AltEnumBool(s_src);
qapi_free_AltEnumBool(b_dst);
qapi_free_AltEnumBool(s_dst);
}

static void test_clone_native_list(void)
Expand Down
56 changes: 28 additions & 28 deletions tests/test-qobject-input-visitor.c
Expand Up @@ -537,10 +537,10 @@ static void test_visitor_in_alternate(TestInputVisitorData *data,
g_assert_cmpint(tmp->u.i, ==, 42);
qapi_free_UserDefAlternate(tmp);

v = visitor_input_test_init(data, "'string'");
v = visitor_input_test_init(data, "'value1'");
visit_type_UserDefAlternate(v, NULL, &tmp, &error_abort);
g_assert_cmpint(tmp->type, ==, QTYPE_QSTRING);
g_assert_cmpstr(tmp->u.s, ==, "string");
g_assert_cmpint(tmp->u.e, ==, ENUM_ONE_VALUE1);
qapi_free_UserDefAlternate(tmp);

v = visitor_input_test_init(data, "{'integer':1, 'string':'str', "
Expand All @@ -565,10 +565,10 @@ static void test_visitor_in_alternate(TestInputVisitorData *data,
g_assert_cmpint(wrap->alt->u.i, ==, 42);
qapi_free_WrapAlternate(wrap);

v = visitor_input_test_init(data, "{ 'alt': 'string' }");
v = visitor_input_test_init(data, "{ 'alt': 'value1' }");
visit_type_WrapAlternate(v, NULL, &wrap, &error_abort);
g_assert_cmpint(wrap->alt->type, ==, QTYPE_QSTRING);
g_assert_cmpstr(wrap->alt->u.s, ==, "string");
g_assert_cmpint(wrap->alt->u.e, ==, ENUM_ONE_VALUE1);
qapi_free_WrapAlternate(wrap);

v = visitor_input_test_init(data, "{ 'alt': {'integer':1, 'string':'str', "
Expand All @@ -588,37 +588,37 @@ static void test_visitor_in_alternate_number(TestInputVisitorData *data,
{
Visitor *v;
Error *err = NULL;
AltStrBool *asb;
AltStrNum *asn;
AltNumStr *ans;
AltStrInt *asi;
AltEnumBool *aeb;
AltEnumNum *aen;
AltNumEnum *ans;
AltEnumInt *asi;
AltIntNum *ain;
AltNumInt *ani;

/* Parsing an int */

v = visitor_input_test_init(data, "42");
visit_type_AltStrBool(v, NULL, &asb, &err);
visit_type_AltEnumBool(v, NULL, &aeb, &err);
error_free_or_abort(&err);
qapi_free_AltStrBool(asb);
qapi_free_AltEnumBool(aeb);

v = visitor_input_test_init(data, "42");
visit_type_AltStrNum(v, NULL, &asn, &error_abort);
g_assert_cmpint(asn->type, ==, QTYPE_QFLOAT);
g_assert_cmpfloat(asn->u.n, ==, 42);
qapi_free_AltStrNum(asn);
visit_type_AltEnumNum(v, NULL, &aen, &error_abort);
g_assert_cmpint(aen->type, ==, QTYPE_QFLOAT);
g_assert_cmpfloat(aen->u.n, ==, 42);
qapi_free_AltEnumNum(aen);

v = visitor_input_test_init(data, "42");
visit_type_AltNumStr(v, NULL, &ans, &error_abort);
visit_type_AltNumEnum(v, NULL, &ans, &error_abort);
g_assert_cmpint(ans->type, ==, QTYPE_QFLOAT);
g_assert_cmpfloat(ans->u.n, ==, 42);
qapi_free_AltNumStr(ans);
qapi_free_AltNumEnum(ans);

v = visitor_input_test_init(data, "42");
visit_type_AltStrInt(v, NULL, &asi, &error_abort);
visit_type_AltEnumInt(v, NULL, &asi, &error_abort);
g_assert_cmpint(asi->type, ==, QTYPE_QINT);
g_assert_cmpint(asi->u.i, ==, 42);
qapi_free_AltStrInt(asi);
qapi_free_AltEnumInt(asi);

v = visitor_input_test_init(data, "42");
visit_type_AltIntNum(v, NULL, &ain, &error_abort);
Expand All @@ -635,26 +635,26 @@ static void test_visitor_in_alternate_number(TestInputVisitorData *data,
/* Parsing a double */

v = visitor_input_test_init(data, "42.5");
visit_type_AltStrBool(v, NULL, &asb, &err);
visit_type_AltEnumBool(v, NULL, &aeb, &err);
error_free_or_abort(&err);
qapi_free_AltStrBool(asb);
qapi_free_AltEnumBool(aeb);

v = visitor_input_test_init(data, "42.5");
visit_type_AltStrNum(v, NULL, &asn, &error_abort);
g_assert_cmpint(asn->type, ==, QTYPE_QFLOAT);
g_assert_cmpfloat(asn->u.n, ==, 42.5);
qapi_free_AltStrNum(asn);
visit_type_AltEnumNum(v, NULL, &aen, &error_abort);
g_assert_cmpint(aen->type, ==, QTYPE_QFLOAT);
g_assert_cmpfloat(aen->u.n, ==, 42.5);
qapi_free_AltEnumNum(aen);

v = visitor_input_test_init(data, "42.5");
visit_type_AltNumStr(v, NULL, &ans, &error_abort);
visit_type_AltNumEnum(v, NULL, &ans, &error_abort);
g_assert_cmpint(ans->type, ==, QTYPE_QFLOAT);
g_assert_cmpfloat(ans->u.n, ==, 42.5);
qapi_free_AltNumStr(ans);
qapi_free_AltNumEnum(ans);

v = visitor_input_test_init(data, "42.5");
visit_type_AltStrInt(v, NULL, &asi, &err);
visit_type_AltEnumInt(v, NULL, &asi, &err);
error_free_or_abort(&err);
qapi_free_AltStrInt(asi);
qapi_free_AltEnumInt(asi);

v = visitor_input_test_init(data, "42.5");
visit_type_AltIntNum(v, NULL, &ain, &error_abort);
Expand Down
4 changes: 2 additions & 2 deletions tests/test-qobject-output-visitor.c
Expand Up @@ -406,12 +406,12 @@ static void test_visitor_out_alternate(TestOutputVisitorData *data,
visitor_reset(data);
tmp = g_new0(UserDefAlternate, 1);
tmp->type = QTYPE_QSTRING;
tmp->u.s = g_strdup("hello");
tmp->u.e = ENUM_ONE_VALUE1;

visit_type_UserDefAlternate(data->ov, NULL, &tmp, &error_abort);
qstr = qobject_to_qstring(visitor_get(data));
g_assert(qstr);
g_assert_cmpstr(qstring_get_str(qstr), ==, "hello");
g_assert_cmpstr(qstring_get_str(qstr), ==, "value1");

qapi_free_UserDefAlternate(tmp);

Expand Down

0 comments on commit 8168ca8

Please sign in to comment.