diff options
Diffstat (limited to 'src/lib/tests')
| -rw-r--r-- | src/lib/tests/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | src/lib/tests/rq_test.c | 115 | 
2 files changed, 116 insertions, 0 deletions
| diff --git a/src/lib/tests/CMakeLists.txt b/src/lib/tests/CMakeLists.txt index a93bf321..0edd4a42 100644 --- a/src/lib/tests/CMakeLists.txt +++ b/src/lib/tests/CMakeLists.txt @@ -14,6 +14,7 @@ create_test_sourcelist(${PARENT_DIR}_tests test_suite.c    crc32_test.c    hashtable_test.c    md5_test.c +  rq_test.c    sha3_test.c    time_utils_test.c    ${TIMERWHEEL_TEST} 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 <dimitri.staessens@ugent.be> + *    Sander Vrijders   <sander.vrijders@ugent.be> + * + * 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; +} | 
