tests/qapi-schema: Cover simple argument types
Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
This commit is contained in:
		
							parent
							
								
									ab22ad96ce
								
							
						
					
					
						commit
						c2216a8a7a
					
				@ -53,6 +53,8 @@
 | 
			
		||||
{ 'command': 'user_def_cmd2',
 | 
			
		||||
  'data': {'ud1a': 'UserDefOne', '*ud1b': 'UserDefOne'},
 | 
			
		||||
  'returns': 'UserDefTwo' }
 | 
			
		||||
{ 'command': 'user_def_cmd3', 'data': {'a': 'int', '*b': 'int' },
 | 
			
		||||
  'returns': 'int' }
 | 
			
		||||
 | 
			
		||||
# For testing integer range flattening in opts-visitor. The following schema
 | 
			
		||||
# corresponds to the option format:
 | 
			
		||||
 | 
			
		||||
@ -10,6 +10,7 @@
 | 
			
		||||
 OrderedDict([('command', 'user_def_cmd'), ('data', OrderedDict())]),
 | 
			
		||||
 OrderedDict([('command', 'user_def_cmd1'), ('data', OrderedDict([('ud1a', 'UserDefOne')]))]),
 | 
			
		||||
 OrderedDict([('command', 'user_def_cmd2'), ('data', OrderedDict([('ud1a', 'UserDefOne'), ('*ud1b', 'UserDefOne')])), ('returns', 'UserDefTwo')]),
 | 
			
		||||
 OrderedDict([('command', 'user_def_cmd3'), ('data', OrderedDict([('a', 'int'), ('*b', 'int')])), ('returns', 'int')]),
 | 
			
		||||
 OrderedDict([('type', 'UserDefOptions'), ('data', OrderedDict([('*i64', ['int']), ('*u64', ['uint64']), ('*u16', ['uint16']), ('*i64x', 'int'), ('*u64x', 'uint64')]))])]
 | 
			
		||||
['EnumOne', 'UserDefUnionKind', 'UserDefNativeListUnionKind']
 | 
			
		||||
[OrderedDict([('type', 'NestedEnumsOne'), ('data', OrderedDict([('enum1', 'EnumOne'), ('*enum2', 'EnumOne'), ('enum3', 'EnumOne'), ('*enum4', 'EnumOne')]))]),
 | 
			
		||||
 | 
			
		||||
@ -41,6 +41,11 @@ UserDefTwo *qmp_user_def_cmd2(UserDefOne *ud1a,
 | 
			
		||||
    return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int64_t qmp_user_def_cmd3(int64_t a, bool has_b, int64_t b, Error **errp)
 | 
			
		||||
{
 | 
			
		||||
    return a + (has_b ? b : 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* test commands with no input and no return value */
 | 
			
		||||
static void test_dispatch_cmd(void)
 | 
			
		||||
{
 | 
			
		||||
@ -95,10 +100,12 @@ static void test_dispatch_cmd_io(void)
 | 
			
		||||
{
 | 
			
		||||
    QDict *req = qdict_new();
 | 
			
		||||
    QDict *args = qdict_new();
 | 
			
		||||
    QDict *args3 = qdict_new();
 | 
			
		||||
    QDict *ud1a = qdict_new();
 | 
			
		||||
    QDict *ud1b = qdict_new();
 | 
			
		||||
    QDict *ret, *ret_dict, *ret_dict_dict, *ret_dict_dict_userdef;
 | 
			
		||||
    QDict *ret_dict_dict2, *ret_dict_dict2_userdef;
 | 
			
		||||
    QInt *ret3;
 | 
			
		||||
 | 
			
		||||
    qdict_put_obj(ud1a, "integer", QOBJECT(qint_from_int(42)));
 | 
			
		||||
    qdict_put_obj(ud1a, "string", QOBJECT(qstring_from_str("hello")));
 | 
			
		||||
@ -125,6 +132,15 @@ static void test_dispatch_cmd_io(void)
 | 
			
		||||
    assert(!strcmp(qdict_get_str(ret_dict_dict2_userdef, "string"), "hello2"));
 | 
			
		||||
    assert(!strcmp(qdict_get_str(ret_dict_dict2, "string"), "blah4"));
 | 
			
		||||
    QDECREF(ret);
 | 
			
		||||
 | 
			
		||||
    qdict_put(args3, "a", qint_from_int(66));
 | 
			
		||||
    qdict_put(req, "arguments", args3);
 | 
			
		||||
    qdict_put(req, "execute", qstring_from_str("user_def_cmd3"));
 | 
			
		||||
 | 
			
		||||
    ret3 = qobject_to_qint(test_qmp_dispatch(req));
 | 
			
		||||
    assert(qint_get_int(ret3) == 66);
 | 
			
		||||
    QDECREF(ret);
 | 
			
		||||
 | 
			
		||||
    QDECREF(req);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user