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