From 5ce82591d466904ec6ce8f2ce263e832cb2f9cf6 Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Thu, 22 Feb 2018 01:47:15 +0100 Subject: [PATCH] Import a test for the Buffer class --- tests/buffer.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++ tests/project.conf | 11 +++++-- tests/tests.sh | 2 +- 3 files changed, 87 insertions(+), 3 deletions(-) create mode 100644 tests/buffer.c diff --git a/tests/buffer.c b/tests/buffer.c new file mode 100644 index 0000000..955f7e4 --- /dev/null +++ b/tests/buffer.c @@ -0,0 +1,77 @@ +/* $Id$ */ +/* Copyright (c) 2018 Pierre Pronchery */ +/* This file is part of DeforaOS System libSystem */ +/* All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. 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 COPYRIGHT HOLDERS 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 COPYRIGHT + * HOLDER OR 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 +#include "System/error.h" +#include "System/buffer.h" + + +/* buffer */ +static int _buffer(String const * progname, size_t size, char const * data) +{ + int ret = 0; + Buffer * buffer; + + printf("%s: Testing buffer_new()\n", progname); + fflush(stdout); + if((buffer = buffer_new(size, data)) == NULL) + { + error_print(progname); + return 2; + } + if(buffer_get_size(buffer) != size) + ret = 3; + if(buffer_get_data(buffer) == NULL && size != 0) + ret = 4; + if(buffer_set(buffer, size, data) != 0 + || buffer_set(buffer, size, NULL) != 0) + ret = 5; + if(buffer_set_size(buffer, size) != 0 + || buffer_set_size(buffer, 0) != 0) + ret = 6; + buffer_delete(buffer); + return ret; +} + + +/* main */ +int main(int argc, char * argv[]) +{ + int ret; + char buf[65536]; + (void) argc; + + ret = _buffer(argv[0], 0, NULL); + ret |= _buffer(argv[0], sizeof(buf), NULL); + memset(buf, 0, sizeof(buf)); + ret |= _buffer(argv[0], sizeof(buf), buf); + return ret; +} diff --git a/tests/project.conf b/tests/project.conf index 8fd3b91..0ff00f2 100644 --- a/tests/project.conf +++ b/tests/project.conf @@ -1,4 +1,4 @@ -targets=array,clint.log,config,coverage.log,error,event,fixme.log,includes,parser,pylint.log,string,variable,tests.log +targets=array,buffer,clint.log,config,coverage.log,error,event,fixme.log,includes,parser,pylint.log,string,variable,tests.log cppflags_force=-I ../include cflags=-W -Wall -g -O2 -fPIE -D_FORTIFY_SOURCE=2 -fstack-protector ldflags_force=-L$(OBJDIR)../src -Wl,-rpath,$(OBJDIR)../src -lSystem @@ -12,6 +12,13 @@ sources=array.c [array.c] depends=../src/array.c +[buffer] +type=binary +sources=buffer.c + +[buffer.c] +depends=../src/buffer.c + [clint.log] type=script script=./clint.sh -O CPPFLAGS="-I../include `pkg-config --cflags python-2.7`" @@ -75,7 +82,7 @@ depends=../src/string.c [tests.log] type=script script=./tests.sh -depends=$(OBJDIR)array$(EXEEXT),$(OBJDIR)config$(EXEEXT),config.conf,config-noeol.conf,$(OBJDIR)error$(EXEEXT),$(OBJDIR)event$(EXEEXT),$(OBJDIR)includes$(EXEEXT),$(OBJDIR)parser$(EXEEXT),pkgconfig.sh,python.sh,$(OBJDIR)string$(EXEEXT),tests.sh,$(OBJDIR)variable$(EXEEXT),$(OBJDIR)../src/libSystem.a,../src/python/libSystem.c +depends=$(OBJDIR)array$(EXEEXT),$(OBJDIR)buffer$(EXEEXT),$(OBJDIR)config$(EXEEXT),config.conf,config-noeol.conf,$(OBJDIR)error$(EXEEXT),$(OBJDIR)event$(EXEEXT),$(OBJDIR)includes$(EXEEXT),$(OBJDIR)parser$(EXEEXT),pkgconfig.sh,python.sh,$(OBJDIR)string$(EXEEXT),tests.sh,$(OBJDIR)variable$(EXEEXT),$(OBJDIR)../src/libSystem.a,../src/python/libSystem.c [variable] type=binary diff --git a/tests/tests.sh b/tests/tests.sh index 9d3b84f..8945db8 100755 --- a/tests/tests.sh +++ b/tests/tests.sh @@ -122,7 +122,7 @@ if [ -n "$PKG_CONFIG_SYSROOT_DIR" ]; then tests="pkgconfig.sh" failures= else - tests="array config error event includes parser pkgconfig.sh string variable" + tests="array buffer config error event includes parser pkgconfig.sh string variable" failures= fi if $PKGCONFIG --exists "python-2.7"; then