[v2 1/6] test/os: add xstrtokenize test
Peter Hutterer
peter.hutterer at who-t.net
Tue Dec 17 17:45:15 PST 2013
On Tue, Dec 17, 2013 at 11:35:54PM +0100, Daniel Martin wrote:
> Signed-off-by: Daniel Martin <consume.noise at gmail.com>
> ---
> First patch and highly unrelated, but the next one adds tests here too.
> And imo having tests doesn't hurt.
Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net> with a few nitpicks
below
>
> test/Makefile.am | 15 ++++++++++++++-
> test/xstr.c | 36 ++++++++++++++++++++++++++++++++++++
> 2 files changed, 50 insertions(+), 1 deletion(-)
> create mode 100644 test/xstr.c
>
> diff --git a/test/Makefile.am b/test/Makefile.am
> index 2852bb3..097b3a4 100644
> --- a/test/Makefile.am
> +++ b/test/Makefile.am
> @@ -5,7 +5,19 @@ if XORG
> # Tests that require at least some DDX functions in order to fully link
> # For now, requires xf86 ddx, could be adjusted to use another
> SUBDIRS += xi2
> -noinst_PROGRAMS += xkb input xtest misc fixes xfree86 hashtabletest os signal-logging touch
> +noinst_PROGRAMS += \
> + fixes \
> + hashtabletest \
> + input \
> + misc \
> + os \
> + signal-logging \
> + touch \
> + xfree86 \
> + xkb \
> + xstr \
> + xtest
> +
> endif
> check_LTLIBRARIES = libxservertest.la
>
> @@ -38,6 +50,7 @@ touch_LDADD=$(TEST_LDADD)
> signal_logging_LDADD=$(TEST_LDADD)
> hashtabletest_LDADD=$(TEST_LDADD) $(top_srcdir)/Xext/hashtable.c
> os_LDADD=$(TEST_LDADD)
> +xstr_LDADD=$(TEST_LDADD)
>
> libxservertest_la_LIBADD = $(XSERVER_LIBS)
> if XORG
> diff --git a/test/xstr.c b/test/xstr.c
> new file mode 100644
> index 0000000..aba3e86
> --- /dev/null
> +++ b/test/xstr.c
> @@ -0,0 +1,36 @@
> +#ifdef HAVE_DIX_CONFIG_H
> +#include <dix-config.h>
> +#endif
> +
> +#include "misc.h"
> +
> +static void test_xstrtokenize(void)
> +{
> + char tokenstr[] = "123|456|789";
> + char **tokens;
> +
> + tokens = (char **) xstrtokenize(tokenstr, "|");
you don't need the cast here
> +
> + assert(tokens);
> + assert(*tokens);
> + assert(*(tokens + 1));
> + assert(*(tokens + 2));
> + assert(*(tokens + 3) == NULL);
> +
> + assert(strcmp(*tokens, "123") == 0);
> + assert(strcmp(*(tokens + 1), "456") == 0);
> + assert(strcmp(*(tokens + 2), "789") == 0);
I'd use tokens[0], tokens[1], etc, the *(tokens + 1) seems a bit
convoluted.
> +
> + free(*tokens);
> + free(*(tokens + 1));
> + free(*(tokens + 2));
> + free(tokens);
> +}
testing the easy case is good, but testing the odd cases is usually
better. in this case:
- behaviour for a zero-length token
- behaviour for a zero-length string
- behaviour for a string consisting only of tokens ("||||")
- behaviour for a string mixed with strings and tokens ("a|b||c")
these are the most likely cases to cause issues lateron, the standard
use-case is usually well-tested anyway :)
Cheers,
Peter
> +
> +int
> +main(int argc, char **argv)
> +{
> + test_xstrtokenize();
> +
> + return 0;
> +}
> --
> 1.8.5.1
More information about the xorg-devel
mailing list