From cbffab246997fb5a06211dfb706b54e5ae5bb59f Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 16:58:51 +0200 Subject: Adding upstream version 1.21.22. Signed-off-by: Daniel Baumann --- lib/dpkg/t/t-pkg-queue.c | 116 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 lib/dpkg/t/t-pkg-queue.c (limited to 'lib/dpkg/t/t-pkg-queue.c') diff --git a/lib/dpkg/t/t-pkg-queue.c b/lib/dpkg/t/t-pkg-queue.c new file mode 100644 index 0000000..cf1e327 --- /dev/null +++ b/lib/dpkg/t/t-pkg-queue.c @@ -0,0 +1,116 @@ +/* + * libdpkg - Debian packaging suite library routines + * t-pkg-queue.c - test pkg-queue implementation + * + * Copyright © 2010,2012 Guillem Jover + * + * 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 . + */ + +#include +#include + +#include +#include +#include + +static void +test_pkg_queue_init(void) +{ + struct pkg_queue q = PKG_QUEUE_INIT; + struct pkg_list l; + + test_pass(q.length == 0); + test_pass(q.head == NULL); + test_pass(q.tail == NULL); + + test_pass(pkg_queue_is_empty(&q)); + + q = (struct pkg_queue){ .length = 10, .head = &l, .tail = &l }; + + pkg_queue_init(&q); + test_pass(q.length == 0); + test_pass(q.head == NULL); + test_pass(q.tail == NULL); + + test_pass(pkg_queue_is_empty(&q)); +} + +static void +test_pkg_queue_push_pop(void) +{ + struct pkg_queue q = PKG_QUEUE_INIT; + struct pkg_list *l1, *l2, *l3; + struct pkginfo *pkgp, pkg1, pkg2, pkg3; + + test_pass(pkg_queue_is_empty(&q)); + + /* Test push operations. */ + + l1 = pkg_queue_push(&q, &pkg1); + test_pass(l1 != NULL); + test_pass(q.head == l1); + test_pass(q.tail == l1); + test_pass(q.length == 1); + + l2 = pkg_queue_push(&q, &pkg2); + test_pass(l2 != NULL); + test_pass(q.head == l1); + test_pass(q.tail == l2); + test_pass(q.length == 2); + + l3 = pkg_queue_push(&q, &pkg3); + test_pass(l3 != NULL); + test_pass(q.head == l1); + test_pass(q.tail == l3); + test_pass(q.length == 3); + + /* Test pop operations. */ + + pkgp = pkg_queue_pop(&q); + test_pass(pkgp == &pkg1); + test_pass(q.head == l2); + test_pass(q.tail == l3); + test_pass(q.length == 2); + + pkgp = pkg_queue_pop(&q); + test_pass(pkgp == &pkg2); + test_pass(q.head == l3); + test_pass(q.tail == l3); + test_pass(q.length == 1); + + pkgp = pkg_queue_pop(&q); + test_pass(pkgp == &pkg3); + test_pass(q.head == NULL); + test_pass(q.tail == NULL); + test_pass(q.length == 0); + + test_pass(pkg_queue_is_empty(&q)); + + pkgp = pkg_queue_pop(&q); + test_pass(pkgp == NULL); + test_pass(q.head == NULL); + test_pass(q.tail == NULL); + test_pass(q.length == 0); + + pkg_queue_destroy(&q); +} + +TEST_ENTRY(test) +{ + test_plan(38); + + test_pkg_queue_init(); + test_pkg_queue_push_pop(); +} -- cgit v1.2.3