mirror of
https://github.com/qemu/qemu.git
synced 2025-08-09 10:25:06 +00:00
tests/qapi-schema: Avoid 'str' in alternate test cases
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>
This commit is contained in:
parent
8339fa266c
commit
8168ca8ea3
@ -5,4 +5,4 @@
|
|||||||
# the implicit Alt1Kind enum, we would still have a collision with the
|
# the implicit Alt1Kind enum, we would still have a collision with the
|
||||||
# resulting C union trying to have two members named 'a_b'.
|
# resulting C union trying to have two members named 'a_b'.
|
||||||
{ 'alternate': 'Alt1',
|
{ 'alternate': 'Alt1',
|
||||||
'data': { 'a-b': 'str', 'a_b': 'int' } }
|
'data': { 'a-b': 'bool', 'a_b': 'int' } }
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# we reject a nested alternate branch
|
# we reject a nested alternate branch
|
||||||
{ 'alternate': 'Alt1',
|
{ 'alternate': 'Alt1',
|
||||||
'data': { 'name': 'str', 'value': 'int' } }
|
'data': { 'name': 'bool', 'value': 'int' } }
|
||||||
{ 'alternate': 'Alt2',
|
{ 'alternate': 'Alt2',
|
||||||
'data': { 'nested': 'Alt1', 'b': 'bool' } }
|
'data': { 'nested': 'Alt1', 'b': 'bool' } }
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
# we do not allow alternate arguments
|
# we do not allow alternate arguments
|
||||||
{ 'alternate': 'Alt', 'data': { 'case1': 'int', 'case2': 'str' } }
|
{ 'alternate': 'Alt', 'data': { 'case1': 'int', 'case2': 'bool' } }
|
||||||
{ 'command': 'oops', 'data': 'Alt' }
|
{ 'command': 'oops', 'data': 'Alt' }
|
||||||
|
@ -6,4 +6,4 @@
|
|||||||
# @bb: b
|
# @bb: b
|
||||||
##
|
##
|
||||||
{ 'alternate': 'AorB',
|
{ 'alternate': 'AorB',
|
||||||
'data': { 'a': 'str', 'b': 'int' } }
|
'data': { 'a': 'bool', 'b': 'int' } }
|
||||||
|
@ -93,16 +93,17 @@
|
|||||||
{ 'struct': 'WrapAlternate',
|
{ 'struct': 'WrapAlternate',
|
||||||
'data': { 'alt': 'UserDefAlternate' } }
|
'data': { 'alt': 'UserDefAlternate' } }
|
||||||
{ 'alternate': 'UserDefAlternate',
|
{ 'alternate': 'UserDefAlternate',
|
||||||
'data': { 'udfu': 'UserDefFlatUnion', 's': 'str', 'i': 'int' } }
|
'data': { 'udfu': 'UserDefFlatUnion', 'e': 'EnumOne', 'i': 'int' } }
|
||||||
|
|
||||||
{ 'struct': 'UserDefC',
|
{ 'struct': 'UserDefC',
|
||||||
'data': { 'string1': 'str', 'string2': 'str' } }
|
'data': { 'string1': 'str', 'string2': 'str' } }
|
||||||
|
|
||||||
# for testing use of 'number' within alternates
|
# for testing use of 'number' within alternates
|
||||||
{ 'alternate': 'AltStrBool', 'data': { 's': 'str', 'b': 'bool' } }
|
{ 'alternate': 'AltEnumBool', 'data': { 'e': 'EnumOne', 'b': 'bool' } }
|
||||||
{ 'alternate': 'AltStrNum', 'data': { 's': 'str', 'n': 'number' } }
|
{ 'alternate': 'AltEnumNum', 'data': { 'e': 'EnumOne', 'n': 'number' } }
|
||||||
{ 'alternate': 'AltNumStr', 'data': { 'n': 'number', 's': 'str' } }
|
{ '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': 'AltIntNum', 'data': { 'i': 'int', 'n': 'number' } }
|
||||||
{ 'alternate': 'AltNumInt', 'data': { 'n': 'number', 'i': 'int' } }
|
{ 'alternate': 'AltNumInt', 'data': { 'n': 'number', 'i': 'int' } }
|
||||||
|
|
||||||
|
@ -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
|
alternate AltIntNum
|
||||||
tag type
|
tag type
|
||||||
case i: int
|
case i: int
|
||||||
case n: number
|
case n: number
|
||||||
|
alternate AltNumEnum
|
||||||
|
tag type
|
||||||
|
case n: number
|
||||||
|
case e: EnumOne
|
||||||
alternate AltNumInt
|
alternate AltNumInt
|
||||||
tag type
|
tag type
|
||||||
case n: number
|
case n: number
|
||||||
@ -10,18 +26,6 @@ alternate AltNumStr
|
|||||||
tag type
|
tag type
|
||||||
case n: number
|
case n: number
|
||||||
case s: str
|
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
|
event EVENT_A None
|
||||||
boxed=False
|
boxed=False
|
||||||
event EVENT_B None
|
event EVENT_B None
|
||||||
@ -66,7 +70,7 @@ object UserDefA
|
|||||||
alternate UserDefAlternate
|
alternate UserDefAlternate
|
||||||
tag type
|
tag type
|
||||||
case udfu: UserDefFlatUnion
|
case udfu: UserDefFlatUnion
|
||||||
case s: str
|
case e: EnumOne
|
||||||
case i: int
|
case i: int
|
||||||
object UserDefB
|
object UserDefB
|
||||||
member intb: int optional=False
|
member intb: int optional=False
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
# we reject returns if it is an alternate type
|
# 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' }
|
{ 'command': 'oops', 'returns': 'Alt' }
|
||||||
|
@ -42,29 +42,28 @@ static void test_clone_struct(void)
|
|||||||
|
|
||||||
static void test_clone_alternate(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->type = QTYPE_QBOOL;
|
||||||
b_src->u.b = true;
|
b_src->u.b = true;
|
||||||
s_src = g_new0(AltStrBool, 1);
|
s_src = g_new0(AltEnumBool, 1);
|
||||||
s_src->type = QTYPE_QSTRING;
|
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(b_dst);
|
||||||
g_assert_cmpint(b_dst->type, ==, b_src->type);
|
g_assert_cmpint(b_dst->type, ==, b_src->type);
|
||||||
g_assert_cmpint(b_dst->u.b, ==, b_src->u.b);
|
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(s_dst);
|
||||||
g_assert_cmpint(s_dst->type, ==, s_src->type);
|
g_assert_cmpint(s_dst->type, ==, s_src->type);
|
||||||
g_assert_cmpstr(s_dst->u.s, ==, s_src->u.s);
|
g_assert_cmpint(s_dst->u.e, ==, s_src->u.e);
|
||||||
g_assert(s_dst->u.s != s_src->u.s);
|
|
||||||
|
|
||||||
qapi_free_AltStrBool(b_src);
|
qapi_free_AltEnumBool(b_src);
|
||||||
qapi_free_AltStrBool(s_src);
|
qapi_free_AltEnumBool(s_src);
|
||||||
qapi_free_AltStrBool(b_dst);
|
qapi_free_AltEnumBool(b_dst);
|
||||||
qapi_free_AltStrBool(s_dst);
|
qapi_free_AltEnumBool(s_dst);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_clone_native_list(void)
|
static void test_clone_native_list(void)
|
||||||
|
@ -537,10 +537,10 @@ static void test_visitor_in_alternate(TestInputVisitorData *data,
|
|||||||
g_assert_cmpint(tmp->u.i, ==, 42);
|
g_assert_cmpint(tmp->u.i, ==, 42);
|
||||||
qapi_free_UserDefAlternate(tmp);
|
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);
|
visit_type_UserDefAlternate(v, NULL, &tmp, &error_abort);
|
||||||
g_assert_cmpint(tmp->type, ==, QTYPE_QSTRING);
|
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);
|
qapi_free_UserDefAlternate(tmp);
|
||||||
|
|
||||||
v = visitor_input_test_init(data, "{'integer':1, 'string':'str', "
|
v = visitor_input_test_init(data, "{'integer':1, 'string':'str', "
|
||||||
@ -565,10 +565,10 @@ static void test_visitor_in_alternate(TestInputVisitorData *data,
|
|||||||
g_assert_cmpint(wrap->alt->u.i, ==, 42);
|
g_assert_cmpint(wrap->alt->u.i, ==, 42);
|
||||||
qapi_free_WrapAlternate(wrap);
|
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);
|
visit_type_WrapAlternate(v, NULL, &wrap, &error_abort);
|
||||||
g_assert_cmpint(wrap->alt->type, ==, QTYPE_QSTRING);
|
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);
|
qapi_free_WrapAlternate(wrap);
|
||||||
|
|
||||||
v = visitor_input_test_init(data, "{ 'alt': {'integer':1, 'string':'str', "
|
v = visitor_input_test_init(data, "{ 'alt': {'integer':1, 'string':'str', "
|
||||||
@ -588,37 +588,37 @@ static void test_visitor_in_alternate_number(TestInputVisitorData *data,
|
|||||||
{
|
{
|
||||||
Visitor *v;
|
Visitor *v;
|
||||||
Error *err = NULL;
|
Error *err = NULL;
|
||||||
AltStrBool *asb;
|
AltEnumBool *aeb;
|
||||||
AltStrNum *asn;
|
AltEnumNum *aen;
|
||||||
AltNumStr *ans;
|
AltNumEnum *ans;
|
||||||
AltStrInt *asi;
|
AltEnumInt *asi;
|
||||||
AltIntNum *ain;
|
AltIntNum *ain;
|
||||||
AltNumInt *ani;
|
AltNumInt *ani;
|
||||||
|
|
||||||
/* Parsing an int */
|
/* Parsing an int */
|
||||||
|
|
||||||
v = visitor_input_test_init(data, "42");
|
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);
|
error_free_or_abort(&err);
|
||||||
qapi_free_AltStrBool(asb);
|
qapi_free_AltEnumBool(aeb);
|
||||||
|
|
||||||
v = visitor_input_test_init(data, "42");
|
v = visitor_input_test_init(data, "42");
|
||||||
visit_type_AltStrNum(v, NULL, &asn, &error_abort);
|
visit_type_AltEnumNum(v, NULL, &aen, &error_abort);
|
||||||
g_assert_cmpint(asn->type, ==, QTYPE_QFLOAT);
|
g_assert_cmpint(aen->type, ==, QTYPE_QFLOAT);
|
||||||
g_assert_cmpfloat(asn->u.n, ==, 42);
|
g_assert_cmpfloat(aen->u.n, ==, 42);
|
||||||
qapi_free_AltStrNum(asn);
|
qapi_free_AltEnumNum(aen);
|
||||||
|
|
||||||
v = visitor_input_test_init(data, "42");
|
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_cmpint(ans->type, ==, QTYPE_QFLOAT);
|
||||||
g_assert_cmpfloat(ans->u.n, ==, 42);
|
g_assert_cmpfloat(ans->u.n, ==, 42);
|
||||||
qapi_free_AltNumStr(ans);
|
qapi_free_AltNumEnum(ans);
|
||||||
|
|
||||||
v = visitor_input_test_init(data, "42");
|
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->type, ==, QTYPE_QINT);
|
||||||
g_assert_cmpint(asi->u.i, ==, 42);
|
g_assert_cmpint(asi->u.i, ==, 42);
|
||||||
qapi_free_AltStrInt(asi);
|
qapi_free_AltEnumInt(asi);
|
||||||
|
|
||||||
v = visitor_input_test_init(data, "42");
|
v = visitor_input_test_init(data, "42");
|
||||||
visit_type_AltIntNum(v, NULL, &ain, &error_abort);
|
visit_type_AltIntNum(v, NULL, &ain, &error_abort);
|
||||||
@ -635,26 +635,26 @@ static void test_visitor_in_alternate_number(TestInputVisitorData *data,
|
|||||||
/* Parsing a double */
|
/* Parsing a double */
|
||||||
|
|
||||||
v = visitor_input_test_init(data, "42.5");
|
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);
|
error_free_or_abort(&err);
|
||||||
qapi_free_AltStrBool(asb);
|
qapi_free_AltEnumBool(aeb);
|
||||||
|
|
||||||
v = visitor_input_test_init(data, "42.5");
|
v = visitor_input_test_init(data, "42.5");
|
||||||
visit_type_AltStrNum(v, NULL, &asn, &error_abort);
|
visit_type_AltEnumNum(v, NULL, &aen, &error_abort);
|
||||||
g_assert_cmpint(asn->type, ==, QTYPE_QFLOAT);
|
g_assert_cmpint(aen->type, ==, QTYPE_QFLOAT);
|
||||||
g_assert_cmpfloat(asn->u.n, ==, 42.5);
|
g_assert_cmpfloat(aen->u.n, ==, 42.5);
|
||||||
qapi_free_AltStrNum(asn);
|
qapi_free_AltEnumNum(aen);
|
||||||
|
|
||||||
v = visitor_input_test_init(data, "42.5");
|
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_cmpint(ans->type, ==, QTYPE_QFLOAT);
|
||||||
g_assert_cmpfloat(ans->u.n, ==, 42.5);
|
g_assert_cmpfloat(ans->u.n, ==, 42.5);
|
||||||
qapi_free_AltNumStr(ans);
|
qapi_free_AltNumEnum(ans);
|
||||||
|
|
||||||
v = visitor_input_test_init(data, "42.5");
|
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);
|
error_free_or_abort(&err);
|
||||||
qapi_free_AltStrInt(asi);
|
qapi_free_AltEnumInt(asi);
|
||||||
|
|
||||||
v = visitor_input_test_init(data, "42.5");
|
v = visitor_input_test_init(data, "42.5");
|
||||||
visit_type_AltIntNum(v, NULL, &ain, &error_abort);
|
visit_type_AltIntNum(v, NULL, &ain, &error_abort);
|
||||||
|
@ -406,12 +406,12 @@ static void test_visitor_out_alternate(TestOutputVisitorData *data,
|
|||||||
visitor_reset(data);
|
visitor_reset(data);
|
||||||
tmp = g_new0(UserDefAlternate, 1);
|
tmp = g_new0(UserDefAlternate, 1);
|
||||||
tmp->type = QTYPE_QSTRING;
|
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);
|
visit_type_UserDefAlternate(data->ov, NULL, &tmp, &error_abort);
|
||||||
qstr = qobject_to_qstring(visitor_get(data));
|
qstr = qobject_to_qstring(visitor_get(data));
|
||||||
g_assert(qstr);
|
g_assert(qstr);
|
||||||
g_assert_cmpstr(qstring_get_str(qstr), ==, "hello");
|
g_assert_cmpstr(qstring_get_str(qstr), ==, "value1");
|
||||||
|
|
||||||
qapi_free_UserDefAlternate(tmp);
|
qapi_free_UserDefAlternate(tmp);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user