summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@redhat.com>2013-08-24 00:03:07 +0200
committerMarc-André Lureau <marcandre.lureau@redhat.com>2013-08-24 17:50:20 +0200
commita5f9eb76442ca2fa346772684f069ca3aa7a69b0 (patch)
tree2552e0c9e8ef95c8c26f095ec5fe42a0b107df2a /tests
parentd3b08c9a3583ee52d7acf7cf30abfab7aadad7d1 (diff)
downloadspice-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.am18
-rw-r--r--tests/util.c89
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 ();
+}