123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- /*
- This file is part of GNUnet.
- Copyright (C) 2009 GNUnet e.V.
- GNUnet is free software: you can redistribute it and/or modify it
- under the terms of the GNU Affero General Public License as published
- by the Free Software Foundation, either version 3 of the License,
- 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
- Affero General Public License for more details.
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- SPDX-License-Identifier: AGPL3.0-or-later
- */
- /**
- * @file util/test_strings.c
- * @brief testcase for strings.c
- */
- #include "platform.h"
- #include "gnunet_util_lib.h"
- #define WANT(a, b) if (0 != strcmp (a, b)) { fprintf (stderr, \
- "Got `%s', wanted `%s'\n", \
- b, a); GNUNET_free (b); \
- GNUNET_break (0); \
- return 1; } else { GNUNET_free (b); \
- }
- #define WANTNF(a, b) do { if (0 != strcmp (a, b)) { fprintf (stderr, \
- "Got `%s', wanted `%s'\n", \
- b, a); \
- GNUNET_break (0); return 1; \
- } } while (0)
- #define WANTB(a, b, l) if (0 != memcmp (a, b, l)) { GNUNET_break (0); return 1; \
- } else { }
- int
- main (int argc, char *argv[])
- {
- char buf[128];
- char *r;
- char *b;
- const char *bc;
- struct GNUNET_TIME_Absolute at;
- struct GNUNET_TIME_Absolute atx;
- struct GNUNET_TIME_Relative rt;
- struct GNUNET_TIME_Relative rtx;
- const char *hdir;
- GNUNET_log_setup ("test_strings", "ERROR", NULL);
- sprintf (buf, "4 %s", _ (/* size unit */ "b"));
- b = GNUNET_STRINGS_byte_size_fancy (4);
- WANT (buf, b);
- sprintf (buf, "10 %s", _ (/* size unit */ "KiB"));
- b = GNUNET_STRINGS_byte_size_fancy (10240);
- WANT (buf, b);
- sprintf (buf, "10 %s", _ (/* size unit */ "TiB"));
- b = GNUNET_STRINGS_byte_size_fancy (10240LL * 1024LL * 1024LL * 1024LL);
- WANT (buf, b);
- sprintf (buf, "4 %s", _ (/* time unit */ "ms"));
- bc = GNUNET_STRINGS_relative_time_to_string (GNUNET_TIME_relative_multiply
- (GNUNET_TIME_UNIT_MILLISECONDS,
- 4), GNUNET_YES);
- WANTNF (buf, bc);
- sprintf (buf, "7 %s", _ (/* time unit */ "s"));
- bc = GNUNET_STRINGS_relative_time_to_string (GNUNET_TIME_relative_multiply
- (GNUNET_TIME_UNIT_MILLISECONDS,
- 7 * 1000), GNUNET_YES);
- WANTNF (buf, bc);
- sprintf (buf, "7 %s", _ (/* time unit */ "h"));
- bc = GNUNET_STRINGS_relative_time_to_string (GNUNET_TIME_relative_multiply
- (GNUNET_TIME_UNIT_MILLISECONDS,
- 7 * 60 * 60 * 1000),
- GNUNET_YES);
- WANTNF (buf, bc);
- hdir = getenv ("HOME");
- GNUNET_snprintf (buf, sizeof(buf), "%s%s", hdir, DIR_SEPARATOR_STR);
- b = GNUNET_STRINGS_filename_expand ("~");
- GNUNET_assert (b != NULL);
- WANT (buf, b);
- GNUNET_STRINGS_buffer_fill (buf, sizeof(buf), 3, "a", "btx", "c");
- WANTB ("a\0btx\0c", buf, 8);
- if (6 != GNUNET_STRINGS_buffer_tokenize (buf, sizeof(buf), 2, &r, &b))
- return 1;
- r = GNUNET_strdup (r);
- WANT ("a", r);
- b = GNUNET_strdup (b);
- WANT ("btx", b);
- if (0 != GNUNET_STRINGS_buffer_tokenize (buf, 2, 2, &r, &b))
- return 1;
- at.abs_value_us = 5000000;
- bc = GNUNET_STRINGS_absolute_time_to_string (at);
- /* bc should be something like "Wed Dec 31 17:00:05 1969"
- * where the details of the day and hour depend on the timezone;
- * however, the "0:05 19" should always be there; hence: */
- if (NULL == strstr (bc, "0:05 19"))
- {
- fprintf (stderr, "Got %s\n", bc);
- GNUNET_break (0);
- return 1;
- }
- b = GNUNET_STRINGS_to_utf8 ("TEST", 4, "ASCII");
- WANT ("TEST", b);
- at = GNUNET_TIME_UNIT_FOREVER_ABS;
- bc = GNUNET_STRINGS_absolute_time_to_string (at);
- GNUNET_assert (GNUNET_OK ==
- GNUNET_STRINGS_fancy_time_to_absolute (bc, &atx));
- GNUNET_assert (atx.abs_value_us == at.abs_value_us);
- at.abs_value_us = 50000000000;
- bc = GNUNET_STRINGS_absolute_time_to_string (at);
- GNUNET_assert (GNUNET_OK ==
- GNUNET_STRINGS_fancy_time_to_absolute (bc, &atx));
- if (atx.abs_value_us != at.abs_value_us)
- {
- GNUNET_assert (0);
- }
- GNUNET_log_skip (2, GNUNET_NO);
- b = GNUNET_STRINGS_to_utf8 ("TEST", 4, "unknown");
- GNUNET_log_skip (0, GNUNET_YES);
- WANT ("TEST", b);
- GNUNET_assert (GNUNET_OK ==
- GNUNET_STRINGS_fancy_time_to_relative ("15m", &rt));
- GNUNET_assert (GNUNET_OK ==
- GNUNET_STRINGS_fancy_time_to_relative ("15 m", &rtx));
- GNUNET_assert (rt.rel_value_us == rtx.rel_value_us);
- return 0;
- }
- /* end of test_strings.c */
|