test-qobject-input-visitor: Cover visit_type_uint64()

The new test demonstrates known bugs: integers between INT64_MAX+1 and
UINT64_MAX rejected, and integers between INT64_MIN and -1 are
accepted modulo 2^64.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <1490118290-6133-1-git-send-email-armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
master
Markus Armbruster 2017-03-21 18:44:50 +01:00
parent 658ae5a7b9
commit 4bc0c94da4
1 changed files with 30 additions and 0 deletions

View File

@ -116,6 +116,34 @@ static void test_visitor_in_int(TestInputVisitorData *data,
g_assert_cmpint(res, ==, value);
}
static void test_visitor_in_uint(TestInputVisitorData *data,
const void *unused)
{
Error *err = NULL;
uint64_t res = 0;
int value = 42;
Visitor *v;
v = visitor_input_test_init(data, "%d", value);
visit_type_uint64(v, NULL, &res, &error_abort);
g_assert_cmpuint(res, ==, (uint64_t)value);
/* BUG: value between INT64_MIN and -1 accepted modulo 2^64 */
v = visitor_input_test_init(data, "%d", -value);
visit_type_uint64(v, NULL, &res, &error_abort);
g_assert_cmpuint(res, ==, (uint64_t)-value);
/* BUG: value between INT64_MAX+1 and UINT64_MAX rejected */
v = visitor_input_test_init(data, "18446744073709551574");
visit_type_uint64(v, NULL, &res, &err);
error_free_or_abort(&err);
}
static void test_visitor_in_int_overflow(TestInputVisitorData *data,
const void *unused)
{
@ -1225,6 +1253,8 @@ int main(int argc, char **argv)
input_visitor_test_add("/visitor/input/int",
NULL, test_visitor_in_int);
input_visitor_test_add("/visitor/input/uint",
NULL, test_visitor_in_uint);
input_visitor_test_add("/visitor/input/int_overflow",
NULL, test_visitor_in_int_overflow);
input_visitor_test_add("/visitor/input/int_keyval",