13
13
#include < log_surgeon/Schema.hpp>
14
14
#include < log_surgeon/SchemaParser.hpp>
15
15
16
+ using std::codecvt_utf8;
16
17
using std::string;
17
18
using std::string_view;
18
19
using std::u32string;
19
20
using std::vector;
21
+ using std::wstring_convert;
20
22
21
23
using RegexASTCatByte = log_surgeon::finite_automata::RegexASTCat<
22
24
log_surgeon::finite_automata::RegexNFAByteState>;
@@ -40,6 +42,14 @@ namespace {
40
42
* @param expected_serialized_ast
41
43
*/
42
44
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;
43
53
} // namespace
44
54
45
55
TEST_CASE (" Test the Schema class" , " [Schema]" ) {
@@ -160,23 +170,15 @@ auto test_regex_ast(string_view const var_schema, u32string const& expected_seri
160
170
auto const * capture_rule_ast = dynamic_cast <SchemaVarAST*>(schema_ast->m_schema_vars [0 ].get ());
161
171
REQUIRE (capture_rule_ast != nullptr );
162
172
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));
180
176
REQUIRE (actual_string == expected_string);
181
177
}
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
+
182
184
} // namespace
0 commit comments