test_strings_to_data.c 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /*
  2. This file is part of GNUnet.
  3. Copyright (C) 2009 GNUnet e.V.
  4. GNUnet is free software: you can redistribute it and/or modify it
  5. under the terms of the GNU Affero General Public License as published
  6. by the Free Software Foundation, either version 3 of the License,
  7. or (at your option) any later version.
  8. GNUnet is distributed in the hope that it will be useful, but
  9. WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  11. Affero General Public License for more details.
  12. You should have received a copy of the GNU Affero General Public License
  13. along with this program. If not, see <http://www.gnu.org/licenses/>.
  14. SPDX-License-Identifier: AGPL3.0-or-later
  15. */
  16. /**
  17. * @file util/test_strings_to_data.c
  18. * @brief testcase for strings.c
  19. */
  20. #include "platform.h"
  21. #include "gnunet_util_lib.h"
  22. int
  23. main (int argc, char *argv[])
  24. {
  25. char buf[1024];
  26. char *end;
  27. char src[128];
  28. char dst[128];
  29. unsigned int i;
  30. int ret = 0;
  31. GNUNET_log_setup ("util", "DEBUG", NULL);
  32. for (i = 0; i < sizeof(src); i++)
  33. {
  34. memset (src, i, sizeof(src));
  35. memset (dst, i + 1, sizeof(dst));
  36. end = GNUNET_STRINGS_data_to_string (&src, i, buf, sizeof(buf));
  37. GNUNET_assert (NULL != end);
  38. end[0] = '\0';
  39. if (GNUNET_OK !=
  40. GNUNET_STRINGS_string_to_data (buf, strlen (buf), dst, i))
  41. {
  42. fprintf (stderr, "%u failed decode (%u bytes)\n", i, (unsigned
  43. int) strlen (buf));
  44. ret = 1;
  45. }
  46. else if (0 != memcmp (src, dst, i))
  47. {
  48. fprintf (stderr, "%u wrong decode (%u bytes)\n", i, (unsigned
  49. int) strlen (buf));
  50. ret = 1;
  51. }
  52. }
  53. return ret;
  54. }
  55. /* end of test_strings_to_data.c */