Fix: sessiond: ODR violation results in memory corruption
[lttng-tools.git] / tests / unit / test_utils_parse_time_suffix.cpp
... / ...
CommitLineData
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 */
17int lttng_opt_quiet = 1;
18int lttng_opt_verbose = 3;
19int lttng_opt_mi;
20
21namespace {
22struct valid_test_input {
23 const char *input;
24 uint64_t expected_result;
25};
26
27/* Valid test cases */
28struct 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};
56const int num_valid_tests = sizeof(valid_tests_inputs) / sizeof(valid_tests_inputs[0]);
57
58/* Invalid test cases */
59const 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};
91const int num_invalid_tests = sizeof(invalid_tests_inputs) / sizeof(invalid_tests_inputs[0]);
92} /* namespace */
93
94static 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
120int 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.023148 seconds and 4 git commands to generate.