1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-29 22:36:38 +02:00

core: convert "long long" to "unsigned long long" in functions util_get_microseconds_string and util_parse_delay

This commit is contained in:
Sébastien Helleu
2025-03-16 11:13:25 +01:00
parent e8a335a3e3
commit 9fe5fa23a0
8 changed files with 118 additions and 89 deletions
+63 -51
View File
@@ -25,6 +25,7 @@
extern "C"
{
#include <limits.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
@@ -42,6 +43,13 @@ extern "C"
LONGS_EQUAL(__sec, tv.tv_sec); \
LONGS_EQUAL(__usec, tv.tv_usec);
#define WEE_PARSE_DELAY(__result, __result_delay, \
__delay, __factor) \
delay = ULLONG_MAX; \
LONGS_EQUAL(__result, \
util_parse_delay (__delay, __factor, &delay)); \
CHECK(delay == __result_delay);
TEST_GROUP(CoreUtil)
{
};
@@ -108,30 +116,30 @@ TEST(CoreUtil, GetMicrosecondsString)
/* zero */
WEE_TEST_STR("0:00:00.000000",
util_get_microseconds_string (0LL));
util_get_microseconds_string (0ULL));
/* microseconds */
WEE_TEST_STR("0:00:00.000001", util_get_microseconds_string (1LL));
WEE_TEST_STR("0:00:00.000123", util_get_microseconds_string (123LL));
WEE_TEST_STR("0:00:00.000001", util_get_microseconds_string (1ULL));
WEE_TEST_STR("0:00:00.000123", util_get_microseconds_string (123ULL));
/* microseconds */
WEE_TEST_STR("0:00:00.001000", util_get_microseconds_string (1LL * 1000LL));
WEE_TEST_STR("0:00:00.123000", util_get_microseconds_string (123LL * 1000LL));
WEE_TEST_STR("0:00:00.001000", util_get_microseconds_string (1ULL * 1000ULL));
WEE_TEST_STR("0:00:00.123000", util_get_microseconds_string (123ULL * 1000ULL));
/* seconds */
WEE_TEST_STR("0:00:01.000000", util_get_microseconds_string (1LL * 1000LL * 1000LL));
WEE_TEST_STR("0:00:12.000000", util_get_microseconds_string (12LL * 1000LL * 1000LL));
WEE_TEST_STR("0:00:01.000000", util_get_microseconds_string (1ULL * 1000ULL * 1000ULL));
WEE_TEST_STR("0:00:12.000000", util_get_microseconds_string (12ULL * 1000ULL * 1000ULL));
/* minutes */
WEE_TEST_STR("0:01:00.000000", util_get_microseconds_string (1LL * 60LL * 1000LL * 1000LL));
WEE_TEST_STR("0:34:00.000000", util_get_microseconds_string (34LL * 60LL * 1000LL * 1000LL));
WEE_TEST_STR("0:01:00.000000", util_get_microseconds_string (1ULL * 60ULL * 1000ULL * 1000ULL));
WEE_TEST_STR("0:34:00.000000", util_get_microseconds_string (34ULL * 60ULL * 1000ULL * 1000ULL));
/* hours */
WEE_TEST_STR("1:00:00.000000", util_get_microseconds_string (1LL * 60LL * 60LL * 1000LL * 1000LL));
WEE_TEST_STR("34:00:00.000000", util_get_microseconds_string (34LL * 60LL * 60LL * 1000LL * 1000LL));
WEE_TEST_STR("1:00:00.000000", util_get_microseconds_string (1ULL * 60ULL * 60ULL * 1000ULL * 1000ULL));
WEE_TEST_STR("34:00:00.000000", util_get_microseconds_string (34ULL * 60ULL * 60ULL * 1000ULL * 1000ULL));
/* hours + minutes + seconds + milliseconds + microseconds */
WEE_TEST_STR("3:25:45.678901", util_get_microseconds_string (12345678901LL));
WEE_TEST_STR("3:25:45.678901", util_get_microseconds_string (12345678901ULL));
}
/*
@@ -425,60 +433,64 @@ TEST(CoreUtil, GetTimeDiff)
TEST(CoreUtil, ParseDelay)
{
unsigned long long delay;
/* error: no delay */
LONGS_EQUAL(0, util_parse_delay ("123", 1ULL, NULL));
/* error: no string */
LONGS_EQUAL(-1LL, util_parse_delay (NULL, -1LL));
LONGS_EQUAL(-1LL, util_parse_delay (NULL, 0LL));
LONGS_EQUAL(-1LL, util_parse_delay (NULL, 1LL));
LONGS_EQUAL(-1LL, util_parse_delay ("", -1LL));
LONGS_EQUAL(-1LL, util_parse_delay ("", 0LL));
LONGS_EQUAL(-1LL, util_parse_delay ("", 1LL));
WEE_PARSE_DELAY(0, 0ULL, NULL, 0ULL);
WEE_PARSE_DELAY(0, 0ULL, NULL, 1ULL);
WEE_PARSE_DELAY(0, 0ULL, "", 0ULL);
WEE_PARSE_DELAY(0, 0ULL, "", 1ULL);
/* error: bad default_factor */
LONGS_EQUAL(-1LL, util_parse_delay ("abcd", -1LL));
LONGS_EQUAL(-1LL, util_parse_delay ("abcd", 0LL));
LONGS_EQUAL(-1LL, util_parse_delay ("123", -1LL));
LONGS_EQUAL(-1LL, util_parse_delay ("123", 0LL));
WEE_PARSE_DELAY(0, 0ULL, "abcd", 0ULL);
WEE_PARSE_DELAY(0, 0ULL, "123", 0ULL);
/* error: bad unit */
LONGS_EQUAL(-1LL, util_parse_delay ("123a", 1LL));
LONGS_EQUAL(-1LL, util_parse_delay ("123ss", 1LL));
LONGS_EQUAL(-1LL, util_parse_delay ("123mss", 1LL));
LONGS_EQUAL(-1LL, util_parse_delay ("123uss", 1LL));
WEE_PARSE_DELAY(0, 0ULL, "123a", 1ULL);
WEE_PARSE_DELAY(0, 0ULL, "123ss", 1ULL);
WEE_PARSE_DELAY(0, 0ULL, "123mss", 1ULL);
WEE_PARSE_DELAY(0, 0ULL, "123uss", 1ULL);
/* error: bad number */
LONGS_EQUAL(-1LL, util_parse_delay ("abcd", 1LL));
WEE_PARSE_DELAY(0, 0ULL, "abcd", 1LL);
/* error: bad delay */
WEE_PARSE_DELAY(0, 0ULL, "-123", 1LL);
/* tests with delay == 0 */
LONGS_EQUAL(0LL, util_parse_delay ("0", 1LL));
LONGS_EQUAL(0LL, util_parse_delay ("0us", 1LL));
LONGS_EQUAL(0LL, util_parse_delay ("0ms", 1LL));
LONGS_EQUAL(0LL, util_parse_delay ("0s", 1LL));
LONGS_EQUAL(0LL, util_parse_delay ("0m", 1LL));
LONGS_EQUAL(0LL, util_parse_delay ("0h", 1LL));
WEE_PARSE_DELAY(1, 0ULL, "0", 1ULL);
WEE_PARSE_DELAY(1, 0ULL, "0us", 1ULL);
WEE_PARSE_DELAY(1, 0ULL, "0ms", 1ULL);
WEE_PARSE_DELAY(1, 0ULL, "0s", 1ULL);
WEE_PARSE_DELAY(1, 0ULL, "0m", 1ULL);
WEE_PARSE_DELAY(1, 0ULL, "0h", 1ULL);
/* tests with delay == 123, default_factor = 1 (1 microsecond) */
LONGS_EQUAL(123LL, util_parse_delay ("123", 1LL));
LONGS_EQUAL(123LL, util_parse_delay ("123us", 1LL));
LONGS_EQUAL(123LL * 1000LL, util_parse_delay ("123ms", 1LL));
LONGS_EQUAL(123LL * 1000LL * 1000LL, util_parse_delay ("123s", 1LL));
LONGS_EQUAL(123LL * 1000LL * 1000LL * 60LL, util_parse_delay ("123m", 1LL));
LONGS_EQUAL(123LL * 1000LL * 1000LL * 60LL * 60LL, util_parse_delay ("123h", 1LL));
WEE_PARSE_DELAY(1, 123ULL, "123", 1ULL);
WEE_PARSE_DELAY(1, 123ULL, "123us", 1ULL);
WEE_PARSE_DELAY(1, 123ULL * 1000ULL, "123ms", 1ULL);
WEE_PARSE_DELAY(1, 123ULL * 1000ULL * 1000ULL, "123s", 1ULL);
WEE_PARSE_DELAY(1, 123ULL * 1000ULL * 1000ULL * 60ULL, "123m", 1ULL);
WEE_PARSE_DELAY(1, 123ULL * 1000ULL * 1000ULL * 60ULL * 60ULL, "123h", 1ULL);
/* tests with delay == 123, default_factor = 1000 (1 millisecond) */
LONGS_EQUAL(123LL * 1000LL, util_parse_delay ("123", 1000LL));
LONGS_EQUAL(123LL, util_parse_delay ("123us", 1000LL));
LONGS_EQUAL(123LL * 1000LL, util_parse_delay ("123ms", 1000LL));
LONGS_EQUAL(123LL * 1000LL * 1000LL, util_parse_delay ("123s", 1000LL));
LONGS_EQUAL(123LL * 1000LL * 1000LL * 60LL, util_parse_delay ("123m", 1000LL));
LONGS_EQUAL(123LL * 1000LL * 1000LL * 60LL * 60LL, util_parse_delay ("123h", 1000LL));
WEE_PARSE_DELAY(1, 123ULL * 1000ULL, "123", 1000ULL);
WEE_PARSE_DELAY(1, 123ULL, "123us", 1000ULL);
WEE_PARSE_DELAY(1, 123ULL * 1000ULL, "123ms", 1000ULL);
WEE_PARSE_DELAY(1, 123ULL * 1000ULL * 1000ULL, "123s", 1000ULL);
WEE_PARSE_DELAY(1, 123ULL * 1000ULL * 1000ULL * 60ULL, "123m", 1000ULL);
WEE_PARSE_DELAY(1, 123ULL * 1000ULL * 1000ULL * 60ULL * 60ULL, "123h", 1000ULL);
/* tests with delay == 123, default_factor = 1000000 (1 second) */
LONGS_EQUAL(123LL * 1000LL * 1000LL, util_parse_delay ("123", 1000000LL));
LONGS_EQUAL(123LL, util_parse_delay ("123us", 1000000LL));
LONGS_EQUAL(123LL * 1000LL, util_parse_delay ("123ms", 1000000LL));
LONGS_EQUAL(123LL * 1000LL * 1000LL, util_parse_delay ("123s", 1000000LL));
LONGS_EQUAL(123LL * 1000LL * 1000LL * 60LL, util_parse_delay ("123m", 1000000LL));
LONGS_EQUAL(123LL * 1000LL * 1000LL * 60LL * 60LL, util_parse_delay ("123h", 1000000LL));
WEE_PARSE_DELAY(1, 123ULL * 1000ULL * 1000ULL, "123", 1000000ULL);
WEE_PARSE_DELAY(1, 123ULL, "123us", 1000000ULL);
WEE_PARSE_DELAY(1, 123ULL * 1000ULL, "123ms", 1000000ULL);
WEE_PARSE_DELAY(1, 123ULL * 1000ULL * 1000ULL, "123s", 1000000ULL);
WEE_PARSE_DELAY(1, 123ULL * 1000ULL * 1000ULL * 60ULL, "123m", 1000000ULL);
WEE_PARSE_DELAY(1, 123ULL * 1000ULL * 1000ULL * 60ULL * 60ULL, "123h", 1000000ULL);
}
/*