diff --git a/tests/Makefile b/tests/Makefile index 015df2a8..10f90e2d 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -17,7 +17,7 @@ all: # Test suite ##################################################################################################### -check: core mempool mutex array list i-list string buffer shared tuple snapshot algo dict rbtree variant +check: core mempool mutex array list i-list string deque buffer shared tuple snapshot algo dict rbtree variant core: $(CC) $(CFLAGS) $(CPPFLAGS) -g $(COVERAGE_CFLAGS) test-mcore.c -lgmp -o $(EXE) && $(VALGRIND) $(EXE) @@ -40,6 +40,9 @@ i-list: string: $(CC) $(CFLAGS) $(CPPFLAGS) -g $(COVERAGE_CFLAGS) test-mstring.c -lgmp -o $(EXE) && $(VALGRIND) $(EXE) +deque: + $(CC) $(CFLAGS) $(CPPFLAGS) -g $(COVERAGE_CFLAGS) test-mdeque.c -lpthread -o $(EXE) && $(VALGRIND) $(EXE) + buffer: $(CC) $(CFLAGS) $(CPPFLAGS) -g $(COVERAGE_CFLAGS) test-mbuffer.c -lpthread -o $(EXE) && $(VALGRIND) $(EXE) diff --git a/tests/test-mdeque.c b/tests/test-mdeque.c new file mode 100644 index 00000000..86e54d8b --- /dev/null +++ b/tests/test-mdeque.c @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2017, Patrick Pelissier + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +#include +#include // For testing purpose only. + +#include "m-string.h" +#include "m-deque.h" + +DEQUE_DEF(deque, int) + +static void test_ti1(int n) +{ + deque_t d; + + deque_init(d); + + for(int i =0; i < n ;i++) { + deque_push_back(d, i); + deque_push_front(d, i); + } + int s = 0; + for(int i =0; i < 2*n ;i++) { + int z; + deque_pop_front(&z, d); + s += z; + } + assert (s == n*(n-1) ); + + deque_clear(d); +} + +int main(void) +{ + test_ti1(10); + /* test_ti1(100); + test_ti1(1000); + test_ti1(10000);*/ +}