Skip to content

Commit 3759a7c

Browse files
committed
Remove vector from testcase struct
1 parent 4f90c4f commit 3759a7c

File tree

1 file changed

+46
-74
lines changed

1 file changed

+46
-74
lines changed

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

Lines changed: 46 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -8,84 +8,56 @@
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 << "," << data.expected_number_strings << ")";
8230
}
83-
}
31+
};
32+
33+
const SplitStringTestData split_string_test_cases[] = {
34+
{"foo,bar,baz", ',', 4,3},
35+
{"foo,bar,baz,foobar", ',', 4, 4},
36+
{"foo,bar,baz,foobar", '.', 4, 1},
37+
{"foo,bar,baz,", ',', 4, 4},
38+
{"foo,bar,baz,", ',', 2, 2},
39+
{"foo ,bar, baz ", ',', 4, 3},
40+
{"foo ,bar, baz ", ',', 4, 3},
41+
{"00-0af7651916cd43dd8448eb211c80319c-00f067aa0ba902b7-01", '-', 4,4},
42+
};
43+
} // namespace
44+
45+
// Test fixture
46+
class SplitStringTestFixture : public ::testing::TestWithParam<SplitStringTestData>
47+
{};
8448

85-
TEST(StringTest, SimpleTest)
49+
TEST_P(SplitStringTestFixture, SplitsAsExpected)
8650
{
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);
51+
const SplitStringTestData test_param = GetParam();
52+
std::vector<opentelemetry::nostd::string_view> fields{};
53+
fields.reserve(test_param.expected_number_strings);
54+
size_t got_splits_num = opentelemetry::trace::propagation::detail::SplitString(
55+
test_param.input, test_param.separator, fields.data(), test_param.max_count);
56+
57+
// Assert on the output
58+
EXPECT_EQ(got_splits_num, test_param.expected_number_strings);
9159
}
60+
61+
INSTANTIATE_TEST_SUITE_P(SplitStringTestCases,
62+
SplitStringTestFixture,
63+
::testing::ValuesIn(split_string_test_cases));

0 commit comments

Comments
 (0)