mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 01:55:19 +00:00
parent
04b35ecc23
commit
b6aaf5e332
3 changed files with 66 additions and 0 deletions
|
@ -7,6 +7,7 @@ list(APPEND SOURCE
|
|||
CheckEscapes.cpp
|
||||
CIDLData.cpp
|
||||
CMyComputer.cpp
|
||||
CommandLineToArgvW.cpp
|
||||
CShellDesktop.cpp
|
||||
CShellLink.cpp
|
||||
CUserNotification.cpp
|
||||
|
|
63
modules/rostests/apitests/shell32/CommandLineToArgvW.cpp
Normal file
63
modules/rostests/apitests/shell32/CommandLineToArgvW.cpp
Normal file
|
@ -0,0 +1,63 @@
|
|||
/*
|
||||
* PROJECT: ReactOS API tests
|
||||
* LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
|
||||
* PURPOSE: Test for CommandLineToArgvW
|
||||
* COPYRIGHT: Copyright 2023 Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com)
|
||||
*/
|
||||
|
||||
#include "shelltest.h"
|
||||
#include <atlstr.h>
|
||||
|
||||
static VOID
|
||||
DoEntry(INT lineno, LPCWSTR cmdline, INT expected_argc, ...)
|
||||
{
|
||||
va_list va;
|
||||
va_start(va, expected_argc);
|
||||
|
||||
INT real_argc;
|
||||
LPWSTR *real_argv = CommandLineToArgvW(cmdline, &real_argc);
|
||||
|
||||
INT common = min(expected_argc, real_argc);
|
||||
for (INT i = 1; i < common; ++i)
|
||||
{
|
||||
CStringA str1 = wine_dbgstr_w(va_arg(va, LPCWSTR));
|
||||
CStringA str2 = wine_dbgstr_w(real_argv[i]);
|
||||
ok(str1 == str2, "Line %d: %s != %s\n", lineno, (LPCSTR)str1, (LPCSTR)str2);
|
||||
}
|
||||
|
||||
INT diff = abs(expected_argc - real_argc);
|
||||
while (diff-- > 0)
|
||||
{
|
||||
ok(expected_argc == real_argc,
|
||||
"Line %d: expected_argc %d and real_argc %d are different\n",
|
||||
lineno, expected_argc, real_argc);
|
||||
}
|
||||
|
||||
LocalFree(real_argv);
|
||||
va_end(va);
|
||||
}
|
||||
|
||||
START_TEST(CommandLineToArgvW)
|
||||
{
|
||||
DoEntry(__LINE__, L"", 1);
|
||||
DoEntry(__LINE__, L"test.exe", 1);
|
||||
DoEntry(__LINE__, L"test.exe ", 1);
|
||||
DoEntry(__LINE__, L"test.exe\t", 1);
|
||||
DoEntry(__LINE__, L"test.exe\r", 1);
|
||||
DoEntry(__LINE__, L"test.exe\n", 1);
|
||||
DoEntry(__LINE__, L"\"This is a test.exe\"", 1);
|
||||
DoEntry(__LINE__, L"\"This is a test.exe\" ", 1);
|
||||
DoEntry(__LINE__, L"\"This is a test.exe\"\t", 1);
|
||||
DoEntry(__LINE__, L"\"This is a test.exe\"\r", 2, L"\r");
|
||||
DoEntry(__LINE__, L"\"This is a test.exe\"\n", 2, L"\n");
|
||||
DoEntry(__LINE__, L"test.exe a", 2, L"a");
|
||||
DoEntry(__LINE__, L"test.exe\ta", 2, L"a");
|
||||
DoEntry(__LINE__, L"test.exe\ra", 2, L"a");
|
||||
DoEntry(__LINE__, L"test.exe\na", 2, L"a");
|
||||
DoEntry(__LINE__, L"test.exe a b c", 4, L"a", L"b", L"c");
|
||||
DoEntry(__LINE__, L"test.exe a b \"c", 4, L"a", L"b", L"c");
|
||||
DoEntry(__LINE__, L"test.exe \"a b\" \"c d\"", 3, L"a b", L"c d");
|
||||
DoEntry(__LINE__, L"test.exe \"a \" d\"", 3, L"a ", L"d");
|
||||
DoEntry(__LINE__, L"test.exe \"0 1\"\" 2", 3, L"0 1\"", L"2");
|
||||
DoEntry(__LINE__, L"test.exe \"0 1\"\"\" 2", 2, L"0 1\" 2");
|
||||
}
|
|
@ -9,6 +9,7 @@ extern void func_CFSFolder(void);
|
|||
extern void func_CheckEscapes(void);
|
||||
extern void func_CIDLData(void);
|
||||
extern void func_CMyComputer(void);
|
||||
extern void func_CommandLineToArgvW(void);
|
||||
extern void func_CShellDesktop(void);
|
||||
extern void func_CShellLink(void);
|
||||
extern void func_CUserNotification(void);
|
||||
|
@ -41,6 +42,7 @@ const struct test winetest_testlist[] =
|
|||
{ "CheckEscapes", func_CheckEscapes },
|
||||
{ "CIDLData", func_CIDLData },
|
||||
{ "CMyComputer", func_CMyComputer },
|
||||
{ "CommandLineToArgvW", func_CommandLineToArgvW },
|
||||
{ "CShellDesktop", func_CShellDesktop },
|
||||
{ "CShellLink", func_CShellLink },
|
||||
{ "CUserNotification", func_CUserNotification },
|
||||
|
|
Loading…
Reference in a new issue