1#include "test.h"
2
3#include <base/windows.h>
4
5#include <gtest/gtest.h>
6
7#if defined(CONF_FAMILY_WINDOWS)
8
9TEST(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
16TEST(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
23TEST(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
30TEST(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
37TEST(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
44TEST(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