Fix: sessiond: ODR violation results in memory corruption
[lttng-tools.git] / tests / unit / test_utils_parse_time_suffix.cpp
CommitLineData
7010c033 1/*
21cf9b6b 2 * Copyright (C) 2015 EfficiOS Inc.
7010c033 3 *
9d16b343 4 * SPDX-License-Identifier: GPL-2.0-only
7010c033 5 *
7010c033
SM
6 */
7
7010c033
SM
8#include <string.h>
9#include <stdio.h>
81684730 10#include <inttypes.h>
7010c033
SM
11
12#include <tap/tap.h>
13
c9e313bc 14#include <common/utils.hpp>
7010c033
SM
15
16/* For error.h */
17int lttng_opt_quiet = 1;
18int lttng_opt_verbose = 3;
19int lttng_opt_mi;
20
f1494934 21namespace {
7010c033 22struct valid_test_input {
b53d4e59 23 const char *input;
7010c033
SM
24 uint64_t expected_result;
25};
26
27/* Valid test cases */
f1494934 28struct valid_test_input valid_tests_inputs[] = {
7010c033
SM
29 { "0", 0 },
30 { "1234", 1234 },
81684730
JR
31 { "1234us", 1234 },
32 { "16ms", 16000 },
33 { "128ms", 128000 },
7010c033 34 { "32s", 32000000 },
81684730
JR
35 { "1m", 60000000 },
36 { "20m", 1200000000 },
37 { "1h", 3600000000 },
38 { "5h", 18000000000 },
7010c033 39 { "00", 0 },
81684730
JR
40 { "0us", 0 },
41 { "0ms", 0 },
7010c033 42 { "0s", 0 },
81684730
JR
43 { "0m", 0 },
44 { "0h", 0 },
45 { "00us", 0 },
46 { "00ms", 0 },
7010c033 47 { "00s", 0 },
81684730
JR
48 { "00m", 0 },
49 { "00h", 0 },
7010c033
SM
50 { "12ms", 12000 },
51 { "3597us", 3597 },
52 { "+5", 5 },
53 { "08", 8 },
54 { "0145us", 145 },
55};
f1494934 56const int num_valid_tests = sizeof(valid_tests_inputs) / sizeof(valid_tests_inputs[0]);
7010c033
SM
57
58/* Invalid test cases */
f1494934 59const char *invalid_tests_inputs[] = {
7010c033
SM
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",
81684730
JR
82 "0u",
83 "5mS",
84 "5Ms",
85 "12ussr",
86 "67msrp",
87 "14si",
88 "12mo",
89 "53hi",
7010c033 90};
f1494934
JG
91const int num_invalid_tests = sizeof(invalid_tests_inputs) / sizeof(invalid_tests_inputs[0]);
92} /* namespace */
7010c033
SM
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++) {
81684730 102 char name[256];
7010c033
SM
103
104 ret = utils_parse_time_suffix(valid_tests_inputs[i].input, &result);
81684730 105 sprintf(name, "valid test case: %s expected %" PRIu64, valid_tests_inputs[i].input, result);
9f4a25d3 106 ok(ret == 0 && result == valid_tests_inputs[i].expected_result, "%s", name);
7010c033
SM
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);
9f4a25d3 116 ok(ret != 0, "%s", name);
7010c033
SM
117 }
118}
119
f46376a1 120int main(void)
7010c033
SM
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.040959 seconds and 4 git commands to generate.