summaryrefslogtreecommitdiffstats
path: root/test/automated/displayless/test-file-utilities.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/automated/displayless/test-file-utilities.c')
-rw-r--r--test/automated/displayless/test-file-utilities.c240
1 files changed, 240 insertions, 0 deletions
diff --git a/test/automated/displayless/test-file-utilities.c b/test/automated/displayless/test-file-utilities.c
new file mode 100644
index 0000000..17a7c92
--- /dev/null
+++ b/test/automated/displayless/test-file-utilities.c
@@ -0,0 +1,240 @@
+#include <glib.h>
+#include <glib/gprintf.h>
+#include "src/nautilus-directory.h"
+#include "src/nautilus-file-utilities.h"
+#include "src/nautilus-search-directory.h"
+#include "src/nautilus-directory.h"
+#include "src/nautilus-file.h"
+#include "src/nautilus-file.c"
+#include <unistd.h>
+#include "eel/eel-string.h"
+
+#define ROOT_DIR "file:///tmp"
+
+/* Tests the function for empty selections */
+static void
+test_both_null (void)
+{
+ g_assert_true (nautilus_file_selection_equal (NULL, NULL));
+}
+
+/* Tests the function for an empty and a non-empty selection */
+static void
+test_either_null (void)
+{
+ g_autoptr (NautilusFile) file = NULL;
+ g_autoptr (NautilusDirectory) directory = NULL;
+ g_autolist (NautilusFile) selection = NULL;
+
+ directory = nautilus_directory_get_by_uri (ROOT_DIR);
+ g_assert_true (NAUTILUS_IS_DIRECTORY (directory));
+
+ file = nautilus_file_new_from_filename (directory, "null_first", FALSE);
+ nautilus_directory_add_file (directory, file);
+
+ selection = g_list_append (selection, g_object_ref (file));
+ g_assert_false (nautilus_file_selection_equal (NULL, selection));
+ g_assert_false (nautilus_file_selection_equal (selection, NULL));
+}
+
+/* tests the function for 2 identical selections, each containing one file */
+static void
+test_one_file_equal (void)
+{
+ g_autoptr (NautilusFile) file = NULL;
+ g_autoptr (NautilusDirectory) directory = NULL;
+ g_autolist (NautilusFile) selection = NULL;
+
+ directory = nautilus_directory_get_by_uri (ROOT_DIR);
+ g_assert_true (NAUTILUS_IS_DIRECTORY (directory));
+
+ file = nautilus_file_new_from_filename (directory, "one_file_equal", FALSE);
+ nautilus_directory_add_file (directory, file);
+
+ selection = g_list_append (selection, g_object_ref (file));
+ g_assert_true (nautilus_file_selection_equal (selection, selection));
+}
+
+/* Tests the function for 2 different selections, each containing one file */
+static void
+test_one_file_different (void)
+{
+ g_autoptr (NautilusFile) one_file_first = NULL;
+ g_autoptr (NautilusFile) one_file_second = NULL;
+ g_autoptr (NautilusDirectory) directory = NULL;
+ g_autolist (NautilusFile) first_selection = NULL;
+ g_autolist (NautilusFile) second_selection = NULL;
+
+ directory = nautilus_directory_get_by_uri (ROOT_DIR);
+ g_assert_true (NAUTILUS_IS_DIRECTORY (directory));
+
+ one_file_first = nautilus_file_new_from_filename (directory, "one_file_first", FALSE);
+ nautilus_directory_add_file (directory, one_file_first);
+
+ one_file_second = nautilus_file_new_from_filename (directory, "one_file_second", FALSE);
+ nautilus_directory_add_file (directory, one_file_second);
+
+ first_selection = g_list_append (first_selection, g_object_ref (one_file_first));
+ second_selection = g_list_append (second_selection, g_object_ref (one_file_second));
+ g_assert_false (nautilus_file_selection_equal (first_selection, second_selection));
+}
+
+/* Tests the function for 2 identical selections, each containing 50 files */
+static void
+test_multiple_files_equal_medium (void)
+{
+ g_autoptr (NautilusDirectory) directory = NULL;
+ g_autolist (NautilusFile) selection = NULL;
+
+ directory = nautilus_directory_get_by_uri (ROOT_DIR);
+ g_assert_true (NAUTILUS_IS_DIRECTORY (directory));
+ for (gint index = 0; index < 50; index++)
+ {
+ g_autoptr (NautilusFile) file = NULL;
+ g_autofree gchar *file_name = NULL;
+
+ file_name = g_strdup_printf ("multiple_files_equal_medium_%i", index);
+ file = nautilus_file_new_from_filename (directory, file_name, FALSE);
+ nautilus_directory_add_file (directory, file);
+ selection = g_list_prepend (selection, g_object_ref (file));
+ }
+
+ g_assert_true (nautilus_file_selection_equal (selection, selection));
+}
+
+/* Tests the function for 2 different selections, each containing 51 files,
+ * the last file being the different one */
+static void
+test_multiple_files_different_medium (void)
+{
+ g_autoptr (NautilusFile) first_file = NULL;
+ g_autoptr (NautilusFile) second_file = NULL;
+ g_autoptr (NautilusDirectory) directory = NULL;
+ g_autolist (NautilusFile) first_selection = NULL;
+ g_autolist (NautilusFile) second_selection = NULL;
+ g_autofree gchar *first_file_name = NULL;
+ g_autofree gchar *second_file_name = NULL;
+
+ directory = nautilus_directory_get_by_uri (ROOT_DIR);
+ g_assert_true (NAUTILUS_IS_DIRECTORY (directory));
+ for (gint index = 0; index < 50; index++)
+ {
+ first_file_name = g_strdup_printf ("multiple_files_different_medium_%i", index);
+ first_file = nautilus_file_new_from_filename (directory, first_file_name, FALSE);
+ nautilus_directory_add_file (directory, first_file);
+ g_assert_true (NAUTILUS_IS_FILE (first_file));
+ first_selection = g_list_prepend (first_selection, g_object_ref (first_file));
+ second_selection = g_list_prepend (second_selection, g_object_ref (first_file));
+ }
+
+ first_file_name = g_strdup_printf ("multiple_files_different_medium_lastElement");
+ second_file_name = g_strdup_printf ("multiple_files_different_medium_differentElement");
+ first_file = nautilus_file_new_from_filename (directory, first_file_name, FALSE);
+ nautilus_directory_add_file (directory, first_file);
+ second_file = nautilus_file_new_from_filename (directory, second_file_name, FALSE);
+ nautilus_directory_add_file (directory, second_file);
+ g_assert_true (NAUTILUS_IS_FILE (first_file));
+ g_assert_true (NAUTILUS_IS_FILE (second_file));
+ first_selection = g_list_append (first_selection, g_object_ref (first_file));
+ second_selection = g_list_append (second_selection, g_object_ref (second_file));
+
+ g_assert_false (nautilus_file_selection_equal (first_selection, second_selection));
+}
+
+/* Tests the function for 2 identical selections, each containing 1000 files */
+static void
+test_multiple_files_equal_large (void)
+{
+ g_autoptr (NautilusDirectory) directory = NULL;
+ g_autolist (NautilusFile) selection = NULL;
+
+ directory = nautilus_directory_get_by_uri (ROOT_DIR);
+ g_assert_true (NAUTILUS_IS_DIRECTORY (directory));
+ for (gint index = 0; index < 1000; index++)
+ {
+ g_autoptr (NautilusFile) file = NULL;
+ g_autofree gchar *file_name = NULL;
+
+ file_name = g_strdup_printf ("multiple_files_equal_large_%i", index);
+ file = nautilus_file_new_from_filename (directory, file_name, FALSE);
+ nautilus_directory_add_file (directory, file);
+ g_assert_true (NAUTILUS_IS_FILE (file));
+ selection = g_list_prepend (selection, g_object_ref (file));
+ }
+
+ g_assert_true (nautilus_file_selection_equal (selection, selection));
+}
+
+/* Tests the function for 2 different selections, each containing 1001 files,
+ * the last file being the different one */
+static void
+test_multiple_files_different_large (void)
+{
+ g_autoptr (NautilusFile) first_file = NULL;
+ g_autoptr (NautilusFile) second_file = NULL;
+ g_autoptr (NautilusDirectory) directory = NULL;
+ g_autolist (NautilusFile) first_selection = NULL;
+ g_autolist (NautilusFile) second_selection = NULL;
+ g_autofree gchar *first_file_name = NULL;
+ g_autofree gchar *second_file_name = NULL;
+
+ directory = nautilus_directory_get_by_uri (ROOT_DIR);
+ g_assert_true (NAUTILUS_IS_DIRECTORY (directory));
+ for (gint index = 0; index < 1000; index++)
+ {
+ first_file_name = g_strdup_printf ("multiple_files_different_large_%i", index);
+ first_file = nautilus_file_new_from_filename (directory, first_file_name, FALSE);
+ nautilus_directory_add_file (directory, first_file);
+ g_assert_true (NAUTILUS_IS_FILE (first_file));
+ first_selection = g_list_prepend (first_selection, g_object_ref (first_file));
+ second_selection = g_list_prepend (second_selection, g_object_ref (first_file));
+ }
+
+ first_file_name = g_strdup_printf ("multiple_files_different_large_lastElement");
+ second_file_name = g_strdup_printf ("multiple_files_different_large_differentElement");
+ first_file = nautilus_file_new_from_filename (directory, first_file_name, FALSE);
+ nautilus_directory_add_file (directory, first_file);
+ second_file = nautilus_file_new_from_filename (directory, second_file_name, FALSE);
+ nautilus_directory_add_file (directory, second_file);
+ g_assert_true (NAUTILUS_IS_FILE (first_file));
+ g_assert_true (NAUTILUS_IS_FILE (second_file));
+
+ first_selection = g_list_append (first_selection, g_object_ref (first_file));
+ second_selection = g_list_append (second_selection, g_object_ref (second_file));
+
+ g_assert_false (nautilus_file_selection_equal (first_selection, second_selection));
+}
+
+static void
+setup_test_suite (void)
+{
+ g_test_add_func ("/file-selection-equal-null/1.0",
+ test_both_null);
+ g_test_add_func ("/file-selection-equal-null/1.1",
+ test_either_null);
+ g_test_add_func ("/file-selection-equal-files/1.0",
+ test_one_file_equal);
+ g_test_add_func ("/file-selection-equal-files/1.1",
+ test_multiple_files_equal_medium);
+ g_test_add_func ("/file-selection-equal-files/1.2",
+ test_multiple_files_equal_large);
+ g_test_add_func ("/file-selection-different-files/1.0",
+ test_one_file_different);
+ g_test_add_func ("/file-selection-different-files/1.1",
+ test_multiple_files_different_medium);
+ g_test_add_func ("/file-selection-different-files/1.2",
+ test_multiple_files_different_large);
+}
+
+int
+main (int argc,
+ char *argv[])
+{
+ g_test_init (&argc, &argv, NULL);
+ g_test_set_nonfatal_assertions ();
+ nautilus_ensure_extension_points ();
+
+ setup_test_suite ();
+
+ return g_test_run ();
+}