diff options
author | Marc-André Lureau <marcandre.lureau@redhat.com> | 2013-08-24 00:03:07 +0200 |
---|---|---|
committer | Marc-André Lureau <marcandre.lureau@redhat.com> | 2013-08-24 17:50:20 +0200 |
commit | a5f9eb76442ca2fa346772684f069ca3aa7a69b0 (patch) | |
tree | 2552e0c9e8ef95c8c26f095ec5fe42a0b107df2a /tests | |
parent | d3b08c9a3583ee52d7acf7cf30abfab7aadad7d1 (diff) | |
download | spice-gtk-a5f9eb76442ca2fa346772684f069ca3aa7a69b0.tar.gz spice-gtk-a5f9eb76442ca2fa346772684f069ca3aa7a69b0.tar.xz spice-gtk-a5f9eb76442ca2fa346772684f069ca3aa7a69b0.zip |
tests: add some dos2unix tests
This is probably not exhaustive enough, but better than nothing.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Makefile.am | 18 | ||||
-rw-r--r-- | tests/util.c | 89 |
2 files changed, 107 insertions, 0 deletions
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 (); +} |