diff options
Diffstat (limited to 'test/automated/displayless/test-file-utilities-get-common-filename-prefix.c')
-rw-r--r-- | test/automated/displayless/test-file-utilities-get-common-filename-prefix.c | 459 |
1 files changed, 459 insertions, 0 deletions
diff --git a/test/automated/displayless/test-file-utilities-get-common-filename-prefix.c b/test/automated/displayless/test-file-utilities-get-common-filename-prefix.c new file mode 100644 index 0000000..4c044a0 --- /dev/null +++ b/test/automated/displayless/test-file-utilities-get-common-filename-prefix.c @@ -0,0 +1,459 @@ +#include <glib.h> +#include <glib/gprintf.h> + +#include "src/nautilus-file-utilities.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, "test"); + list = g_list_append (list, "tests"); + + actual = nautilus_get_common_filename_prefix_from_filenames (list, 4); + g_assert_cmpstr ("test", ==, actual); + + free_list_and_result (list, actual); +} + +static void +test_has_large_enough_common_prefix_with_spaces_in_middle (void) +{ + GList *list = NULL; + char *actual; + + list = g_list_append (list, "Cpt J Yossarian r1"); + list = g_list_append (list, "Cpt J Yossarian a1"); + + actual = nautilus_get_common_filename_prefix_from_filenames (list, 4); + g_assert_cmpstr ("Cpt J Yossarian", ==, actual); + + free_list_and_result (list, actual); +} + +static void +test_has_large_enough_common_prefix_with_punctuation_in_middle (void) +{ + GList *list = NULL; + char *actual; + + list = g_list_append (list, "Cpt-J_Yossarian r1"); + list = g_list_append (list, "Cpt-J_Yossarian a1"); + + actual = nautilus_get_common_filename_prefix_from_filenames (list, 4); + g_assert_cmpstr ("Cpt-J_Yossarian", ==, actual); + + free_list_and_result (list, actual); +} + +static void +test_has_large_enough_common_prefix_with_punctuation_in_middle_and_extension (void) +{ + GList *list = NULL; + char *actual; + + list = g_list_append (list, "Cpt-J, Yossarian.xml"); + list = g_list_append (list, "Cpt-J, Yossarian.xsl"); + + actual = nautilus_get_common_filename_prefix_from_filenames (list, 4); + g_assert_cmpstr ("Cpt-J, Yossarian", ==, actual); + + free_list_and_result (list, actual); +} + +static void +test_doesnt_have_large_enough_common_prefix (void) +{ + GList *list = NULL; + char *actual; + + list = g_list_append (list, "foo"); + list = g_list_append (list, "foob"); + + actual = nautilus_get_common_filename_prefix_from_filenames (list, 4); + g_assert_null (actual); + + free_list_and_result (list, actual); +} + +static void +test_doesnt_have_large_enough_common_prefix_completely_different_strings (void) +{ + GList *list = NULL; + char *actual; + + list = g_list_append (list, "this string really"); + list = g_list_append (list, "isn't the same as the other"); + + actual = nautilus_get_common_filename_prefix_from_filenames (list, 4); + g_assert_null (actual); + + free_list_and_result (list, actual); +} + +static void +test_doesnt_have_large_enough_common_prefix_first_character_differs (void) +{ + GList *list = NULL; + char *actual; + + list = g_list_append (list, "foo"); + list = g_list_append (list, "roo"); + + actual = nautilus_get_common_filename_prefix_from_filenames (list, 4); + g_assert_null (actual); + + free_list_and_result (list, actual); +} + +static void +test_doesnt_have_large_enough_common_prefix_first_character_differs_longer_string (void) +{ + GList *list = NULL; + char *actual; + + list = g_list_append (list, "fools"); + list = g_list_append (list, "rools"); + + actual = nautilus_get_common_filename_prefix_from_filenames (list, 4); + g_assert_null (actual); + + free_list_and_result (list, actual); +} + +static void +test_has_large_enough_common_prefix_until_extension_removed (void) +{ + GList *list = NULL; + char *actual; + + list = g_list_append (list, "tes.txt"); + list = g_list_append (list, "tes.tar"); + + actual = nautilus_get_common_filename_prefix_from_filenames (list, 4); + g_assert_null (actual); + + free_list_and_result (list, actual); +} + +static void +test_extension_is_removed (void) +{ + GList *list = NULL; + char *actual; + + list = g_list_append (list, "nau tilus.c"); + list = g_list_append (list, "nau tilus.cpp"); + + actual = nautilus_get_common_filename_prefix_from_filenames (list, 4); + g_assert_cmpstr ("nau tilus", ==, actual); + + free_list_and_result (list, actual); +} + +static void +test_whitespace_is_removed (void) +{ + GList *list = NULL; + char *actual; + + list = g_list_append (list, "nautilus "); + list = g_list_append (list, "nautilus two"); + + actual = nautilus_get_common_filename_prefix_from_filenames (list, 4); + g_assert_cmpstr ("nautilus", ==, actual); + + free_list_and_result (list, actual); +} + +static void +test_whitespace_and_extension_are_removed (void) +{ + GList *list = NULL; + char *actual; + + list = g_list_append (list, "nautilus !£ $\" foo.tar.gz"); + list = g_list_append (list, "nautilus !£ $\" .lzma"); + + actual = nautilus_get_common_filename_prefix_from_filenames (list, 4); + g_assert_cmpstr ("nautilus !£ $\"", ==, actual); + + free_list_and_result (list, actual); +} + +static void +test_punctuation_is_preserved (void) +{ + GList *list = NULL; + char *actual; + + list = g_list_append (list, "nautilus (2018!£$%^&* ()_+-={}[ ];':@#~<>?,./\".mp4"); + list = g_list_append (list, "nautilus (2018!£$%^&* ()_+-={}[ ];':@#~<>?,./\".srt"); + + actual = nautilus_get_common_filename_prefix_from_filenames (list, 4); + g_assert_cmpstr ("nautilus (2018!£$%^&* ()_+-={}[ ];':@#~<>?,./\"", ==, actual); + + free_list_and_result (list, actual); +} + +static void +test_unicode_on_outside (void) +{ + GList *list = NULL; + char *actual; + + list = g_list_append (list, "ӶtestӶ234"); + list = g_list_append (list, "ӶtestӶ1"); + + actual = nautilus_get_common_filename_prefix_from_filenames (list, 4); + g_assert_cmpstr ("ӶtestӶ", ==, actual); + + free_list_and_result (list, actual); +} + +static void +test_unicode_on_inside (void) +{ + GList *list = NULL; + char *actual; + + list = g_list_append (list, "QQӶtestӶabb234"); + list = g_list_append (list, "QQӶtestӶabb1"); + + actual = nautilus_get_common_filename_prefix_from_filenames (list, 4); + g_assert_cmpstr ("QQӶtestӶabb", ==, actual); + + free_list_and_result (list, actual); +} + +static void +test_unicode_whole_string (void) +{ + GList *list = NULL; + char *actual; + + list = g_list_append (list, "ǣȸʸͻͻΎΘΛ"); + list = g_list_append (list, "ǣȸʸͻͻΎΘ"); + + actual = nautilus_get_common_filename_prefix_from_filenames (list, 4); + g_assert_cmpstr ("ǣȸʸͻͻΎΘ", ==, actual); + + free_list_and_result (list, actual); +} + +static void +test_unicode_extension (void) +{ + GList *list = NULL; + char *actual; + + list = g_list_append (list, "test.ǣȸʸͻͻΎΘΛ"); + list = g_list_append (list, "test.ǣȸʸͻͻΎΘ"); + + actual = nautilus_get_common_filename_prefix_from_filenames (list, 4); + g_assert_cmpstr ("test", ==, actual); + + free_list_and_result (list, actual); +} + +static void +test_unicode_with_punctuation (void) +{ + GList *list = NULL; + char *actual; + + list = g_list_append (list, "ǣȸʸ- ͻͻΎΘ$%%^"); + list = g_list_append (list, "ǣȸʸ- ͻͻΎΘ$%%&"); + + actual = nautilus_get_common_filename_prefix_from_filenames (list, 4); + g_assert_cmpstr ("ǣȸʸ- ͻͻΎΘ$%%", ==, actual); + + free_list_and_result (list, actual); +} + +static void +test_many_strings (void) +{ + GList *list = NULL; + char *actual; + char *filename; + int i; + + for (i = 0; i < 500; ++i) + { + filename = g_strdup_printf ("we are no longer the knights who say nii%d", i); + list = g_list_append (list, filename); + } + + actual = nautilus_get_common_filename_prefix_from_filenames (list, 4); + g_assert_cmpstr ("we are no longer the knights who say nii", ==, actual); + + g_free (actual); + g_list_free_full (list, g_free); +} + +static void +test_many_strings_last_differs (void) +{ + GList *list = NULL; + char *actual; + char *filename; + int i; + + for (i = 0; i < 500; ++i) + { + filename = g_strdup_printf ("we are no longer the knights who say nii%d", i); + + if (i == 499) + { + filename[2] = 'X'; + } + + list = g_list_append (list, filename); + } + + actual = nautilus_get_common_filename_prefix_from_filenames (list, 4); + g_assert_null (actual); + + g_free (actual); + g_list_free_full (list, g_free); +} + +static void +test_many_strings_first_differs (void) +{ + GList *list = NULL; + char *actual; + char *filename; + int i; + + for (i = 0; i < 500; ++i) + { + filename = g_strdup_printf ("we are no longer the knights who say nii%d", i); + + if (i == 0) + { + filename[2] = 'X'; + } + + list = g_list_append (list, filename); + } + + actual = nautilus_get_common_filename_prefix_from_filenames (list, 4); + g_assert_null (actual); + + g_free (actual); + g_list_free_full (list, g_free); +} + +static void +test_smaller_min_length_and_does_have_common_prefix (void) +{ + GList *list = NULL; + char *actual; + + list = g_list_append (list, "CA"); + list = g_list_append (list, "CB"); + + actual = nautilus_get_common_filename_prefix_from_filenames (list, 1); + g_assert_cmpstr ("C", ==, actual); + + free_list_and_result (list, actual); +} + +static void +test_smaller_min_length_and_doesnt_have_common_prefix (void) +{ + GList *list = NULL; + char *actual; + + list = g_list_append (list, "CA"); + list = g_list_append (list, "BB"); + + actual = nautilus_get_common_filename_prefix_from_filenames (list, 1); + g_assert_null (actual); + + free_list_and_result (list, actual); +} + + +static void +setup_test_suite (void) +{ + g_test_add_func ("/get-common-filename-prefix/1.0", + test_has_large_enough_common_prefix); + g_test_add_func ("/get-common-filename-prefix/1.1", + test_has_large_enough_common_prefix_with_spaces_in_middle); + g_test_add_func ("/get-common-filename-prefix/1.2", + test_has_large_enough_common_prefix_with_punctuation_in_middle); + g_test_add_func ("/get-common-filename-prefix/1.3", + test_has_large_enough_common_prefix_with_punctuation_in_middle_and_extension); + + g_test_add_func ("/get-common-filename-prefix/2.0", + test_doesnt_have_large_enough_common_prefix); + g_test_add_func ("/get-common-filename-prefix/2.1", + test_doesnt_have_large_enough_common_prefix_completely_different_strings); + g_test_add_func ("/get-common-filename-prefix/2.2", + test_doesnt_have_large_enough_common_prefix_first_character_differs); + g_test_add_func ("/get-common-filename-prefix/2.3", + test_doesnt_have_large_enough_common_prefix_first_character_differs_longer_string); + + g_test_add_func ("/get-common-filename-prefix/3.0", + test_has_large_enough_common_prefix_until_extension_removed); + + g_test_add_func ("/get-common-filename-prefix/4.0", + test_extension_is_removed); + g_test_add_func ("/get-common-filename-prefix/4.1", + test_whitespace_is_removed); + g_test_add_func ("/get-common-filename-prefix/4.2", + test_whitespace_and_extension_are_removed); + g_test_add_func ("/get-common-filename-prefix/4.3", + test_punctuation_is_preserved); + + g_test_add_func ("/get-common-filename-prefix/5.0", + test_unicode_on_inside); + g_test_add_func ("/get-common-filename-prefix/5.1", + test_unicode_on_outside); + g_test_add_func ("/get-common-filename-prefix/5.2", + test_unicode_whole_string); + g_test_add_func ("/get-common-filename-prefix/5.3", + test_unicode_extension); + g_test_add_func ("/get-common-filename-prefix/5.4", + test_unicode_with_punctuation); + + g_test_add_func ("/get-common-filename-prefix/6.0", + test_many_strings); + g_test_add_func ("/get-common-filename-prefix/6.1", + test_many_strings_last_differs); + g_test_add_func ("/get-common-filename-prefix/6.2", + test_many_strings_first_differs); + + g_test_add_func ("/get-common-filename-prefix/7.0", + test_smaller_min_length_and_does_have_common_prefix); + g_test_add_func ("/get-common-filename-prefix/7.1", + test_smaller_min_length_and_doesnt_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 (); +} |