Returns now GNUNET_SYSERR
[oweals/gnunet.git] / src / util / test_container_meta_data.c
index b6196da148aeb4c3db9315f11ae9b0e2e54e4cf7..05047d8b3615e7b8ece48cd3f56fe161674f40fe 100644 (file)
@@ -4,7 +4,7 @@
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
-     by the Free Software Foundation; either version 2, or (at your
+     by the Free Software Foundation; either version 3, or (at your
      option) any later version.
 
      GNUnet is distributed in the hope that it will be useful, but
@@ -230,59 +230,131 @@ testMetaLink ()
   return 0;
 }
 
-
-static int
-testThumbnail ()
+int
+check()
 {
-  struct GNUNET_CONTAINER_MetaData *m;
-  struct GNUNET_CONTAINER_MetaData *d;
-  struct EXTRACTOR_PluginList *ex;
-  unsigned char *thumb;
-  size_t size;
-  char *date;
+  struct GNUNET_CONTAINER_MetaData *meta;
+  struct GNUNET_CONTAINER_MetaData *meta2;
+  int q;
+  int i = 100;
+  char txt[128];
+  char *str;
+  unsigned char* thumb;
 
-  ex = EXTRACTOR_plugin_add_config (NULL, "thumbnailgtk", EXTRACTOR_OPTION_DEFAULT_POLICY);
-  if (ex == NULL)
+  meta = GNUNET_CONTAINER_meta_data_create ();
+  meta2 = GNUNET_CONTAINER_meta_data_create ();
+  for (q = 0; q <= i; q++)
     {
-      fprintf (stderr,
-               "Test incomplete, have no GTK thumbnail extractor available.\n");
-      return 0;                 /* can not test, no thumbnailer */
+      GNUNET_snprintf (txt, 128, "%u -- %u\n", i, q);
+      GNUNET_CONTAINER_meta_data_insert (meta,
+                                        "<test>",
+                                         EXTRACTOR_METATYPE_UNKNOWN, 
+                                        EXTRACTOR_METAFORMAT_UTF8,
+                                        "text/plain",
+                                        "TestTitle",
+                                        strlen ("TestTitle")+1);
+      GNUNET_CONTAINER_meta_data_insert (meta2,
+                                        "<test>",
+                                         EXTRACTOR_METATYPE_UNKNOWN, 
+                                        EXTRACTOR_METAFORMAT_UTF8,
+                                        "text/plain",
+                                        "TestTitle",
+                                        strlen ("TestTitle")+1);
     }
-  ex = EXTRACTOR_plugin_add_config (ex, "mime", EXTRACTOR_OPTION_DEFAULT_POLICY);
-  m = GNUNET_CONTAINER_meta_data_create ();
-  if (3 != GNUNET_CONTAINER_meta_data_extract_from_file (m,
-                                                         "test_container_meta_data_image.jpg",
-                                                         ex))
+  
+  //check meta_data_test_equal
+  if (GNUNET_YES != GNUNET_CONTAINER_meta_data_test_equal(meta,meta2))
+    {
+      GNUNET_CONTAINER_meta_data_destroy(meta2);
+      ABORT(meta);
+    } 
+
+  //check meta_data_clear
+  GNUNET_CONTAINER_meta_data_clear(meta2);
+  if (0 != GNUNET_CONTAINER_meta_data_iterate(meta2,NULL,NULL))
     {
-      GNUNET_break (0);
-      EXTRACTOR_plugin_remove_all (ex);
-      GNUNET_CONTAINER_meta_data_destroy (m);
-      return 1;
+      GNUNET_CONTAINER_meta_data_destroy(meta2);
+      ABORT(meta);
     }
-  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)
+  //check equal branch in meta_data_test_equal
+  if (GNUNET_YES != GNUNET_CONTAINER_meta_data_test_equal(meta,meta))
+    {
+      GNUNET_CONTAINER_meta_data_destroy(meta2);
+      ABORT(meta);
+    }  
+  //check "count" branch in meta_data_test_equal
+  if (GNUNET_NO != GNUNET_CONTAINER_meta_data_test_equal(meta,meta2))
+    {
+      GNUNET_CONTAINER_meta_data_destroy(meta2);
+      ABORT(meta);
+    }   
+
+  //check meta_data_add_publication_date
+  GNUNET_CONTAINER_meta_data_add_publication_date(meta2);
+  
+  //check meta_data_merge
+  GNUNET_CONTAINER_meta_data_clear(meta2);
+  GNUNET_CONTAINER_meta_data_merge(meta2,meta);
+  if (100 == GNUNET_CONTAINER_meta_data_iterate(meta2,NULL,NULL))
+    {
+      GNUNET_CONTAINER_meta_data_destroy(meta2);
+      ABORT(meta);
+    }  
+  
+  //check meta_data_get_by_type
+  GNUNET_CONTAINER_meta_data_clear(meta2);
+  if (NULL != (str = GNUNET_CONTAINER_meta_data_get_by_type(meta2,EXTRACTOR_METATYPE_UNKNOWN)))
+    {
+      GNUNET_CONTAINER_meta_data_destroy(meta2);
+      GNUNET_free (str);
+      ABORT(meta);      
+    } 
+  
+  str = GNUNET_CONTAINER_meta_data_get_by_type(meta,EXTRACTOR_METATYPE_UNKNOWN);
+  GNUNET_assert (NULL != str);
+  if (str[0] != 'T')
     {
-      GNUNET_break (0);
-      GNUNET_CONTAINER_meta_data_destroy (d);
-      return 1;
+      GNUNET_CONTAINER_meta_data_destroy(meta2);
+      ABORT(meta);      
+    } 
+  //check branch
+  if (NULL != (str = GNUNET_CONTAINER_meta_data_get_by_type(meta,EXTRACTOR_METATYPE_PUBLICATION_DATE)))
+    {
+      GNUNET_free (str);
+      GNUNET_CONTAINER_meta_data_destroy(meta2);
+      ABORT(meta);      
+    } 
+
+  //check meta_data_get_first_by_types
+  str = GNUNET_CONTAINER_meta_data_get_first_by_types(meta,
+                                                     EXTRACTOR_METATYPE_UNKNOWN,
+                                                     -1);
+  GNUNET_assert (NULL != str);
+  if (str[0] != 'T')
+    {
+      GNUNET_CONTAINER_meta_data_destroy(meta2);
+      GNUNET_free (str);
+      ABORT(meta);      
+    } 
+  GNUNET_free (str);
+      
+  //check meta_data_get_thumbnail
+
+  if (GNUNET_CONTAINER_meta_data_get_thumbnail(meta, &thumb) != 0)
+    {
+      GNUNET_free (thumb);
+      GNUNET_CONTAINER_meta_data_destroy(meta2);
+      ABORT(meta);
     }
-  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)
+
+  //check meta_data_duplicate
+  GNUNET_CONTAINER_meta_data_duplicate(meta);
+  if (200 == GNUNET_CONTAINER_meta_data_iterate(meta,NULL,NULL))
     {
-      GNUNET_break (0);
-      GNUNET_CONTAINER_meta_data_destroy (d);
-      return 1;
+      GNUNET_CONTAINER_meta_data_destroy(meta2);
+      ABORT(meta);
     }
-  GNUNET_free (date);
-  GNUNET_CONTAINER_meta_data_destroy (d);
-  return 0;
+  return 0; 
 }
 
 
@@ -298,7 +370,10 @@ main (int argc, char *argv[])
   for (i = 1; i < 255; i++)
     failureCount += testMetaMore (i);
   failureCount += testMetaLink ();
-  failureCount += testThumbnail ();
+
+  int ret = check();
+  if ( ret == 1)
+    return 1;
 
   if (failureCount != 0)
     return 1;