Fixed one serious bug, working on another. Still very broken.
[oweals/gnunet.git] / src / util / test_container_meta_data.c
index 66f90ff10c278bb528baede608023541ed85b206..7f9ffb0f112ee98e8cd71c46403ef7b94362926e 100644 (file)
@@ -1,6 +1,6 @@
 /*
      This file is part of GNUnet.
-     (C) 2003, 2004, 2006, 2009, 2010 Christian Grothoff (and other contributing authors)
+     Copyright (C) 2003, 2004, 2006, 2009, 2010 Christian Grothoff (and other contributing authors)
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -14,8 +14,8 @@
 
      You should have received a copy of the GNU General Public License
      along with GNUnet; see the file COPYING.  If not, write to the
-     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-     Boston, MA 02111-1307, USA.
+     Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+     Boston, MA 02110-1301, USA.
 */
 
 /**
@@ -25,8 +25,9 @@
  */
 
 #include "platform.h"
-#include "gnunet_common.h"
-#include "gnunet_container_lib.h"
+#include "gnunet_util_lib.h"
+
+#if HAVE_EXTRACTOR_H
 
 #define ABORT(m) { fprintf(stderr, "Error at %s:%d\n", __FILE__, __LINE__); if (m != NULL) GNUNET_CONTAINER_meta_data_destroy(m); return 1; }
 
@@ -41,55 +42,51 @@ testMeta (int i)
 
   m = GNUNET_CONTAINER_meta_data_create ();
   if (GNUNET_OK !=
-      GNUNET_CONTAINER_meta_data_insert (m, "<test>",
-                                        EXTRACTOR_METATYPE_TITLE,
-                                        EXTRACTOR_METAFORMAT_UTF8,
-                                        "text/plain", "TestTitle",
-                                        strlen ("TestTitle") + 1))
+      GNUNET_CONTAINER_meta_data_insert (m, "<test>", EXTRACTOR_METATYPE_TITLE,
+                                         EXTRACTOR_METAFORMAT_UTF8,
+                                         "text/plain", "TestTitle",
+                                         strlen ("TestTitle") + 1))
     ABORT (m);
   if (GNUNET_OK !=
       GNUNET_CONTAINER_meta_data_insert (m, "<test>",
-                                        EXTRACTOR_METATYPE_AUTHOR_NAME,
-                                        EXTRACTOR_METAFORMAT_UTF8,
-                                        "text/plain", "TestTitle",
-                                        strlen ("TestTitle") + 1))
+                                         EXTRACTOR_METATYPE_AUTHOR_NAME,
+                                         EXTRACTOR_METAFORMAT_UTF8,
+                                         "text/plain", "TestTitle",
+                                         strlen ("TestTitle") + 1))
     ABORT (m);
-  if (GNUNET_OK == GNUNET_CONTAINER_meta_data_insert (m, "<test>", EXTRACTOR_METATYPE_TITLE, EXTRACTOR_METAFORMAT_UTF8, "text/plain", "TestTitle", strlen ("TestTitle") + 1))  /* dup! */
+  if (GNUNET_OK == GNUNET_CONTAINER_meta_data_insert (m, "<test>", EXTRACTOR_METATYPE_TITLE, EXTRACTOR_METAFORMAT_UTF8, "text/plain", "TestTitle", strlen ("TestTitle") + 1))   /* dup! */
     ABORT (m);
-  if (GNUNET_OK == GNUNET_CONTAINER_meta_data_insert (m, "<test>", EXTRACTOR_METATYPE_AUTHOR_NAME, EXTRACTOR_METAFORMAT_UTF8, "text/plain", "TestTitle", strlen ("TestTitle") + 1))    /* dup! */
+  if (GNUNET_OK == GNUNET_CONTAINER_meta_data_insert (m, "<test>", EXTRACTOR_METATYPE_AUTHOR_NAME, EXTRACTOR_METAFORMAT_UTF8, "text/plain", "TestTitle", strlen ("TestTitle") + 1))     /* dup! */
     ABORT (m);
   if (2 != GNUNET_CONTAINER_meta_data_iterate (m, NULL, NULL))
     ABORT (m);
   if (GNUNET_OK !=
       GNUNET_CONTAINER_meta_data_delete (m, EXTRACTOR_METATYPE_AUTHOR_NAME,
-                                        "TestTitle",
-                                        strlen ("TestTitle") + 1))
+                                         "TestTitle", strlen ("TestTitle") + 1))
     ABORT (m);
