diff --git a/src/doveadm/Makefile.am b/src/doveadm/Makefile.am index ac1196af87..80658ca4a7 100644 --- a/src/doveadm/Makefile.am +++ b/src/doveadm/Makefile.am @@ -8,6 +8,7 @@ pkglibexec_PROGRAMS = doveadm-server AM_CPPFLAGS = \ -I$(top_srcdir)/src/lib \ + -I$(top_srcdir)/src/lib-test \ -I$(top_srcdir)/src/lib-settings \ -I$(top_srcdir)/src/lib-auth \ -I$(top_srcdir)/src/lib-compression \ @@ -160,3 +161,22 @@ noinst_HEADERS = \ install-exec-local: rm -f $(DESTDIR)$(bindir)/dsync $(LN_S) doveadm $(DESTDIR)$(bindir)/dsync + +test_programs = \ + test-doveadm-util +noinst_PROGRAMS = $(test_programs) + +test_libs = \ + ../lib-test/libtest.la \ + ../lib/liblib.la +test_deps = $(noinst_LTLIBRARIES) $(test_libs) + +test_doveadm_util_SOURCES = test-doveadm-util.c +test_doveadm_util_LDADD = doveadm-util.o $(test_libs) $(MODULE_LIBS) +test_doveadm_util_DEPENDENCIES = $(test_deps) + +check: check-am check-test +check-test: all-am + for bin in $(test_programs); do \ + if ! $(RUN_TEST) ./$$bin; then exit 1; fi; \ + done diff --git a/src/doveadm/test-doveadm-util.c b/src/doveadm/test-doveadm-util.c new file mode 100644 index 0000000000..eccd5a2fa0 --- /dev/null +++ b/src/doveadm/test-doveadm-util.c @@ -0,0 +1,48 @@ +/* Copyright (c) 2016 Dovecot authors, see the included COPYING file */ + +#include "lib.h" +#include "test-common.h" +#include "doveadm-settings.h" +#include "doveadm-util.h" + +struct doveadm_settings *doveadm_settings; /* just to avoid linker error */ + +static void test_i_strccdascmp(void) +{ + test_begin("i_strccdascmp()"); + + test_assert(i_strccdascmp("", "")==0); + test_assert(i_strccdascmp("", "-")!=0); + test_assert(i_strccdascmp("-", "")!=0); + test_assert(i_strccdascmp("-", "-")==0); + test_assert(i_strccdascmp("-\0baz", "-\0bar")==0); + test_assert(i_strccdascmp("", "a")!=0); + test_assert(i_strccdascmp("a", "")!=0); + test_assert(i_strccdascmp("a", "a")==0); + test_assert(i_strccdascmp("a-", "a-")==0); + test_assert(i_strccdascmp("a-a", "a-a")==0); + test_assert(i_strccdascmp("ca", "ba")!=0); + + test_assert(i_strccdascmp("camel case", "camel case")==0); + test_assert(i_strccdascmp("camel case", "camel-case")==0); + test_assert(i_strccdascmp("camel case", "camelCase")==0); + + test_assert(i_strccdascmp("camel case", "camel-case")==0); + test_assert(i_strccdascmp("camel-case", "camel-case")==0); + test_assert(i_strccdascmp("camelCase", "camel-case")==0); + + test_assert(i_strccdascmp("camel case", "camel Case")==-i_strccdascmp("camel Case", "camel case")); + test_assert(i_strccdascmp("camel-case", "camel Case")==-i_strccdascmp("camel Case", "camel-case")); + test_assert(i_strccdascmp("camel dase", "camel case")==-i_strccdascmp("camel case", "camel dase")); + + test_end(); +} + +int main(void) +{ + static void (*test_functions[])(void) = { + test_i_strccdascmp, + NULL + }; + return test_run(test_functions); +}