mirror of
https://github.com/reactos/reactos.git
synced 2025-04-30 02:58:48 +00:00
[SHELL32]
- Fix AddCommasW svn path=/trunk/; revision=74510
This commit is contained in:
parent
0c9cd421ee
commit
a465b60e7f
4 changed files with 82 additions and 4 deletions
|
@ -42,20 +42,19 @@ AddCommasW(DWORD lValue, LPWSTR lpNumber)
|
||||||
|
|
||||||
numFormat.NumDigits = 0;
|
numFormat.NumDigits = 0;
|
||||||
numFormat.LeadingZero = 0;
|
numFormat.LeadingZero = 0;
|
||||||
numFormat.Grouping = 0; // FIXME! Use GetLocaleInfoW with LOCALE_SGROUPING and interpret the result.
|
numFormat.Grouping = 3; // FIXME! Use GetLocaleInfoW with LOCALE_SGROUPING and interpret the result.
|
||||||
numFormat.lpDecimalSep = szSeparator;
|
numFormat.lpDecimalSep = szSeparator;
|
||||||
numFormat.lpThousandSep = szSeparator;
|
numFormat.lpThousandSep = szSeparator;
|
||||||
numFormat.NegativeOrder = 0;
|
numFormat.NegativeOrder = 0;
|
||||||
|
|
||||||
swprintf(szValue, L"%llu", lValue);
|
swprintf(szValue, L"%lu", lValue);
|
||||||
//_ultow(lValue, szValue, 10);
|
|
||||||
|
|
||||||
if (GetNumberFormatW(LOCALE_USER_DEFAULT,
|
if (GetNumberFormatW(LOCALE_USER_DEFAULT,
|
||||||
0,
|
0,
|
||||||
szValue,
|
szValue,
|
||||||
&numFormat,
|
&numFormat,
|
||||||
lpNumber,
|
lpNumber,
|
||||||
wcslen(lpNumber)) != 0)
|
MAX_PATH) != 0)
|
||||||
{
|
{
|
||||||
return lpNumber;
|
return lpNumber;
|
||||||
}
|
}
|
||||||
|
|
76
rostests/apitests/shell32/AddCommas.c
Normal file
76
rostests/apitests/shell32/AddCommas.c
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
/*
|
||||||
|
* PROJECT: ReactOS API tests
|
||||||
|
* LICENSE: LGPLv2.1+ - See COPYING.LIB in the top level directory
|
||||||
|
* PURPOSE: Test for AddCommas
|
||||||
|
* PROGRAMMER: Thomas Faber <thomas.faber@reactos.org>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <apitest.h>
|
||||||
|
#include <windef.h>
|
||||||
|
#include <winnls.h>
|
||||||
|
#include <bcrypt.h>
|
||||||
|
#include <ntstatus.h>
|
||||||
|
#include <strsafe.h>
|
||||||
|
|
||||||
|
DECLSPEC_IMPORT LPWSTR WINAPI AddCommasW(DWORD lValue, LPWSTR lpNumber);
|
||||||
|
|
||||||
|
START_TEST(AddCommas)
|
||||||
|
{
|
||||||
|
WCHAR Separator[4];
|
||||||
|
WCHAR Grouping[11];
|
||||||
|
WCHAR Number[32];
|
||||||
|
WCHAR Expected[32];
|
||||||
|
PWSTR Ptr;
|
||||||
|
int Ret;
|
||||||
|
|
||||||
|
StartSeh()
|
||||||
|
AddCommasW(0, NULL);
|
||||||
|
EndSeh(STATUS_ACCESS_VIOLATION);
|
||||||
|
|
||||||
|
RtlFillMemory(Number, sizeof(Number), 0x55);
|
||||||
|
Ptr = AddCommasW(0, Number);
|
||||||
|
ok(Ptr == Number, "Ptr = %p, expected %p\n", Ptr, Number);
|
||||||
|
ok(Number[0] == L'0', "Number[0] = 0x%x\n", Number[0]);
|
||||||
|
ok(Number[1] == 0, "Number[1] = 0x%x\n", Number[1]);
|
||||||
|
ok(Number[2] == 0x5555, "Number[2] = 0x%x\n", Number[2]);
|
||||||
|
|
||||||
|
Ret = GetLocaleInfoW(LOCALE_USER_DEFAULT,
|
||||||
|
LOCALE_STHOUSAND,
|
||||||
|
Separator,
|
||||||
|
RTL_NUMBER_OF(Separator));
|
||||||
|
if (!Ret)
|
||||||
|
{
|
||||||
|
skip("GetLocaleInfoW failed with %lu\n", GetLastError());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Ret = GetLocaleInfoW(LOCALE_USER_DEFAULT,
|
||||||
|
LOCALE_SGROUPING,
|
||||||
|
Grouping,
|
||||||
|
RTL_NUMBER_OF(Grouping));
|
||||||
|
if (!Ret)
|
||||||
|
{
|
||||||
|
skip("GetLocaleInfoW failed with %lu\n", GetLastError());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wcscmp(Grouping, L"3;0"))
|
||||||
|
{
|
||||||
|
skip("Skipping remaining tests due to incompatible locale (separator '%ls', grouping '%ls')\n",
|
||||||
|
Separator, Grouping);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
RtlFillMemory(Number, sizeof(Number), 0x55);
|
||||||
|
Ptr = AddCommasW(123456789, Number);
|
||||||
|
ok(Ptr == Number, "Ptr = %p, expected %p\n", Ptr, Number);
|
||||||
|
StringCbPrintfW(Expected, sizeof(Expected), L"123%ls456%ls789", Separator, Separator);
|
||||||
|
ok(!wcscmp(Number, Expected), "Number = '%ls', expected %ls\n", Number, Expected);
|
||||||
|
ok(Number[wcslen(Number) + 1] == 0x5555, "Number[N] = 0x%x\n", Number[wcslen(Number) + 1]);
|
||||||
|
|
||||||
|
RtlFillMemory(Number, sizeof(Number), 0x55);
|
||||||
|
Ptr = AddCommasW(4294967295U, Number);
|
||||||
|
ok(Ptr == Number, "Ptr = %p, expected %p\n", Ptr, Number);
|
||||||
|
StringCbPrintfW(Expected, sizeof(Expected), L"4%ls294%ls967%ls295", Separator, Separator, Separator);
|
||||||
|
ok(!wcscmp(Number, Expected), "Number = '%ls', expected %ls\n", Number, Expected);
|
||||||
|
ok(Number[wcslen(Number) + 1] == 0x5555, "Number[N] = 0x%x\n", Number[wcslen(Number) + 1]);
|
||||||
|
}
|
|
@ -4,6 +4,7 @@ set_cpp(WITH_RUNTIME)
|
||||||
include_directories(${REACTOS_SOURCE_DIR}/sdk/lib/atl)
|
include_directories(${REACTOS_SOURCE_DIR}/sdk/lib/atl)
|
||||||
|
|
||||||
add_executable(shell32_apitest
|
add_executable(shell32_apitest
|
||||||
|
AddCommas.c
|
||||||
CFSFolder.cpp
|
CFSFolder.cpp
|
||||||
CMyComputer.cpp
|
CMyComputer.cpp
|
||||||
CShellDesktop.cpp
|
CShellDesktop.cpp
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#define STANDALONE
|
#define STANDALONE
|
||||||
#include <wine/test.h>
|
#include <wine/test.h>
|
||||||
|
|
||||||
|
extern void func_AddCommas(void);
|
||||||
extern void func_CFSFolder(void);
|
extern void func_CFSFolder(void);
|
||||||
extern void func_CMyComputer(void);
|
extern void func_CMyComputer(void);
|
||||||
extern void func_CShellDesktop(void);
|
extern void func_CShellDesktop(void);
|
||||||
|
@ -13,6 +14,7 @@ extern void func_SHParseDisplayName(void);
|
||||||
|
|
||||||
const struct test winetest_testlist[] =
|
const struct test winetest_testlist[] =
|
||||||
{
|
{
|
||||||
|
{ "AddCommas", func_AddCommas },
|
||||||
{ "CFSFolder", func_CFSFolder },
|
{ "CFSFolder", func_CFSFolder },
|
||||||
{ "CMyComputer", func_CMyComputer },
|
{ "CMyComputer", func_CMyComputer },
|
||||||
{ "CShellDesktop", func_CShellDesktop },
|
{ "CShellDesktop", func_CShellDesktop },
|
||||||
|
|
Loading…
Reference in a new issue