-  if (GNUNET_OK == GNUNET_CONTAINER_meta_data_delete (m, EXTRACTOR_METATYPE_AUTHOR_NAME, "TestTitle", strlen ("TestTitle") + 1))       /* already gone */
+  if (GNUNET_OK == GNUNET_CONTAINER_meta_data_delete (m, EXTRACTOR_METATYPE_AUTHOR_NAME, "TestTitle", strlen ("TestTitle") + 1))        /* already gone */
     ABORT (m);
   if (1 != GNUNET_CONTAINER_meta_data_iterate (m, NULL, NULL))
     ABORT (m);
   if (GNUNET_OK !=
       GNUNET_CONTAINER_meta_data_delete (m, EXTRACTOR_METATYPE_TITLE,
-                                        "TestTitle",
-                                        strlen ("TestTitle") + 1))
+                                         "TestTitle", strlen ("TestTitle") + 1))
     ABORT (m);
-  if (GNUNET_OK == GNUNET_CONTAINER_meta_data_delete (m, EXTRACTOR_METATYPE_TITLE, "TestTitle", strlen ("TestTitle") + 1))     /* already gone */
+  if (GNUNET_OK == GNUNET_CONTAINER_meta_data_delete (m, EXTRACTOR_METATYPE_TITLE, "TestTitle", strlen ("TestTitle") + 1))      /* already gone */
     ABORT (m);
   if (0 != GNUNET_CONTAINER_meta_data_iterate (m, NULL, NULL))
     ABORT (m);
   for (j = 0; j < i; j++)
-    {
-      GNUNET_snprintf (val, sizeof (val), "%s.%d",
-                      "A teststring that should compress well.", j);
-      if (GNUNET_OK !=
-         GNUNET_CONTAINER_meta_data_insert (m, "<test>",
-                                            EXTRACTOR_METATYPE_UNKNOWN,
-                                            EXTRACTOR_METAFORMAT_UTF8,
-                                            "text/plain", val,
-                                            strlen (val) + 1))
-       ABORT (m);
-    }
+  {
+    GNUNET_snprintf (val, sizeof (val), "%s.%d",
+                     "A teststring that should compress well.", j);
+    if (GNUNET_OK !=
+        GNUNET_CONTAINER_meta_data_insert (m, "<test>",
+                                           EXTRACTOR_METATYPE_UNKNOWN,
+                                           EXTRACTOR_METAFORMAT_UTF8,
+                                           "text/plain", val, strlen (val) + 1))
+      ABORT (m);
+  }
   if (i != GNUNET_CONTAINER_meta_data_iterate (m, NULL, NULL))
     ABORT (m);
 
@@ -97,27 +94,27 @@ testMeta (int i)
   sval = NULL;
   if (size !=
       GNUNET_CONTAINER_meta_data_serialize (m, &sval, size,
-                                           GNUNET_CONTAINER_META_DATA_SERIALIZE_FULL))
-    {
-      GNUNET_free_non_null (sval);
-      ABORT (m);
-    }
+                                            GNUNET_CONTAINER_META_DATA_SERIALIZE_FULL))
+  {
+    GNUNET_free_non_null (sval);
+    ABORT (m);
+  }
   GNUNET_CONTAINER_meta_data_destroy (m);
   m = GNUNET_CONTAINER_meta_data_deserialize (sval, size);
   GNUNET_free (sval);
   if (m == NULL)
     ABORT (m);
   for (j = 0; j < i; j++)
+  {
+    GNUNET_snprintf (val, sizeof (val), "%s.%d",
+                     "A teststring that should compress well.", j);
+    if (GNUNET_OK !=
+        GNUNET_CONTAINER_meta_data_delete (m, EXTRACTOR_METATYPE_UNKNOWN, val,
+                                           strlen (val) + 1))
     {
-      GNUNET_snprintf (val, sizeof (val), "%s.%d",
-                      "A teststring that should compress well.", j);
-      if (GNUNET_OK !=
-         GNUNET_CONTAINER_meta_data_delete (m, EXTRACTOR_METATYPE_UNKNOWN,
-                                            val, strlen (val) + 1))
-       {
-         ABORT (m);
-       }
+      ABORT (m);
     }
+  }
   if (0 != GNUNET_CONTAINER_meta_data_iterate (m, NULL, NULL))
     ABORT (m);
   GNUNET_CONTAINER_meta_data_destroy (m);
@@ -135,22 +132,22 @@ testMetaMore (int i)
 
   meta = 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>",
