Returns now GNUNET_SYSERR
[oweals/gnunet.git] / src / util / test_container_meta_data.c
index b3ff9679fd52ea15a2c1dac932f0f39b31b82b1f..05047d8b3615e7b8ece48cd3f56fe161674f40fe 100644 (file)
@@ -230,6 +230,133 @@ testMetaLink ()
   return 0;
 }
 
+int
+check()
+{
+  struct GNUNET_CONTAINER_MetaData *meta;
+  struct GNUNET_CONTAINER_MetaData *meta2;
+  int q;
+  int i = 100;
+  char txt[128];
+  char *str;
+  unsigned char* thumb;
+
+  meta = GNUNET_CONTAINER_meta_data_create ();
+  meta2 = GNUNET_CONTAINER_meta_data_create ();
+  for (q = 0; q <= i; q++)
+    {
+      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);
+    }
+  
+  //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_CONTAINER_meta_data_destroy(meta2);
+      ABORT(meta);
+    }
+  //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_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);
+    }
+
+  //check meta_data_duplicate
+  GNUNET_CONTAINER_meta_data_duplicate(meta);
+  if (200 == GNUNET_CONTAINER_meta_data_iterate(meta,NULL,NULL))
+    {
+      GNUNET_CONTAINER_meta_data_destroy(meta2);
+      ABORT(meta);
+    }
+  return 0; 
+}
+
 
 int
 main (int argc, char *argv[])
@@ -244,6 +371,10 @@ main (int argc, char *argv[])
     failureCount += testMetaMore (i);
   failureCount += testMetaLink ();
 
+  int ret = check();
+  if ( ret == 1)
+    return 1;
+
   if (failureCount != 0)
     return 1;
   return 0;