diff options
author | Sander Vrijders <[email protected]> | 2017-09-15 11:10:10 +0000 |
---|---|---|
committer | dimitri staessens <[email protected]> | 2017-09-15 11:10:10 +0000 |
commit | 60ffacc12ab73752cb6ef736f2b41022c984785c (patch) | |
tree | 40d3dd4c9e955528e770325f5e59b84c61316d2c /src/lib/tests/rq_test.c | |
parent | 07a2d315205fccf42e891e2bb46db44401b29153 (diff) | |
parent | 26d4a6072cbf59708071dac8393c88ddacd69a37 (diff) | |
download | ouroboros-60ffacc12ab73752cb6ef736f2b41022c984785c.tar.gz ouroboros-60ffacc12ab73752cb6ef736f2b41022c984785c.zip |
Merged in sandervrijders/ouroboros/be-ordering (pull request #593)
lib: Add reordering queue to FRCT
Diffstat (limited to 'src/lib/tests/rq_test.c')
-rw-r--r-- | src/lib/tests/rq_test.c | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/src/lib/tests/rq_test.c b/src/lib/tests/rq_test.c new file mode 100644 index 00000000..e2d0f435 --- /dev/null +++ b/src/lib/tests/rq_test.c @@ -0,0 +1,115 @@ +/* + * Ouroboros - Copyright (C) 2016 - 2017 + * + * Reordering queue test + * + * Dimitri Staessens <[email protected]> + * Sander Vrijders <[email protected]> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., http://www.fsf.org/about/contact/. + */ + +#include <ouroboros/rq.h> + +#include <stdio.h> + +#define Q_SIZE 5 + +int rq_test(int argc, + char ** argv) +{ + struct rq * q; + int i; + + (void) argc; + (void) argv; + + q = rq_create(Q_SIZE); + if (q == NULL) { + printf("Failed to create.\n"); + return -1; + } + + if (rq_push(q, 1, 1)) { + printf("Failed to insert.\n"); + return -1; + } + + if (!rq_has(q, 1)) { + printf("Inserted item not present.\n"); + return -1; + } + + if (rq_peek(q) != 1) { + printf("Inserted item not present.\n"); + return -1; + } + + if (rq_pop(q) != 1) { + printf("Bad pop.\n"); + return -1; + } + + if (rq_push(q, 3, 5)) { + printf("Failed to insert.\n"); + return -1; + } + + if (rq_push(q, 1, 3)) { + printf("Failed to insert.\n"); + return -1; + } + + if (rq_push(q, 2, 7)) { + printf("Failed to insert.\n"); + return -1; + } + + if (!rq_has(q, 3)) { + printf("Inserted item not present.\n"); + return -1; + } + + if (rq_has(q, 4)) { + printf("Item present that was not inserted.\n"); + return -1; + } + + if (rq_peek(q) != 1) { + printf("Inserted item not present.\n"); + return -1; + } + + if (rq_pop(q) != 3) { + printf("Bad pop.\n"); + return -1; + } + + if (rq_peek(q) != 2) { + printf("Inserted item not present.\n"); + return -1; + } + + if (rq_pop(q) != 7) { + printf("Bad pop.\n"); + return -1; + } + + for (i = 0; i < Q_SIZE + 1; i++) + rq_push(q, i, i); + + rq_destroy(q); + + return 0; +} |