1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
/*
* SPDX-FileCopyrightText: 2015 EfficiOS Inc.
*
* SPDX-License-Identifier: GPL-2.0-only
*
*/
#include <common/utils.hpp>
#include <inttypes.h>
#include <stdio.h>
#include <string.h>
#include <tap/tap.h>
/* For error.h */
int lttng_opt_quiet = 1;
int lttng_opt_verbose = 3;
int lttng_opt_mi;
namespace {
struct valid_test_input {
const char *input;
uint64_t expected_result;
};
/* Valid test cases */
struct valid_test_input valid_tests_inputs[] = {
{ "0", 0 }, { "1234", 1234 }, { "1234us", 1234 }, { "16ms", 16000 },
{ "128ms", 128000 }, { "32s", 32000000 }, { "1m", 60000000 }, { "20m", 1200000000 },
{ "1h", 3600000000 }, { "5h", 18000000000 }, { "00", 0 }, { "0us", 0 },
{ "0ms", 0 }, { "0s", 0 }, { "0m", 0 }, { "0h", 0 },
{ "00us", 0 }, { "00ms", 0 }, { "00s", 0 }, { "00m", 0 },
{ "00h", 0 }, { "12ms", 12000 }, { "3597us", 3597 }, { "+5", 5 },
{ "08", 8 }, { "0145us", 145 },
};
const int num_valid_tests = sizeof(valid_tests_inputs) / sizeof(valid_tests_inputs[0]);
/* Invalid test cases */
const char *invalid_tests_inputs[] = {
"",
" ",
"-1",
"m",
"4611686018427387904s",
"0x40M",
"0x",
"x0",
"0xx0",
"07mm",
"0xm",
"0Xs",
"0x0ss",
"0a",
"0B",
"0x3 s",
"0xbs ",
"14ns",
"0xbs",
"14ns",
"14ms garbage after value",
"0x14s",
"0u",
"5mS",
"5Ms",
"12ussr",
"67msrp",
"14si",
"12mo",
"53hi",
};
const int num_invalid_tests = sizeof(invalid_tests_inputs) / sizeof(invalid_tests_inputs[0]);
} /* namespace */
static void test_utils_parse_time_suffix()
{
uint64_t result;
int ret;
int i;
/* Test valid cases */
for (i = 0; i < num_valid_tests; i++) {
char name[256];
ret = utils_parse_time_suffix(valid_tests_inputs[i].input, &result);
sprintf(name,
"valid test case: %s expected %" PRIu64,
valid_tests_inputs[i].input,
result);
ok(ret == 0 && result == valid_tests_inputs[i].expected_result, "%s", name);
}
/* Test invalid cases */
for (i = 0; i < num_invalid_tests; i++) {
char name[100];
sprintf(name, "invalid test case: %s", invalid_tests_inputs[i]);
ret = utils_parse_time_suffix(invalid_tests_inputs[i], &result);
ok(ret != 0, "%s", name);
}
}
int main()
{
plan_tests(num_valid_tests + num_invalid_tests);
diag("utils_parse_time_suffix tests");
test_utils_parse_time_suffix();
return exit_status();
}
|