@@ -301,6 +301,42 @@ TEST_CASE("StringTools: binaryEscapseConversion2", "[helpers]") {
301301 CHECK (rstring == testString);
302302}
303303
304+ TEST_CASE (" StringTools: binaryEscapseConversion_withX" , " [helpers]" ) {
305+ std::string testString (" hippy\\ x35mm\\ XF3_helpX26fox19" );
306+ testString.push_back (0 );
307+ testString.push_back (0 );
308+ testString.push_back (0 );
309+ testString.push_back (56 );
310+ testString.push_back (-112 );
311+ testString.push_back (-112 );
312+ testString.push_back (39 );
313+ testString.push_back (97 );
314+ std::string estring = CLI::detail::binary_escape_string (testString);
315+ CHECK (CLI::detail::is_binary_escaped_string (estring));
316+ std::string rstring = CLI::detail::extract_binary_string (estring);
317+ CHECK (rstring == testString);
318+ }
319+
320+ TEST_CASE (" StringTools: binaryEscapseConversion_withBrackets" , " [helpers]" ) {
321+
322+ std::string vstr = R"raw( 'B"([\xb0\x0a\xb0/\xb0\xb0\xb0\xb0\xb0\xb0\xb0\xb0\xb0\xb0\xb0\xb0\xb0])"')raw" ;
323+ std::string testString (" [" );
324+ testString.push_back (-80 );
325+ testString.push_back (' \n ' );
326+ testString.push_back (-80 );
327+ testString.push_back (' /' );
328+ for (int ii = 0 ; ii < 13 ; ++ii) {
329+ testString.push_back (-80 );
330+ }
331+ testString.push_back (' ]' );
332+
333+ std::string estring = CLI::detail::binary_escape_string (testString);
334+ CHECK (CLI::detail::is_binary_escaped_string (estring));
335+ CHECK (estring == vstr);
336+ std::string rstring = CLI::detail::extract_binary_string (estring);
337+ CHECK (rstring == testString);
338+ }
339+
304340TEST_CASE (" StringTools: binaryStrings" , " [helpers]" ) {
305341 std::string rstring = " B\" ()\" " ;
306342 CHECK (CLI::detail::extract_binary_string (rstring).empty ());
0 commit comments