Skip to content

Commit f29cb07

Browse files
committed
Move u32string_to_string into its own helper function and simplify funcitonality by taking in a u32string.
1 parent 083b29d commit f29cb07

File tree

1 file changed

+19
-17
lines changed

1 file changed

+19
-17
lines changed

tests/test-lexer.cpp

+19-17
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,12 @@
1313
#include <log_surgeon/Schema.hpp>
1414
#include <log_surgeon/SchemaParser.hpp>
1515

16+
using std::codecvt_utf8;
1617
using std::string;
1718
using std::string_view;
1819
using std::u32string;
1920
using std::vector;
21+
using std::wstring_convert;
2022

2123
using RegexASTCatByte = log_surgeon::finite_automata::RegexASTCat<
2224
log_surgeon::finite_automata::RegexNFAByteState>;
@@ -40,6 +42,14 @@ namespace {
4042
* @param expected_serialized_ast
4143
*/
4244
auto test_regex_ast(string_view var_schema, u32string const& expected_serialized_ast) -> void;
45+
46+
/**
47+
* Convert the characters in a 32-byte unicode string into 4 bytes to generate a 8-byte unciode
48+
* string.
49+
* @param u32_str
50+
* @return The resulting utf8 string.
51+
*/
52+
auto u32string_to_string(u32string const& u32_str) -> string;
4353
} // namespace
4454

4555
TEST_CASE("Test the Schema class", "[Schema]") {
@@ -160,23 +170,15 @@ auto test_regex_ast(string_view const var_schema, u32string const& expected_seri
160170
auto const* capture_rule_ast = dynamic_cast<SchemaVarAST*>(schema_ast->m_schema_vars[0].get());
161171
REQUIRE(capture_rule_ast != nullptr);
162172

163-
auto u32_to_u8 = [](char32_t const u32_char) -> std::string {
164-
std::u32string const u32_str{1, u32_char};
165-
std::wstring_convert<std::codecvt_utf8<char32_t>, char32_t> converter;
166-
return converter.to_bytes(u32_str.data(), u32_str.data() + u32_str.size());
167-
};
168-
169-
auto const actual_u32string = capture_rule_ast->m_regex_ptr->serialize();
170-
auto const actual_string = fmt::format(
171-
"{}",
172-
fmt::join(actual_u32string | std::ranges::views::transform(u32_to_u8), "")
173-
);
174-
175-
auto const expected_string = fmt::format(
176-
"{}",
177-
fmt::join(expected_serialized_ast | std::ranges::views::transform(u32_to_u8), "")
178-
);
179-
173+
auto const actual_string
174+
= fmt::format("{}", u32string_to_string(capture_rule_ast->m_regex_ptr->serialize()));
175+
auto const expected_string = fmt::format("{}", u32string_to_string(expected_serialized_ast));
180176
REQUIRE(actual_string == expected_string);
181177
}
178+
179+
auto u32string_to_string(u32string const& u32_str) -> string {
180+
wstring_convert<codecvt_utf8<char32_t>, char32_t> converter;
181+
return converter.to_bytes(u32_str.data(), u32_str.data() + u32_str.size());
182+
}
183+
182184
} // namespace

0 commit comments

Comments
 (0)