X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=tests%2Fstrutil.c;h=fca70eaaee36ef270d6725376391add9715197a2;hb=f083ae63c7355b9b1d99775785b99b6fa91cd48a;hp=e2a0a20a86e3444007aeb2e5c310671c26900546;hpb=7ca40d2d1cd22ceb741d822c2630d05eafc43260;p=libsigrok.git diff --git a/tests/strutil.c b/tests/strutil.c index e2a0a20a..fca70eaa 100644 --- a/tests/strutil.c +++ b/tests/strutil.c @@ -19,6 +19,7 @@ #include #include +#include #include #include #include "lib.h" @@ -117,12 +118,22 @@ static void test_rational(const char *input, struct sr_rational expected) struct sr_rational rational; ret = sr_parse_rational(input, &rational); - fail_unless(ret == SR_OK); + fail_unless(ret == SR_OK, "Unexpected rc for '%s': %d, errno %d.", + input, ret, errno); fail_unless((expected.p == rational.p) && (expected.q == rational.q), "Invalid result for '%s': %ld/%ld'.", input, rational.p, rational.q); } +static void test_rational_fail(const char *input) +{ + int ret; + struct sr_rational rational; + + ret = sr_parse_rational(input, &rational); + fail_unless(ret != SR_OK, "Unexpected success for '%s'.", input); +} + static void test_voltage(uint64_t v_p, uint64_t v_q, const char *expected) { char *s; @@ -386,6 +397,16 @@ START_TEST(test_fractional) test_rational("+.1", (struct sr_rational){1, 10}); test_rational("-0.1", (struct sr_rational){-1, 10}); test_rational("-.1", (struct sr_rational){-1, 10}); + test_rational(".1", (struct sr_rational){1, 10}); + test_rational(".123", (struct sr_rational){123, 1000}); + test_rational("1.", (struct sr_rational){1, 1}); + test_rational("123.", (struct sr_rational){123, 1}); + test_rational("-.1", (struct sr_rational){-1, 10}); + test_rational(" .1", (struct sr_rational){1, 10}); + test_rational("+.1", (struct sr_rational){1, 10}); + test_rational_fail("."); + test_rational_fail(".e"); + test_rational_fail(".e1"); } END_TEST