diff mbox

[3/7] test-string-input-visitor: Add uint64 test

Message ID 1443184788-18859-4-git-send-email-afaerber@suse.de
State New
Headers show

Commit Message

Andreas Färber Sept. 25, 2015, 12:39 p.m. UTC
Test parsing of decimal and hexadecimal uint64 numbers with most
significient bit set.

Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 tests/test-string-input-visitor.c | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

Comments

Eric Blake Sept. 25, 2015, 2:55 p.m. UTC | #1
On 09/25/2015 06:39 AM, Andreas Färber wrote:
> Test parsing of decimal and hexadecimal uint64 numbers with most
> significient bit set.

s/significient/significant/

> 
> Signed-off-by: Andreas Färber <afaerber@suse.de>
> ---
>  tests/test-string-input-visitor.c | 23 +++++++++++++++++++++++
>  1 file changed, 23 insertions(+)

It would also be nice to add tests of one-beyond-range to make sure we
are properly diagnosing range issues.  And we need to make up our mind
on whether "-1" is a parse error or accepted as a synonym for ULLONG_MAX
when doing an unsigned parse.
diff mbox

Patch

diff --git a/tests/test-string-input-visitor.c b/tests/test-string-input-visitor.c
index 3c5c3d9..558c156 100644
--- a/tests/test-string-input-visitor.c
+++ b/tests/test-string-input-visitor.c
@@ -72,6 +72,27 @@  static void test_visitor_in_int(TestInputVisitorData *data,
     g_assert_cmpint(res, ==, value);
 }
 
+static void test_visitor_in_uint64(TestInputVisitorData *data,
+                                   const void *unused)
+{
+    uint64_t res = 0, value = UINT64_MAX;
+    Error *err = NULL;
+    Visitor *v;
+
+    v = visitor_input_test_init(data, g_strdup_printf("%" PRIu64, value));
+
+    visit_type_uint64(v, &res, NULL, &err);
+    g_assert(!err);
+    g_assert_cmpint(res, ==, value);
+    visitor_input_teardown(data, unused);
+
+    v = visitor_input_test_init(data, g_strdup_printf("0x%" PRIx64, value));
+
+    visit_type_uint64(v, &res, NULL, &err);
+    g_assert(!err);
+    g_assert_cmpint(res, ==, value);
+}
+
 static void test_visitor_in_intList(TestInputVisitorData *data,
                                     const void *unused)
 {
@@ -271,6 +292,8 @@  int main(int argc, char **argv)
 
     input_visitor_test_add("/string-visitor/input/int",
                            &in_visitor_data, test_visitor_in_int);
+    input_visitor_test_add("/string-visitor/input/uint64",
+                           &in_visitor_data, test_visitor_in_uint64);
     input_visitor_test_add("/string-visitor/input/intList",
                            &in_visitor_data, test_visitor_in_intList);
     input_visitor_test_add("/string-visitor/input/bool",