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