Skip to content

Commit 06283f7

Browse files
committed
Remove vector from testcase struct
1 parent e7cfb9a commit 06283f7

File tree

1 file changed

+47
-74
lines changed

1 file changed

+47
-74
lines changed

api/test/trace/propagation/detail/string_test.cc

+47-74
Original file line numberDiff line numberDiff line change
@@ -8,84 +8,57 @@
88
#include "opentelemetry/nostd/string_view.h"
99

1010
using namespace opentelemetry;
11-
//
12-
// struct SplitStringTestData
13-
//{
14-
// opentelemetry::nostd::string_view input;
15-
// char separator;
16-
// size_t max_count;
17-
// std::vector<opentelemetry::nostd::string_view> splits;
18-
// size_t expected_number_strings;
19-
// };
20-
//
21-
// const SplitStringTestData split_string_test_cases[] = {
22-
// {"foo,bar,baz", ',', 4, std::vector<opentelemetry::nostd::string_view>{"foo", "bar", "baz"},
23-
// 3},
24-
// {"foo,bar,baz,foobar", ',', 4,
25-
// std::vector<opentelemetry::nostd::string_view>{"foo", "bar", "baz", "foobar"}, 4},
26-
// {"foo,bar,baz,foobar", '.', 4,
27-
// std::vector<opentelemetry::nostd::string_view>{"foo,bar,baz,foobar"}, 1},
28-
// {"foo,bar,baz,", ',', 4,
29-
// std::vector<opentelemetry::nostd::string_view>{"foo", "bar", "baz", ""}, 4},
30-
// {"foo,bar,baz,", ',', 2, std::vector<opentelemetry::nostd::string_view>{"foo", "bar"}, 2},
31-
// {"foo ,bar, baz ", ',', 4,
32-
// std::vector<opentelemetry::nostd::string_view>{"foo ", "bar", " baz "}, 3},
33-
// {"foo ,bar, baz ", ',', 4,
34-
// std::vector<opentelemetry::nostd::string_view>{"foo ", "bar", " baz "}, 3},
35-
// {"00-0af7651916cd43dd8448eb211c80319c-00f067aa0ba902b7-01", '-', 4,
36-
// std::vector<opentelemetry::nostd::string_view>{"00", "0af7651916cd43dd8448eb211c80319c",
37-
// "00f067aa0ba902b7", "01"},
38-
// 4},
39-
// };
4011

41-
TEST(StringTest, SplitStringTest)
12+
namespace
4213
{
43-
struct
44-
{
45-
opentelemetry::nostd::string_view input;
46-
char separator;
47-
size_t max_count;
48-
std::vector<opentelemetry::nostd::string_view> splits;
49-
size_t expected_number_strings;
50-
} test_cases[] = {
51-
{"foo,bar,baz", ',', 4, std::vector<opentelemetry::nostd::string_view>{"foo", "bar", "baz"},
52-
3},
53-
// {"foo,bar,baz,foobar", ',', 4,
54-
// std::vector<opentelemetry::nostd::string_view>{"foo", "bar", "baz", "foobar"}, 4},
55-
// {"foo,bar,baz,foobar", '.', 4,
56-
// std::vector<opentelemetry::nostd::string_view>{"foo,bar,baz,foobar"}, 1},
57-
// {"foo,bar,baz,", ',', 4,
58-
// std::vector<opentelemetry::nostd::string_view>{"foo", "bar", "baz", ""}, 4},
59-
// {"foo,bar,baz,", ',', 2, std::vector<opentelemetry::nostd::string_view>{"foo", "bar"}, 2},
60-
// {"foo ,bar, baz ", ',', 4,
61-
// std::vector<opentelemetry::nostd::string_view>{"foo ", "bar", " baz "}, 3},
62-
// {"foo ,bar, baz ", ',', 4,
63-
// std::vector<opentelemetry::nostd::string_view>{"foo ", "bar", " baz "}, 3},
64-
// {"00-0af7651916cd43dd8448eb211c80319c-00f067aa0ba902b7-01", '-', 4,
65-
// std::vector<opentelemetry::nostd::string_view>{"00", "0af7651916cd43dd8448eb211c80319c",
66-
// "00f067aa0ba902b7", "01"},4}
67-
};
68-
for (auto &test_param : test_cases)
69-
{
70-
std::vector<opentelemetry::nostd::string_view> fields{};
71-
fields.reserve(test_param.expected_number_strings);
72-
size_t got_splits_num = opentelemetry::trace::propagation::detail::SplitString(
73-
test_param.input, test_param.separator, fields.data(), test_param.max_count);
7414

75-
// Assert on the output
76-
EXPECT_EQ(got_splits_num, test_param.expected_number_strings);
77-
for (size_t i = 0; i < got_splits_num; i++)
78-
{
79-
// Checks for resulting strings in-order
80-
EXPECT_EQ(fields[i], test_param.splits[i]);
81-
}
15+
struct SplitStringTestData
16+
{
17+
opentelemetry::nostd::string_view input;
18+
char separator;
19+
size_t max_count;
20+
size_t expected_number_strings;
21+
22+
// When googletest registers parameterized tests, it uses this method to format the parameters.
23+
// The default implementation prints hex dump of all bytes in the object. If there is any padding
24+
// in these bytes, valgrind reports this as a warning - "Use of uninitialized bytes".
25+
// See https://github.com/google/googletest/issues/3805.
26+
friend void PrintTo(const SplitStringTestData &data, std::ostream *os)
27+
{
28+
std::stringstream ss;
29+
*os << "(" << data.input << "," << data.separator << "," << data.max_count << ","
30+
<< data.expected_number_strings << ")";
8231
}
83-
}
32+
};
33+
34+
const SplitStringTestData split_string_test_cases[] = {
35+
{"foo,bar,baz", ',', 4, 3},
36+
{"foo,bar,baz,foobar", ',', 4, 4},
37+
{"foo,bar,baz,foobar", '.', 4, 1},
38+
{"foo,bar,baz,", ',', 4, 4},
39+
{"foo,bar,baz,", ',', 2, 2},
40+
{"foo ,bar, baz ", ',', 4, 3},
41+
{"foo ,bar, baz ", ',', 4, 3},
42+
{"00-0af7651916cd43dd8448eb211c80319c-00f067aa0ba902b7-01", '-', 4, 4},
43+
};
44+
} // namespace
45+
46+
// Test fixture
47+
class SplitStringTestFixture : public ::testing::TestWithParam<SplitStringTestData>
48+
{};
8449

85-
TEST(StringTest, SimpleTest)
50+
TEST_P(SplitStringTestFixture, SplitsAsExpected)
8651
{
87-
nostd::string_view input = "foo,bar,baz";
88-
std::array<nostd::string_view, 4> fields{};
89-
size_t got_splits = ::trace::propagation::detail::SplitString(input, ',', fields.data(), 4);
90-
EXPECT_EQ(3, got_splits);
52+
const SplitStringTestData test_param = GetParam();
53+
std::vector<opentelemetry::nostd::string_view> fields{};
54+
fields.reserve(test_param.expected_number_strings);
55+
size_t got_splits_num = opentelemetry::trace::propagation::detail::SplitString(
56+
test_param.input, test_param.separator, fields.data(), test_param.max_count);
57+
58+
// Assert on the output
59+
EXPECT_EQ(got_splits_num, test_param.expected_number_strings);
9160
}
61+
62+
INSTANTIATE_TEST_SUITE_P(SplitStringTestCases,
63+
SplitStringTestFixture,
64+
::testing::ValuesIn(split_string_test_cases));

0 commit comments

Comments
 (0)