The following commit has been merged in the master branch: commit b5c0d13c6cc1d16495f2f9b189ef579612d87d3c Author: Guillem Jover <guil...@debian.org> Date: Mon May 28 18:24:39 2012 +0200
libdpkg: Add more test cases for version module This covers dpkg_version_blank(), dpkg_version_is_informative(), branches for different numerical and alphabetical version and revision part in dpkg_version_compare() comparison, and dpkg_version_relate(). diff --git a/lib/dpkg/test/t-version.c b/lib/dpkg/test/t-version.c index bb7156e..9c4fd91 100644 --- a/lib/dpkg/test/t-version.c +++ b/lib/dpkg/test/t-version.c @@ -2,7 +2,7 @@ * libdpkg - Debian packaging suite library routines * t-version.c - test version handling * - * Copyright © 2009-2010 Guillem Jover <guil...@debian.org> + * Copyright © 2009-2012 Guillem Jover <guil...@debian.org> * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -31,6 +31,37 @@ (struct dpkg_version) { (epoch), (version), (revision) } static void +test_version_blank(void) +{ + struct dpkg_version a; + + dpkg_version_blank(&a); + test_pass(a.epoch == 0); + test_pass(a.version == NULL); + test_pass(a.revision == NULL); +} + +static void +test_version_is_informative(void) +{ + struct dpkg_version a; + + dpkg_version_blank(&a); + test_fail(dpkg_version_is_informative(&a)); + + a.epoch = 1; + test_pass(dpkg_version_is_informative(&a)); + + dpkg_version_blank(&a); + a.version = "1"; + test_pass(dpkg_version_is_informative(&a)); + + dpkg_version_blank(&a); + a.revision = "1"; + test_pass(dpkg_version_is_informative(&a)); +} + +static void test_version_compare(void) { struct dpkg_version a, b; @@ -43,6 +74,14 @@ test_version_compare(void) b.epoch = 2; test_fail(dpkg_version_compare(&a, &b) == 0); + a = version(0, "1", "1"); + b = version(0, "2", "1"); + test_fail(dpkg_version_compare(&a, &b) == 0); + + a = version(0, "1", "1"); + b = version(0, "1", "2"); + test_fail(dpkg_version_compare(&a, &b) == 0); + /* Test for version equality. */ a = b = version(0, "0", "0"); test_pass(dpkg_version_compare(&a, &b) == 0); @@ -60,9 +99,55 @@ test_version_compare(void) test_pass(dpkg_version_compare(&a, &b) < 0); test_pass(dpkg_version_compare(&b, &a) > 0); + /* Test for version component difference. */ + a = version(0, "a", "0"); + b = version(0, "b", "0"); + test_pass(dpkg_version_compare(&a, &b) < 0); + test_pass(dpkg_version_compare(&b, &a) > 0); + + /* Test for revision component difference. */ + a = version(0, "0", "a"); + b = version(0, "0", "b"); + test_pass(dpkg_version_compare(&a, &b) < 0); + test_pass(dpkg_version_compare(&b, &a) > 0); + /* FIXME: Complete. */ } +static void +test_version_relate(void) +{ + struct dpkg_version a, b; + + dpkg_version_blank(&a); + dpkg_version_blank(&b); + test_pass(dpkg_version_relate(&a, dpkg_relation_none, &b)); + + a = version(0, "1", "1"); + b = version(0, "1", "1"); + test_pass(dpkg_version_relate(&a, dpkg_relation_eq, &b)); + test_fail(dpkg_version_relate(&a, dpkg_relation_lt, &b)); + test_pass(dpkg_version_relate(&a, dpkg_relation_le, &b)); + test_fail(dpkg_version_relate(&a, dpkg_relation_gt, &b)); + test_pass(dpkg_version_relate(&a, dpkg_relation_ge, &b)); + + a = version(0, "1", "1"); + b = version(0, "2", "1"); + test_fail(dpkg_version_relate(&a, dpkg_relation_eq, &b)); + test_pass(dpkg_version_relate(&a, dpkg_relation_lt, &b)); + test_pass(dpkg_version_relate(&a, dpkg_relation_le, &b)); + test_fail(dpkg_version_relate(&a, dpkg_relation_gt, &b)); + test_fail(dpkg_version_relate(&a, dpkg_relation_ge, &b)); + + a = version(0, "2", "1"); + b = version(0, "1", "1"); + test_fail(dpkg_version_relate(&a, dpkg_relation_eq, &b)); + test_fail(dpkg_version_relate(&a, dpkg_relation_lt, &b)); + test_fail(dpkg_version_relate(&a, dpkg_relation_le, &b)); + test_pass(dpkg_version_relate(&a, dpkg_relation_gt, &b)); + test_pass(dpkg_version_relate(&a, dpkg_relation_ge, &b)); +} + #define test_warn(e) \ do { \ test_pass((e).type == DPKG_MSG_WARN); \ @@ -198,6 +283,9 @@ test_version_parse(void) static void test(void) { + test_version_blank(); + test_version_is_informative(); test_version_compare(); + test_version_relate(); test_version_parse(); } -- dpkg's main repository -- To UNSUBSCRIBE, email to debian-dpkg-cvs-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org