From 043c763822b5198c692750fda290385e93caee27 Mon Sep 17 00:00:00 2001 From: Jakub Filak Date: Thu, 11 Sep 2014 15:32:38 +0200 Subject: [LIBREPORT PATCH 63/93] testsuite: add test for xstrdup_between(src, open, close) Related to rhbz#1140224 Signed-off-by: Jakub Filak --- tests/Makefile.am | 3 ++- tests/testsuite.at | 1 + tests/xfuncs.at | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 tests/xfuncs.at diff --git a/tests/Makefile.am b/tests/Makefile.am index 750fa16..664c43f 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -39,7 +39,8 @@ TESTSUITE_AT = \ make_description.at \ libreport_types.at \ xml_definition.at \ - report_python.at + report_python.at \ + xfuncs.at EXTRA_DIST += $(TESTSUITE_AT) TESTSUITE = $(srcdir)/testsuite diff --git a/tests/testsuite.at b/tests/testsuite.at index a569457..92129d8 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.at @@ -1,6 +1,7 @@ # Test suite for abrt. # See http://www.gnu.org/software/hello/manual/autoconf/Writing-Testsuites.html +m4_include([xfuncs.at]) m4_include([strbuf.at]) m4_include([osrelease.at]) m4_include([osinfo.at]) diff --git a/tests/xfuncs.at b/tests/xfuncs.at new file mode 100644 index 0000000..d7e947a --- /dev/null +++ b/tests/xfuncs.at @@ -0,0 +1,56 @@ +# -*- Autotest -*- + +AT_BANNER([xfuncs]) + +## --------------- ## +## xstrdup_between ## +## --------------- ## + +AT_TESTFUN([xstrdup_between], +[[#include "internal_libreport.h" +#include +#include +#include + +#define DEBUG_PRINT(e, r, o, c, s) \ + fprintf(stderr, "Expected: '%s'\nFound: '%s'\nOpen: '%s'\nClose: '%s'\nSource: '%s'\n", e, r, o, c, s) + +void test(const char *src, const char *open, const char *close, const char *exp) +{ + char *res = xstrdup_between(src, open, close); + + if (exp == NULL && res != NULL) + { + DEBUG_PRINT("NULL", res, open, close, src); + assert(!"Found non-existing section."); + } + else if (exp != NULL && res == NULL) + { + DEBUG_PRINT(exp, "NULL", open, close, src); + assert(!"Didn't find section."); + } + else if (exp == NULL && res == NULL) + return; + else if (strcmp(res, exp) != 0) + { + DEBUG_PRINT(exp, res, open, close, src); + assert(!"Invalid selection."); + } + + free(res); +} + + +int main(void) +{ + g_verbose=3; + + test("foo blah", "", "", NULL); + test("foo blah", "", "", NULL); + test("", "", "", ""); + test("@.$.@GOOD.$.", "@.$.@", ".$.", "GOOD"); + + return 0; +} + +]]) -- 1.8.3.1