Skip to content

Commit 7ac25e1

Browse files
committed
Simplify decode_tests
1 parent bd2cc87 commit 7ac25e1

File tree

1 file changed

+32
-35
lines changed

1 file changed

+32
-35
lines changed

test/test_decode.cpp

Lines changed: 32 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -72,81 +72,78 @@ auto decode_error(const std::string &what, std::size_t offset) {
7272
}
7373

7474
template<typename InType, typename Builder, typename Callable>
75-
auto decode_tests(Builder &_, Callable &&do_decode) {
76-
using OutType = fixture_type_t<decltype(_)>;
75+
auto decode_tests(Builder &_, Callable &&decode) {
7776
using boost::get;
7877
using std::get;
7978

80-
_.test("integer", [do_decode]() {
79+
using OutType = fixture_type_t<decltype(_)>;
80+
using Integer = typename OutType::integer;
81+
using String = typename OutType::string;
82+
using List = typename OutType::list;
83+
using Dict = typename OutType::dict;
84+
85+
_.test("integer", [decode]() {
8186
auto pos = make_data<InType>("i42e");
82-
auto pos_value = do_decode(pos);
83-
expect(get<typename OutType::integer>(pos_value), equal_to(42));
87+
auto pos_value = decode(pos);
88+
expect(get<Integer>(pos_value), equal_to(42));
8489

8590
auto neg = make_data<InType>("i-42e");
86-
auto neg_value = do_decode(neg);
87-
expect(get<typename OutType::integer>(neg_value), equal_to(-42));
91+
auto neg_value = decode(neg);
92+
expect(get<Integer>(neg_value), equal_to(-42));
8893
});
8994

90-
_.test("string", [do_decode]() {
95+
_.test("string", [decode]() {
9196
auto data = make_data<InType>("4:spam");
9297
// Silence GCC < 10.
9398
[[maybe_unused]] auto within_data_memory = within_memory(data);
9499

95-
auto value = do_decode(data);
96-
auto str = get<typename OutType::string>(value);
100+
auto value = decode(data);
101+
auto str = get<String>(value);
97102
expect(str, equal_to("spam"));
98-
if constexpr(std::ranges::view<typename OutType::string>) {
103+
if constexpr(std::ranges::view<String>) {
99104
expect(&*str.begin(), within_data_memory);
100105
expect(&*str.end(), within_data_memory);
101106
}
102107
});
103108

104-
_.test("list", [do_decode]() {
109+
_.test("list", [decode]() {
105110
auto data = make_data<InType>("li42ee");
106-
auto value = do_decode(data);
107-
auto list = get<typename OutType::list>(value);
108-
expect(get<typename OutType::integer>(list[0]), equal_to(42));
111+
auto value = decode(data);
112+
auto list = get<List>(value);
113+
expect(get<Integer>(list[0]), equal_to(42));
109114
});
110115

111-
_.test("dict", [do_decode]() {
116+
_.test("dict", [decode]() {
112117
auto data = make_data<InType>("d4:spami42ee");
113118
// Silence GCC < 10.
114119
[[maybe_unused]] auto within_data_memory = within_memory(data);
115120

116-
auto value = do_decode(data);
117-
auto dict = get<typename OutType::dict>(value);
118-
expect(get<typename OutType::integer>(dict["spam"]), equal_to(42));
121+
auto value = decode(data);
122+
auto dict = get<Dict>(value);
123+
expect(get<Integer>(dict["spam"]), equal_to(42));
119124

120125
auto str = dict.find("spam")->first;
121126
expect(str, equal_to("spam"));
122-
if constexpr(std::ranges::view<typename OutType::string>) {
127+
if constexpr(std::ranges::view<String>) {
123128
expect(&*str.begin(), within_data_memory);
124129
expect(&*str.end(), within_data_memory);
125130
}
126131
});
127132

128-
_.test("nested", [do_decode]() {
133+
_.test("nested", [decode]() {
129134
auto data = make_data<InType>(
130135
"d"
131136
"3:one" "i1e"
132137
"5:three" "l" "d" "3:bar" "i0e" "3:foo" "i0e" "e" "e"
133138
"3:two" "l" "i3e" "3:foo" "i4e" "e"
134139
"e"
135140
);
136-
auto value = do_decode(data);
137-
138-
auto dict = get<typename OutType::dict>(value);
139-
expect(get<typename OutType::integer>(dict["one"]), equal_to(1));
140-
141-
expect(get<typename OutType::string>(
142-
get<typename OutType::list>(dict["two"])[1]
143-
), equal_to("foo"));
144-
145-
expect(get<typename OutType::integer>(
146-
get<typename OutType::dict>(
147-
get<typename OutType::list>(dict["three"])[0]
148-
)["foo"]
149-
), equal_to(0));
141+
auto value = decode(data);
142+
auto dict = get<Dict>(value);
143+
expect(get<Integer>(dict["one"]), equal_to(1));
144+
expect(get<String>(get<List>(dict["two"])[1]), equal_to("foo"));
145+
expect(get<Integer>(get<Dict>(get<List>(dict["three"])[0])["foo"]),
146+
equal_to(0));
150147
});
151148
}
152149

0 commit comments

Comments
 (0)