summaryrefslogtreecommitdiffstats
path: root/test/automated/displayless/test-eel-string-get-common-prefix.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--test/automated/displayless/test-eel-string-get-common-prefix.c190
1 files changed, 190 insertions, 0 deletions
diff --git a/test/automated/displayless/test-eel-string-get-common-prefix.c b/test/automated/displayless/test-eel-string-get-common-prefix.c
new file mode 100644
index 0000000..6634c68
--- /dev/null
+++ b/test/automated/displayless/test-eel-string-get-common-prefix.c
@@ -0,0 +1,190 @@
+#include <glib.h>
+#include <glib/gprintf.h>
+
+#include "eel/eel-string.h"
+
+
+static void
+free_list_and_result (GList *list,
+ char *result)
+{
+ g_list_free (list);
+ g_free (result);
+}
+
+static void
+test_has_large_enough_common_prefix (void)
+{
+ GList *list = NULL;
+ char *actual;
+
+ list = g_list_append (list, "foo-1.txt");
+ list = g_list_append (list, "foo-1.tar");
+
+ actual = eel_str_get_common_prefix (list, 4);
+ g_assert_cmpstr ("foo-1.t", ==, actual);
+
+ free_list_and_result (list, actual);
+}
+
+static void
+test_has_common_prefix_that_equals_the_min_required_length (void)
+{
+ GList *list = NULL;
+ char *actual;
+
+ list = g_list_append (list, "food");
+ list = g_list_append (list, "foody");
+
+ actual = eel_str_get_common_prefix (list, 4);
+ g_assert_cmpstr ("food", ==, actual);
+
+ free_list_and_result (list, actual);
+}
+
+static void
+test_has_common_prefix_that_equals_the_min_required_length2 (void)
+{
+ GList *list = NULL;
+ char *actual;
+
+ list = g_list_append (list, "foody");
+ list = g_list_append (list, "food");
+
+ actual = eel_str_get_common_prefix (list, 4);
+ g_assert_cmpstr ("food", ==, actual);
+
+ free_list_and_result (list, actual);
+}
+
+static void
+test_many_strings_with_common_prefix (void)
+{
+ GList *list = NULL;
+ char *actual;
+
+ list = g_list_append (list, "some text that matches abcde");
+ list = g_list_append (list, "some text that matches abc22");
+ list = g_list_append (list, "some text that 11");
+ list = g_list_append (list, "some text that matches---");
+ list = g_list_append (list, "some text that matches £$$");
+ list = g_list_append (list, "some text that matches.txt");
+
+ actual = eel_str_get_common_prefix (list, 4);
+ g_assert_cmpstr ("some text that ", ==, actual);
+
+ free_list_and_result (list, actual);
+}
+
+static void
+test_strings_with_unicode_characters_that_have_common_prefix (void)
+{
+ GList *list = NULL;
+ char *actual;
+
+ list = g_list_append (list, "ƹƱƱƬ");
+ list = g_list_append (list, "ƹƱƱƬƧƥƧ");
+
+ actual = eel_str_get_common_prefix (list, 4);
+ g_assert_cmpstr ("ƹƱƱƬ", ==, actual);
+
+ free_list_and_result (list, actual);
+}
+
+static void
+test_no_common_prefix (void)
+{
+ GList *list = NULL;
+ char *actual;
+
+ list = g_list_append (list, "fyod");
+ list = g_list_append (list, "completely different string");
+
+ actual = eel_str_get_common_prefix (list, 4);
+ g_assert_null (actual);
+
+ free_list_and_result (list, actual);
+}
+
+static void
+test_has_common_prefix_but_smaller_than_min_required_length (void)
+{
+ GList *list = NULL;
+ char *actual;
+
+ list = g_list_append (list, "fyod");
+ list = g_list_append (list, "fyoa");
+
+ actual = eel_str_get_common_prefix (list, 4);
+ g_assert_null (actual);
+
+ free_list_and_result (list, actual);
+}
+
+static void
+test_first_character_differs (void)
+{
+ GList *list = NULL;
+ char *actual;
+
+ list = g_list_append (list, "tyodaa");
+ list = g_list_append (list, "fyodaa");
+
+ actual = eel_str_get_common_prefix (list, 4);
+ g_assert_null (actual);
+
+ free_list_and_result (list, actual);
+}
+
+static void
+test_strings_with_unicode_characters_that_dont_have_common_prefix (void)
+{
+ GList *list = NULL;
+ char *actual;
+
+ list = g_list_append (list, "ƹƱƱƬ");
+ list = g_list_append (list, "ƹƱƢƱƬƧƥƧ");
+
+ actual = eel_str_get_common_prefix (list, 4);
+ g_assert_null (actual);
+
+ free_list_and_result (list, actual);
+}
+
+
+static void
+setup_test_suite (void)
+{
+ g_test_add_func ("/get-common-prefix/1.0",
+ test_has_large_enough_common_prefix);
+ g_test_add_func ("/get-common-prefix/1.1",
+ test_has_common_prefix_that_equals_the_min_required_length);
+ g_test_add_func ("/get-common-prefix/1.2",
+ test_has_common_prefix_that_equals_the_min_required_length2);
+ g_test_add_func ("/get-common-prefix/1.3",
+ test_many_strings_with_common_prefix);
+ g_test_add_func ("/get-common-prefix/1.4",
+ test_strings_with_unicode_characters_that_have_common_prefix);
+
+ g_test_add_func ("/get-common-prefix/2.0",
+ test_no_common_prefix);
+ g_test_add_func ("/get-common-prefix/2.1",
+ test_has_common_prefix_but_smaller_than_min_required_length);
+ g_test_add_func ("/get-common-prefix/2.2",
+ test_first_character_differs);
+ g_test_add_func ("/get-common-prefix/2.3",
+ test_strings_with_unicode_characters_that_dont_have_common_prefix);
+}
+
+int
+main (int argc,
+ char *argv[])
+{
+ g_test_init (&argc, &argv, NULL);
+ g_test_bug_base ("http://bugzilla.gnome.org/show_bug.cgi?id=747907");
+ g_test_set_nonfatal_assertions ();
+
+ setup_test_suite ();
+
+ return g_test_run ();
+}