[Spice-devel] [PATCH spice-gtk] tests: add some dos2unix tests

Hans de Goede hdegoede at redhat.com
Sat Aug 24 03:27:54 PDT 2013


Looks good, ack.

On 08/24/2013 02:59 AM, Marc-André Lureau wrote:
> This is probably not exhaustive enough, but better than nothing.
> ---
>   Makefile.am       |  2 +-
>   configure.ac      |  1 +
>   gtk/spice-util.c  |  1 +
>   tests/Makefile.am | 18 +++++++++++
>   tests/util.c      | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
>   5 files changed, 110 insertions(+), 1 deletion(-)
>   create mode 100644 tests/Makefile.am
>   create mode 100644 tests/util.c
>
> diff --git a/Makefile.am b/Makefile.am
> index ffa1649..ab10f5f 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -1,7 +1,7 @@
>   ACLOCAL_AMFLAGS = -I m4
>   NULL =
>
> -SUBDIRS = spice-common gtk po doc data
> +SUBDIRS = spice-common gtk po doc data tests
>
>   if HAVE_INTROSPECTION
>   if WITH_VALA
> diff --git a/configure.ac b/configure.ac
> index 1235f4a..74738a3 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -685,6 +685,7 @@ gtk/controller/Makefile
>   doc/Makefile
>   doc/reference/Makefile
>   vapi/Makefile
> +tests/Makefile
>   ])
>
>   dnl ==========================================================================
> diff --git a/gtk/spice-util.c b/gtk/spice-util.c
> index e76320e..e04b5f5 100644
> --- a/gtk/spice-util.c
> +++ b/gtk/spice-util.c
> @@ -22,6 +22,7 @@
>
>   #include <stdlib.h>
>   #include <string.h>
> +#include <glib.h>
>   #include <glib-object.h>
>   #include "spice-util-priv.h"
>   #include "spice-util.h"
> diff --git a/tests/Makefile.am b/tests/Makefile.am
> new file mode 100644
> index 0000000..9510e2c
> --- /dev/null
> +++ b/tests/Makefile.am
> @@ -0,0 +1,18 @@
> +NULL =
> +
> +noinst_PROGRAMS = util
> +TESTS = $(noinst_PROGRAMS)
> +
> +AM_CPPFLAGS =					\
> +	$(GIO_CFLAGS) -I$(top_srcdir)/gtk	\
> +	-DG_LOG_DOMAIN=\"GSpice\"		\
> +	$(NULL)
> +AM_LDFLAGS = $(GIO_LIBS)
> +
> +util_SOURCES =					\
> +	$(top_srcdir)/gtk/spice-util-priv.h	\
> +	$(top_srcdir)/gtk/spice-util.c		\
> +	$(top_srcdir)/gtk/spice-util.h  	\
> +	util.c					\
> +	$(NULL)
> +
> diff --git a/tests/util.c b/tests/util.c
> new file mode 100644
> index 0000000..86109aa
> --- /dev/null
> +++ b/tests/util.c
> @@ -0,0 +1,89 @@
> +#include <glib.h>
> +#include <stdio.h>
> +#include <string.h>
> +#include <stdlib.h>
> +
> +#include "spice-util-priv.h"
> +
> +enum {
> +    DOS2UNIX = 1 << 0,
> +    UNIX2DOS = 1 << 1,
> +};
> +
> +static const struct {
> +    const gchar *d;
> +    const gchar *u;
> +    glong flags;
> +} dosunix[] = {
> +    { "", "", DOS2UNIX|UNIX2DOS },
> +    { "a", "a", DOS2UNIX|UNIX2DOS },
> +    { "\r\n", "\n", DOS2UNIX|UNIX2DOS },
> +    { "\r\n\r\n", "\n\n", DOS2UNIX|UNIX2DOS },
> +    { "a\r\n", "a\n", DOS2UNIX|UNIX2DOS },
> +    { "a\r\n\r\n", "a\n\n", DOS2UNIX|UNIX2DOS },
> +    { "\r\n\r\na\r\n\r\n", "\n\na\n\n", DOS2UNIX|UNIX2DOS },
> +    { "1\r\n\r\na\r\n\r\n2", "1\n\na\n\n2", DOS2UNIX|UNIX2DOS },
> +    { "\n", "\n", DOS2UNIX },
> +    { "\n\n", "\n\n", DOS2UNIX },
> +    { "\r\n", "\r\n", UNIX2DOS },
> +    { "\r\r\n", "\r\r\n", UNIX2DOS },
> +    { "é\r\né", "é\né", DOS2UNIX|UNIX2DOS },
> +    { "\r\né\r\né\r\n", "\né\né\n", DOS2UNIX|UNIX2DOS }
> +    /* TODO: add some utf8 test cases */
> +};
> +
> +static void test_dos2unix(void)
> +{
> +    GError *err = NULL;
> +    gchar *tmp;
> +    int i;
> +
> +    for (i = 0; i < G_N_ELEMENTS(dosunix); i++) {
> +        if (!(dosunix[i].flags & DOS2UNIX))
> +            continue;
> +
> +        tmp = spice_dos2unix(dosunix[i].d, -1, &err);
> +        g_assert_cmpstr(tmp, ==, dosunix[i].u);
> +        g_assert_no_error(err);
> +        g_free(tmp);
> +
> +        /* including ending \0 */
> +        tmp = spice_dos2unix(dosunix[i].d, strlen(dosunix[i].d) + 1, &err);
> +        g_assert_cmpstr(tmp, ==, dosunix[i].u);
> +        g_assert_no_error(err);
> +        g_free(tmp);
> +    }
> +}
> +
> +static void test_unix2dos(void)
> +{
> +    GError *err = NULL;
> +    gchar *tmp;
> +    int i;
> +
> +    for (i = 0; i < G_N_ELEMENTS(dosunix); i++) {
> +        if (!(dosunix[i].flags & UNIX2DOS))
> +            continue;
> +
> +        tmp = spice_unix2dos(dosunix[i].u, -1, &err);
> +        g_assert_cmpstr(tmp, ==, dosunix[i].d);
> +        g_assert_no_error(err);
> +        g_free(tmp);
> +
> +        /* including ending \0 */
> +        tmp = spice_unix2dos(dosunix[i].u, strlen(dosunix[i].u) + 1, &err);
> +        g_assert_cmpstr(tmp, ==, dosunix[i].d);
> +        g_assert_no_error(err);
> +        g_free(tmp);
> +    }
> +}
> +
> +int main(int argc, char* argv[])
> +{
> +  g_test_init(&argc, &argv, NULL);
> +
> +  g_test_add_func("/util/dos2unix", test_dos2unix);
> +  g_test_add_func("/util/unix2dos", test_unix2dos);
> +
> +  return g_test_run ();
> +}
>


More information about the Spice-devel mailing list