-                                        q % EXTRACTOR_metatype_get_max (),
-                                        EXTRACTOR_METAFORMAT_UTF8,
-                                        "text/plain", txt, strlen (txt) + 1);
-    }
+  {
+    GNUNET_snprintf (txt, 128, "%u -- %u\n", i, q);
+    GNUNET_CONTAINER_meta_data_insert (meta, "<test>",
+                                       q % EXTRACTOR_metatype_get_max (),
+                                       EXTRACTOR_METAFORMAT_UTF8, "text/plain",
+                                       txt, strlen (txt) + 1);
+  }
   size = GNUNET_CONTAINER_meta_data_get_serialized_size (meta);
   data = GNUNET_malloc (size * 4);
   if (size !=
       GNUNET_CONTAINER_meta_data_serialize (meta, &data, size * 4,
-                                           GNUNET_CONTAINER_META_DATA_SERIALIZE_FULL))
-    {
-      GNUNET_free (data);
-      ABORT (meta);
-    }
+                                            GNUNET_CONTAINER_META_DATA_SERIALIZE_FULL))
+  {
+    GNUNET_free (data);
+    ABORT (meta);
+  }
   GNUNET_CONTAINER_meta_data_destroy (meta);
   GNUNET_free (data);
   return 0;
@@ -166,22 +163,22 @@ testMetaLink ()
   m = GNUNET_CONTAINER_meta_data_create ();
   if (GNUNET_OK !=
       GNUNET_CONTAINER_meta_data_insert (m, "<test>",
-                                        EXTRACTOR_METATYPE_UNKNOWN,
-                                        EXTRACTOR_METAFORMAT_UTF8,
-                                        "text/plain", "link",
-                                        strlen ("link") + 1))
+                                         EXTRACTOR_METATYPE_UNKNOWN,
+                                         EXTRACTOR_METAFORMAT_UTF8,
+                                         "text/plain", "link",
+                                         strlen ("link") + 1))
     ABORT (m);
   if (GNUNET_OK !=
       GNUNET_CONTAINER_meta_data_insert (m, "<test>",
-                                        EXTRACTOR_METATYPE_FILENAME,
-                                        EXTRACTOR_METAFORMAT_UTF8,
-                                        "text/plain", "lib-link.m4",
-                                        strlen ("lib-link.m4") + 1))
+                                         EXTRACTOR_METATYPE_FILENAME,
+                                         EXTRACTOR_METAFORMAT_UTF8,
+                                         "text/plain", "lib-link.m4",
+                                         strlen ("lib-link.m4") + 1))
     ABORT (m);
   val = NULL;
   size =
-    GNUNET_CONTAINER_meta_data_serialize (m, &val, (size_t) - 1,
-                                         GNUNET_CONTAINER_META_DATA_SERIALIZE_FULL);
+      GNUNET_CONTAINER_meta_data_serialize (m, &val, (size_t) - 1,
+                                            GNUNET_CONTAINER_META_DATA_SERIALIZE_FULL);
   GNUNET_CONTAINER_meta_data_destroy (m);
   m = GNUNET_CONTAINER_meta_data_deserialize (val, size);
   GNUNET_free (val);
@@ -205,46 +202,44 @@ check ()
   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);
-    }
+  {
+    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);
-    }
+  {
+    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);
-    }
+  {
+    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);
-    }
+  {
+    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);
-    }
+  {
+    GNUNET_CONTAINER_meta_data_destroy (meta2);
+    ABORT (meta);
+  }
 
   // check meta_data_add_publication_date
   GNUNET_CONTAINER_meta_data_add_publication_date (meta2);
@@ -253,74 +248,74 @@ check ()
   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);
-    }
+  {
+    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);
-    }
+                                               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_CONTAINER_meta_data_get_by_type (meta, EXTRACTOR_METATYPE_UNKNOWN);
   GNUNET_assert (NULL != str);
   if (str[0] != 'T')
-    {
-      GNUNET_CONTAINER_meta_data_destroy (meta2);
-      GNUNET_free (str);
-      ABORT (meta);
-    }
+  {
+    GNUNET_CONTAINER_meta_data_destroy (meta2);
+    GNUNET_free (str);
+    ABORT (meta);
+  }
   GNUNET_free (str);
 
   // 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);
-    }
+                                               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_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_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_destroy (meta2);
+    ABORT (meta);
+  }
   GNUNET_CONTAINER_meta_data_destroy (meta2);
   //check meta_data_duplicate
   meta2 = GNUNET_CONTAINER_meta_data_duplicate (meta);
   if (200 == GNUNET_CONTAINER_meta_data_iterate (meta2, NULL, NULL))
-    {
-      GNUNET_CONTAINER_meta_data_destroy (meta2);
-      ABORT (meta);
-    }
+  {
+    GNUNET_CONTAINER_meta_data_destroy (meta2);
+    ABORT (meta);
+  }
   GNUNET_CONTAINER_meta_data_destroy (meta2);
   GNUNET_CONTAINER_meta_data_destroy (meta);
   return 0;
@@ -350,4 +345,16 @@ main (int argc, char *argv[])
   return 0;
 }
 
+#else
+
+int
+main (int argc, char *argv[])
+{
+  fprintf (stderr,
+           "GNU libextractor not found, skipping test.\n");
+  return 0;
+}
+
+#endif
+
 /* end of test_container_meta_data.c */