| 1 | #include "test.h" |
| 2 | |
| 3 | #include <base/windows.h> |
| 4 | |
| 5 | #include <gtest/gtest.h> |
| 6 | |
| 7 | #if defined(CONF_FAMILY_WINDOWS) |
| 8 | |
| 9 | TEST(ArgumentsToWide, SingleArgumentNoQuotes) |
| 10 | { |
| 11 | const char *apArguments[] = {"change_map ctf5" }; |
| 12 | std::wstring result = windows_args_to_wide(apArguments, std::size(apArguments)); |
| 13 | EXPECT_EQ(result, LR"("change_map ctf5")" ); |
| 14 | } |
| 15 | |
| 16 | TEST(ArgumentsToWide, SingleArgumentWithQuotes) |
| 17 | { |
| 18 | const char *apArguments[] = {"change_map \"ctf5\"" }; |
| 19 | std::wstring result = windows_args_to_wide(apArguments, std::size(apArguments)); |
| 20 | EXPECT_EQ(result, L"\"change_map \\\"ctf5\\\"\"" ); |
| 21 | } |
| 22 | |
| 23 | TEST(ArgumentsToWide, MultipleArguments) |
| 24 | { |
| 25 | const char *apArguments[] = {"change_map ctf5" , "sv_register 0" }; |
| 26 | std::wstring result = windows_args_to_wide(apArguments, std::size(apArguments)); |
| 27 | EXPECT_EQ(result, LR"("change_map ctf5" "sv_register 0")" ); |
| 28 | } |
| 29 | |
| 30 | TEST(ArgumentsToWide, SingleArgumentWithSlashes) |
| 31 | { |
| 32 | const char *apArguments[] = {R"(sv_name te\st)" }; |
| 33 | std::wstring result = windows_args_to_wide(apArguments, std::size(apArguments)); |
| 34 | EXPECT_EQ(result, L"\"sv_name te\\st\"" ); |
| 35 | } |
| 36 | |
| 37 | TEST(ArgumentsToWide, MultipleArgumentsWithSlashesAndQuotes) |
| 38 | { |
| 39 | const char *apArguments[] = {R"(sv_name "te\\st")" , R"(sv_motd "fo\\o")" }; |
| 40 | std::wstring result = windows_args_to_wide(apArguments, std::size(apArguments)); |
| 41 | EXPECT_EQ(result, L"\"sv_name \\\"te\\\\st\\\"\" \"sv_motd \\\"fo\\\\o\\\"\"" ); |
| 42 | } |
| 43 | |
| 44 | TEST(ArgumentsToWide, MultipleArgumentsWithEndSlash) |
| 45 | { |
| 46 | const char *apArguments[] = {R"(sv_name "te\\st\\")" , R"(sv_motd foo\)" }; |
| 47 | std::wstring result = windows_args_to_wide(apArguments, std::size(apArguments)); |
| 48 | EXPECT_EQ(result, L"\"sv_name \\\"te\\\\st\\\\\\\\\\\"\" \"sv_motd foo\\\\\"" ); |
| 49 | } |
| 50 | |
| 51 | #endif |
| 52 | |