⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 metatest.c

📁 GNUnet是一个安全的点对点网络框架
💻 C
字号:
/*     This file is part of GNUnet.     (C) 2003, 2004, 2006 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     by the Free Software Foundation; either version 2, or (at your     option) any later version.     GNUnet is distributed in the hope that it will be useful, but     WITHOUT ANY WARRANTY; without even the implied warranty of     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     General Public License for more details.     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.*//** * @file util/containers/metatest.c * @brief Test for meta.c * @author Christian Grothoff */#include "platform.h"#include <extractor.h>#include "gnunet_util.h"#define ABORT(m) { fprintf(stderr, "Error at %s:%d\n", __FILE__, __LINE__); if (m != NULL) GNUNET_meta_data_destroy(m); return 1; }static inttestMeta (int i){  struct GNUNET_MetaData *m;  char *val;  int j;  unsigned int size;  m = GNUNET_meta_data_create ();  if (GNUNET_OK != GNUNET_meta_data_insert (m, EXTRACTOR_TITLE, "TestTitle"))    ABORT (m);  if (GNUNET_OK != GNUNET_meta_data_insert (m, EXTRACTOR_AUTHOR, "TestTitle"))    ABORT (m);  if (GNUNET_OK == GNUNET_meta_data_insert (m, EXTRACTOR_TITLE, "TestTitle"))   /* dup! */    ABORT (m);  if (GNUNET_OK == GNUNET_meta_data_insert (m, EXTRACTOR_AUTHOR, "TestTitle"))  /* dup! */    ABORT (m);  if (2 != GNUNET_meta_data_get_contents (m, NULL, NULL))    ABORT (m);  if (GNUNET_OK != GNUNET_meta_data_delete (m, EXTRACTOR_AUTHOR, "TestTitle"))    ABORT (m);  if (GNUNET_OK == GNUNET_meta_data_delete (m, EXTRACTOR_AUTHOR, "TestTitle"))  /* already gone */    ABORT (m);  if (1 != GNUNET_meta_data_get_contents (m, NULL, NULL))    ABORT (m);  if (GNUNET_OK != GNUNET_meta_data_delete (m, EXTRACTOR_TITLE, "TestTitle"))    ABORT (m);  if (GNUNET_OK == GNUNET_meta_data_delete (m, EXTRACTOR_TITLE, "TestTitle"))   /* already gone */    ABORT (m);  if (0 != GNUNET_meta_data_get_contents (m, NULL, NULL))    ABORT (m);  val = GNUNET_malloc (256);  for (j = 0; j < i; j++)    {      GNUNET_snprintf (val, 256, "%s.%d",                       "A teststring that should compress well.", j);      if (GNUNET_OK != GNUNET_meta_data_insert (m, EXTRACTOR_UNKNOWN, val))        {          GNUNET_free (val);          ABORT (m);        }    }  GNUNET_free (val);  if (i != GNUNET_meta_data_get_contents (m, NULL, NULL))    ABORT (m);  size = GNUNET_meta_data_get_serialized_size (m, GNUNET_SERIALIZE_FULL);  val = GNUNET_malloc (size);  if (size != GNUNET_meta_data_serialize (NULL,                                          m, val, size,                                          GNUNET_SERIALIZE_FULL))    {      GNUNET_free (val);      ABORT (m);    }  GNUNET_meta_data_destroy (m);  m = GNUNET_meta_data_deserialize (NULL, val, size);  GNUNET_free (val);  if (m == NULL)    ABORT (m);  val = GNUNET_malloc (256);  for (j = 0; j < i; j++)    {      GNUNET_snprintf (val, 256, "%s.%d",                       "A teststring that should compress well.", j);      if (GNUNET_OK != GNUNET_meta_data_delete (m, EXTRACTOR_UNKNOWN, val))        {          GNUNET_free (val);          ABORT (m);        }    }  GNUNET_free (val);  if (0 != GNUNET_meta_data_get_contents (m, NULL, NULL))    {      ABORT (m);    }  GNUNET_meta_data_destroy (m);  return 0;}inttestMetaMore (int i){  struct GNUNET_MetaData *meta;  int q;  char txt[128];  char *data;  unsigned long long size;  meta = GNUNET_meta_data_create ();  for (q = 0; q <= i; q++)    {      GNUNET_snprintf (txt, 128, "%u -- %u\n", i, q);      GNUNET_meta_data_insert (meta,                               q %                               EXTRACTOR_getHighestKeywordTypeNumber (), txt);    }  size = GNUNET_meta_data_get_serialized_size (meta, GNUNET_SERIALIZE_FULL);  data = GNUNET_malloc (size * 4);  if (size != GNUNET_meta_data_serialize (NULL,                                          meta,                                          data, size * 4,                                          GNUNET_SERIALIZE_FULL))    {      GNUNET_free (data);      ABORT (meta);    }  GNUNET_meta_data_destroy (meta);  GNUNET_free (data);  return 0;}static inttestMetaLink (){  struct GNUNET_MetaData *m;  char *val;  unsigned int size;  m = GNUNET_meta_data_create ();  if (GNUNET_OK != GNUNET_meta_data_insert (m, EXTRACTOR_UNKNOWN, "link"))    ABORT (m);  if (GNUNET_OK !=      GNUNET_meta_data_insert (m, EXTRACTOR_FILENAME, "lib-link.m4"))    ABORT (m);  size = GNUNET_meta_data_get_serialized_size (m, GNUNET_SERIALIZE_FULL);  val = GNUNET_malloc (size);  if (size != GNUNET_meta_data_serialize (NULL,                                          m, val, size,                                          GNUNET_SERIALIZE_FULL))    {      GNUNET_free (val);      ABORT (m);    }  GNUNET_meta_data_destroy (m);  m = GNUNET_meta_data_deserialize (NULL, val, size);  GNUNET_free (val);  if (m == NULL)    ABORT (m);  GNUNET_meta_data_destroy (m);  return 0;}intmain (int argc, char *argv[]){  int failureCount = 0;  int i;  for (i = 0; i < 255; i++)    failureCount += testMeta (i);  for (i = 1; i < 255; i++)    failureCount += testMetaMore (i);  failureCount += testMetaLink ();  if (failureCount != 0)    return 1;  return 0;}/* end of metatest.c */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -