test-qmp-event: Simplify and tighten event_test_emit()

Use qdict_get_qdict() and qdict_get_try_int() to simplify.

While there, add a sanity check for seconds.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <1487363905-9480-7-git-send-email-armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
Markus Armbruster 2017-02-17 21:38:17 +01:00
parent 4d96f329cc
commit 4b32e11a59

View File

@ -95,24 +95,18 @@ static bool qdict_cmp_simple(QDict *a, QDict *b)
correctness. */ correctness. */
static void event_test_emit(test_QAPIEvent event, QDict *d, Error **errp) static void event_test_emit(test_QAPIEvent event, QDict *d, Error **errp)
{ {
QObject *obj;
QDict *t; QDict *t;
int64_t s, ms; int64_t s, ms;
/* Verify that we have timestamp, then remove it to compare other fields */ /* Verify that we have timestamp, then remove it to compare other fields */
obj = qdict_get(d, "timestamp"); t = qdict_get_qdict(d, "timestamp");
g_assert(obj);
t = qobject_to_qdict(obj);
g_assert(t); g_assert(t);
obj = qdict_get(t, "seconds"); s = qdict_get_try_int(t, "seconds", -2);
g_assert(obj && qobject_type(obj) == QTYPE_QINT); ms = qdict_get_try_int(t, "microseconds", -2);
s = qint_get_int(qobject_to_qint(obj));
obj = qdict_get(t, "microseconds");
g_assert(obj && qobject_type(obj) == QTYPE_QINT);
ms = qint_get_int(qobject_to_qint(obj));
if (s == -1) { if (s == -1) {
g_assert(ms == -1); g_assert(ms == -1);
} else { } else {
g_assert(s >= 0);
g_assert(ms >= 0 && ms <= 999999); g_assert(ms >= 0 && ms <= 999999);
} }
g_assert(qdict_size(t) == 2); g_assert(qdict_size(t) == 2);