From d0a3aa04c837c579f47b5e39ce5ffe8b2b44a3c8 Mon Sep 17 00:00:00 2001 From: Zdenek Kabelac Date: Thu, 23 Feb 2012 22:47:17 +0000 Subject: [PATCH] Unit testing for some string libdm functions TODO: more functions need to be unit tested. --- test/unit/Makefile.in | 2 +- test/unit/run.c | 2 ++ test/unit/string_t.c | 83 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 test/unit/string_t.c diff --git a/test/unit/Makefile.in b/test/unit/Makefile.in index 604ea1aef..65e8bec8c 100644 --- a/test/unit/Makefile.in +++ b/test/unit/Makefile.in @@ -15,7 +15,7 @@ top_srcdir = @top_srcdir@ top_builddir = @top_builddir@ VPATH = $(srcdir) -SOURCES = bitset_t.c matcher_t.c config_t.c run.c +SOURCES = bitset_t.c matcher_t.c config_t.c string_t.c run.c ifeq ("@TESTING@", "yes") TARGETS = run endif diff --git a/test/unit/run.c b/test/unit/run.c index 734385587..482498ae5 100644 --- a/test/unit/run.c +++ b/test/unit/run.c @@ -10,11 +10,13 @@ DECL(bitset); DECL(regex); DECL(config); +DECL(string); CU_SuiteInfo suites[] = { USE(bitset), USE(regex), USE(config), + USE(string), CU_SUITE_INFO_NULL }; diff --git a/test/unit/string_t.c b/test/unit/string_t.c new file mode 100644 index 000000000..df725058a --- /dev/null +++ b/test/unit/string_t.c @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2012 Red Hat, Inc. All rights reserved. + * + * This file is part of LVM2. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the GNU General Public License v.2. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "libdevmapper.h" + +#include +#include + +#include + +int string_init(void); +int string_fini(void); + +static struct dm_pool *mem = NULL; + +int string_init(void) +{ + mem = dm_pool_create("string test", 1024); + + return (mem == NULL); +} + +int string_fini(void) +{ + dm_pool_destroy(mem); + + return 0; +} + +/* TODO: Add more string unit tests here */ + +static void test_strncpy(void) +{ + const char st[] = "1234567890"; + char buf[sizeof(st)]; + + CU_ASSERT_EQUAL(dm_strncpy(buf, st, sizeof(buf)), 1); + CU_ASSERT_EQUAL(strcmp(buf, st), 0); + + CU_ASSERT_EQUAL(dm_strncpy(buf, st, sizeof(buf) - 1), 0); + CU_ASSERT_EQUAL(strlen(buf) + 1, sizeof(buf) - 1); +} + +static void test_asprint(void) +{ + const char st0[] = ""; + const char st1[] = "12345678901"; + const char st2[] = "1234567890123456789012345678901234567890123456789012345678901234567"; + char *buf; + int a; + + a = dm_asprintf(&buf, "%s", st0); + CU_ASSERT_EQUAL(strcmp(buf, st0), 0); + CU_ASSERT_EQUAL(a, sizeof(st0)); + free(buf); + + a = dm_asprintf(&buf, "%s", st1); + CU_ASSERT_EQUAL(strcmp(buf, st1), 0); + CU_ASSERT_EQUAL(a, sizeof(st1)); + free(buf); + + a = dm_asprintf(&buf, "%s", st2); + CU_ASSERT_EQUAL(a, sizeof(st2)); + CU_ASSERT_EQUAL(strcmp(buf, st2), 0); + free(buf); +} + +CU_TestInfo string_list[] = { + { (char*)"asprint", test_asprint }, + { (char*)"strncpy", test_strncpy }, + CU_TEST_INFO_NULL +};