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

Reply via email to