Kaynağa Gözat

libdpkg: Add unit test for pkg-list module

Guillem Jover 16 yıl önce
ebeveyn
işleme
fcf328f4d1

+ 1 - 0
lib/dpkg/test/.gitignore

@@ -4,6 +4,7 @@ t-command
 t-macros
 t-path
 t-pkginfo
+t-pkg-list
 t-string
 t-test
 t-varbuf

+ 3 - 1
lib/dpkg/test/Makefile.am

@@ -17,7 +17,8 @@ check_PROGRAMS = \
 	t-varbuf \
 	t-ar \
 	t-version \
-	t-pkginfo
+	t-pkginfo \
+	t-pkg-list
 
 CHECK_LDADD = ../libdpkg.a
 
@@ -26,6 +27,7 @@ t_command_LDADD = $(CHECK_LDADD)
 t_macros_LDADD = $(CHECK_LDADD)
 t_path_LDADD = $(CHECK_LDADD)
 t_pkginfo_LDADD = $(CHECK_LDADD)
+t_pkg_list_LDADD = $(CHECK_LDADD)
 t_string_LDADD = $(CHECK_LDADD)
 t_buffer_LDADD = $(CHECK_LDADD)
 t_test_LDADD = $(CHECK_LDADD)

+ 87 - 0
lib/dpkg/test/t-pkg-list.c

@@ -0,0 +1,87 @@
+/*
+ * libdpkg - Debian packaging suite library routines
+ * t-pkg-list.c - test pkg-list implementation
+ *
+ * Copyright © 2010 Guillem Jover <guillem@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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <dpkg/test.h>
+#include <dpkg/dpkg-db.h>
+#include <dpkg/pkg-list.h>
+
+static void
+test_pkg_list_new(void)
+{
+	struct pkg_list *l1, *l2, *l3;
+	struct pkginfo pkg;
+
+	l1 = pkg_list_new(&pkg, NULL);
+	test_pass(l1 != NULL);
+	test_pass(l1->next == NULL);
+	test_pass(l1->pkg == &pkg);
+
+	l2 = pkg_list_new(&pkg, l1);
+	test_pass(l2 != NULL);
+	test_pass(l2->next == l1);
+	test_pass(l2->pkg == &pkg);
+
+	l3 = pkg_list_new(&pkg, l2);
+	test_pass(l3 != NULL);
+	test_pass(l3->next == l2);
+	test_pass(l3->pkg == &pkg);
+
+	pkg_list_free(l3);
+}
+
+static void
+test_pkg_list_prepend(void)
+{
+	struct pkg_list *head = NULL, *l1, *l2, *l3;
+	struct pkginfo pkg;
+
+	pkg_list_prepend(&head, &pkg);
+	test_pass(head != NULL);
+	test_pass(head->next == NULL);
+	test_pass(head->pkg == &pkg);
+	l1 = head;
+
+	pkg_list_prepend(&head, &pkg);
+	test_pass(head != NULL);
+	test_pass(head->next == l1);
+	test_pass(head->pkg == &pkg);
+	l2 = head;
+
+	pkg_list_prepend(&head, &pkg);
+	test_pass(head != NULL);
+	test_pass(head->next == l2);
+	test_pass(head->pkg == &pkg);
+	l3 = head;
+
+	pkg_list_prepend(&head, &pkg);
+	test_pass(head != NULL);
+	test_pass(head->next == l3);
+	test_pass(head->pkg == &pkg);
+
+	pkg_list_free(head);
+}
+
+static void
+test(void)
+{
+	test_pkg_list_new();
+	test_pkg_list_prepend();
+}
+