vscode: Add configurations to run the executables under the debugger
[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
28ab034a 8#include <common/utils.hpp>
7010c033 9
28ab034a
JG
10#include <inttypes.h>
11#include <stdio.h>
12#include <string.h>
7010c033
SM
13#include <tap/tap.h>
14
7010c033
SM
15/* For error.h */
16int lttng_opt_quiet = 1;
17int lttng_opt_verbose = 3;
18int lttng_opt_mi;
19
f1494934 20namespace {
7010c033 21struct valid_test_input {
b53d4e59 22 const char *input;
7010c033
SM
23 uint64_t expected_result;
24};
25
26/* Valid test cases */
f1494934 27struct valid_test_input valid_tests_inputs[] = {
28ab034a
JG
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 },
7010c033 35};
f1494934 36const int num_valid_tests = sizeof(valid_tests_inputs) / sizeof(valid_tests_inputs[0]);
7010c033
SM
37
38/* Invalid test cases */
f1494934 39const char *invalid_tests_inputs[] = {
28ab034a
JG
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",
7010c033 70};
f1494934
JG
71const int num_invalid_tests = sizeof(invalid_tests_inputs) / sizeof(invalid_tests_inputs[0]);
72} /* namespace */
7010c033 73
cd9adb8b 74static void test_utils_parse_time_suffix()
7010c033
SM
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++) {
81684730 82 char name[256];
7010c033
SM
83
84 ret = utils_parse_time_suffix(valid_tests_inputs[i].input, &result);
28ab034a
JG
85 sprintf(name,
86 "valid test case: %s expected %" PRIu64,
87 valid_tests_inputs[i].input,
88 result);
9f4a25d3 89 ok(ret == 0 && result == valid_tests_inputs[i].expected_result, "%s", name);
7010c033
SM
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);
9f4a25d3 99 ok(ret != 0, "%s", name);
7010c033
SM
100 }
101}
102
cd9adb8b 103int main()
7010c033
SM
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.051484 seconds and 4 git commands to generate.