From e2f8ad21aa13d1860e4e3bfc35284f95a42f0979 Mon Sep 17 00:00:00 2001 From: Klas Lindfors Date: Thu, 17 Dec 2015 09:27:20 +0100 Subject: [PATCH] add a simple test case for the dump/read data functions --- .gitignore | 4 ++++ tool/tests/Makefile.am | 3 ++- tool/tests/test_inout.c | 53 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 tool/tests/test_inout.c diff --git a/.gitignore b/.gitignore index 8ca8bbd..f9e3e3d 100644 --- a/.gitignore +++ b/.gitignore @@ -73,6 +73,10 @@ tool/tests/parse_name tool/tests/parse_name.log tool/tests/parse_name.o tool/tests/parse_name.trs +tool/tests/test_inout +tool/tests/test_inout.log +tool/tests/test_inout.o +tool/tests/test_inout.trs coverage/ lib/error.gcno lib/version.gcno diff --git a/tool/tests/Makefile.am b/tool/tests/Makefile.am index 7148d1d..7c1ac31 100644 --- a/tool/tests/Makefile.am +++ b/tool/tests/Makefile.am @@ -37,8 +37,9 @@ AM_CPPFLAGS += $(OPENSSL_CFLAGS) AM_LDFLAGS = -no-install parse_name_LDADD = ../libpiv_util.la $(OPENSSL_LIBS) +test_inout_LDADD = ../libpiv_util.la -check_PROGRAMS = parse_name +check_PROGRAMS = parse_name test_inout TESTS = basic.sh $(check_PROGRAMS) if ENABLE_COV diff --git a/tool/tests/test_inout.c b/tool/tests/test_inout.c new file mode 100644 index 0000000..6a62906 --- /dev/null +++ b/tool/tests/test_inout.c @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2015 Yubico AB + * 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 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 + * OWNER 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 +#include + +#include "util.h" + +static void test_inout(enum enum_format format) { + unsigned char buf[] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08}; + unsigned char buf2[sizeof(buf)]; + FILE *tmp = tmpfile(); + + dump_data(buf, sizeof(buf), tmp, false, format); + rewind(tmp); + read_data(buf2, sizeof(buf2), tmp, format); + assert(memcmp(buf, buf2, sizeof(buf)) == 0); +} + +int main(void) { + test_inout(format_arg_base64); + test_inout(format_arg_hex); + test_inout(format_arg_binary); + exit(0); +}