fix
[oweals/gnunet.git] / src / fs / test_fs_file_information.c
index 36a0771a31270b41a297dbdc1a748c6f5b8f0c81..2574db7dc0cdb1f9180011e902f20fffc6ee6927 100644 (file)
@@ -57,6 +57,7 @@ mycleaner(void *cls,
          struct GNUNET_FS_Uri **uri,
          uint32_t *anonymity,
          uint32_t *priority,
+         int *do_index,
          struct GNUNET_TIME_Absolute *expirationTime,
          void **client_info)
 {
@@ -83,8 +84,12 @@ run (void *cls,
   struct GNUNET_FS_FileInformation *fi1;
   struct GNUNET_FS_FileInformation *fi2;
   struct GNUNET_FS_FileInformation *fidir;
+  struct GNUNET_FS_Handle *fs;
   size_t i;
 
+  fs = GNUNET_FS_start (s, cfg, "test-fs-file-information", NULL, NULL, 
+                       GNUNET_FS_FLAGS_NONE,
+                       GNUNET_FS_OPTIONS_END);
   fn1 = GNUNET_DISK_mktemp ("gnunet-file_information-test-dst");
   buf = GNUNET_malloc (FILESIZE);
   for (i = 0; i < FILESIZE; i++)
@@ -109,7 +114,8 @@ run (void *cls,
 
   meta = GNUNET_CONTAINER_meta_data_create ();
   kuri = GNUNET_FS_uri_ksk_create_from_args (2, keywords);
-  fi1 = GNUNET_FS_file_information_create_from_file ("file_information-context1",
+  fi1 = GNUNET_FS_file_information_create_from_file (fs,
+                                                    "file_information-context1",
                                                     fn1,
                                                     kuri,
                                                     meta,
@@ -117,7 +123,8 @@ run (void *cls,
                                                     1,
                                                     42,
                                                     GNUNET_TIME_relative_to_absolute (LIFETIME)); 
-  fi2 = GNUNET_FS_file_information_create_from_file ("file_information-context2",
+  fi2 = GNUNET_FS_file_information_create_from_file (fs,
+                                                    "file_information-context2",
                                                     fn2,
                                                     kuri,
                                                     meta,
@@ -125,7 +132,8 @@ run (void *cls,
                                                     1,
                                                     42,
                                                     GNUNET_TIME_relative_to_absolute (LIFETIME)); 
-  fidir = GNUNET_FS_file_information_create_empty_directory ("file_information-context-dir",
+  fidir = GNUNET_FS_file_information_create_empty_directory (fs,
+                                                            "file_information-context-dir",
                                                             kuri,
                                                             meta,
                                                             1,
@@ -144,9 +152,66 @@ run (void *cls,
   GNUNET_DISK_directory_remove (fn2);
   GNUNET_free_non_null (fn1);
   GNUNET_free_non_null (fn2);
+  GNUNET_FS_stop (fs);
 }
 
 
+static int
+testThumbnail ()
+{
+  struct GNUNET_CONTAINER_MetaData *m;
+  struct GNUNET_CONTAINER_MetaData *d;
+  struct EXTRACTOR_PluginList *ex;
+  unsigned char *thumb;
+  size_t size;
+  char *date;
+
+  ex = EXTRACTOR_plugin_add_config (NULL, "thumbnailgtk", EXTRACTOR_OPTION_DEFAULT_POLICY);
+  if (ex == NULL)
+    {
+      fprintf (stderr,
+               "Test incomplete, have no GTK thumbnail extractor available.\n");
+      return 0;                 /* can not test, no thumbnailer */
+    }
+  ex = EXTRACTOR_plugin_add_config (ex, "mime", EXTRACTOR_OPTION_DEFAULT_POLICY);
+  m = GNUNET_CONTAINER_meta_data_create ();
+  if (3 != GNUNET_FS_meta_data_extract_from_file (m,
+                                                 "test_fs_file_information_meta_data_image.jpg",
+                                                 ex))
+    {
+      GNUNET_break (0);
+      EXTRACTOR_plugin_remove_all (ex);
+      GNUNET_CONTAINER_meta_data_destroy (m);
+      return 1;
+    }
+  EXTRACTOR_plugin_remove_all (ex);
+  d = GNUNET_CONTAINER_meta_data_duplicate (m);
+  GNUNET_CONTAINER_meta_data_destroy (m);
+  thumb = NULL;
+  size = GNUNET_CONTAINER_meta_data_get_thumbnail (d, &thumb);
+  if (size == 0)
+    {
+      GNUNET_break (0);
+      GNUNET_CONTAINER_meta_data_destroy (d);
+      return 1;
+    }
+  GNUNET_free (thumb);
+  GNUNET_CONTAINER_meta_data_add_publication_date (d);
+  date = GNUNET_CONTAINER_meta_data_get_by_type (d,
+                                                 EXTRACTOR_METATYPE_PUBLICATION_DATE);
+  if (date == NULL)
+    {
+      GNUNET_break (0);
+      GNUNET_CONTAINER_meta_data_destroy (d);
+      return 1;
+    }
+  GNUNET_free (date);
+  GNUNET_CONTAINER_meta_data_destroy (d);
+  return 0;
+}
+
+
+
 int
 main (int argc, char *argv[])
 {
@@ -170,6 +235,8 @@ main (int argc, char *argv[])
                    "WARNING",
 #endif
                    NULL);
+  if (0 != testThumbnail ())
+    return 1;
   GNUNET_PROGRAM_run ((sizeof (argvx) / sizeof (char *)) - 1,
                       argvx, "test-fs-file_information",
                      "nohelp", options, &run, NULL);