Wine-Devel
Threads by month
- ----- 2026 -----
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
June 2018
- 68 participants
- 580 discussions
June 22, 2018
Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org>
---
dlls/crypt32/chain.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/dlls/crypt32/chain.c b/dlls/crypt32/chain.c
index dd3fc33db6..6e8076c66c 100644
--- a/dlls/crypt32/chain.c
+++ b/dlls/crypt32/chain.c
@@ -738,8 +738,7 @@ static BOOL url_matches(LPCWSTR constraint, LPCWSTR name,
/* Ignore any path or query portion of the URL. */
if (*authority_end)
{
- if (authority_end - name < sizeof(hostname_buf) /
- sizeof(hostname_buf[0]))
+ if (authority_end - name < ARRAY_SIZE(hostname_buf))
{
memcpy(hostname_buf, name,
(authority_end - name) * sizeof(WCHAR));
--
2.14.4
1
0
June 22, 2018
Only locale.c for now due to its size.
Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org>
---
dlls/kernel32/tests/locale.c | 598 +++++++++++++++++++++----------------------
1 file changed, 287 insertions(+), 311 deletions(-)
diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c
index 791f015766..06a7aa75e7 100644
--- a/dlls/kernel32/tests/locale.c
+++ b/dlls/kernel32/tests/locale.c
@@ -154,15 +154,14 @@ static void InitFunctionPointers(void)
(label), (received), (expected))
#define BUFFER_SIZE 128
-#define COUNTOF(x) (sizeof(x)/sizeof(x)[0])
#define STRINGSA(x,y) strcpy(input, x); strcpy(Expected, y); SetLastError(0xdeadbeef); buffer[0] = '\0'
#define EXPECT_LENA ok(ret == lstrlenA(Expected)+1, "Expected len %d, got %d\n", lstrlenA(Expected)+1, ret)
#define EXPECT_EQA ok(strncmp(buffer, Expected, strlen(Expected)) == 0, \
"Expected '%s', got '%s'\n", Expected, buffer)
-#define STRINGSW(x,y) MultiByteToWideChar(CP_ACP,0,x,-1,input,COUNTOF(input)); \
- MultiByteToWideChar(CP_ACP,0,y,-1,Expected,COUNTOF(Expected)); \
+#define STRINGSW(x,y) MultiByteToWideChar(CP_ACP,0,x,-1,input,ARRAY_SIZE(input)); \
+ MultiByteToWideChar(CP_ACP,0,y,-1,Expected,ARRAY_SIZE(Expected)); \
SetLastError(0xdeadbeef); buffer[0] = '\0'
#define EXPECT_LENW ok(ret == lstrlenW(Expected)+1, "Expected Len %d, got %d\n", lstrlenW(Expected)+1, ret)
#define EXPECT_EQW ok(strncmpW(buffer, Expected, strlenW(Expected)) == 0, "Bad conversion\n")
@@ -187,21 +186,21 @@ static void test_GetLocaleInfoA(void)
/* en and ar use SUBLANG_NEUTRAL, but GetLocaleInfo assume SUBLANG_DEFAULT
Same is true for zh on pre-Vista, but on Vista and higher GetLocaleInfo
assumes SUBLANG_NEUTRAL for zh */
- memset(expected, 0, COUNTOF(expected));
- len = GetLocaleInfoA(MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT), LOCALE_SLANGUAGE, expected, COUNTOF(expected));
+ memset(expected, 0, ARRAY_SIZE(expected));
+ len = GetLocaleInfoA(MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT), LOCALE_SLANGUAGE, expected, ARRAY_SIZE(expected));
SetLastError(0xdeadbeef);
- memset(buffer, 0, COUNTOF(buffer));
- ret = GetLocaleInfoA(LANG_ENGLISH, LOCALE_SLANGUAGE, buffer, COUNTOF(buffer));
+ memset(buffer, 0, ARRAY_SIZE(buffer));
+ ret = GetLocaleInfoA(LANG_ENGLISH, LOCALE_SLANGUAGE, buffer, ARRAY_SIZE(buffer));
ok((ret == len) && !lstrcmpA(buffer, expected),
"got %d with '%s' (expected %d with '%s')\n",
ret, buffer, len, expected);
- memset(expected, 0, COUNTOF(expected));
- len = GetLocaleInfoA(MAKELANGID(LANG_ARABIC, SUBLANG_DEFAULT), LOCALE_SLANGUAGE, expected, COUNTOF(expected));
+ memset(expected, 0, ARRAY_SIZE(expected));
+ len = GetLocaleInfoA(MAKELANGID(LANG_ARABIC, SUBLANG_DEFAULT), LOCALE_SLANGUAGE, expected, ARRAY_SIZE(expected));
if (len) {
SetLastError(0xdeadbeef);
- memset(buffer, 0, COUNTOF(buffer));
- ret = GetLocaleInfoA(LANG_ARABIC, LOCALE_SLANGUAGE, buffer, COUNTOF(buffer));
+ memset(buffer, 0, ARRAY_SIZE(buffer));
+ ret = GetLocaleInfoA(LANG_ARABIC, LOCALE_SLANGUAGE, buffer, ARRAY_SIZE(buffer));
ok((ret == len) && !lstrcmpA(buffer, expected),
"got %d with '%s' (expected %d with '%s')\n",
ret, buffer, len, expected);
@@ -210,11 +209,11 @@ static void test_GetLocaleInfoA(void)
win_skip("LANG_ARABIC not installed\n");
/* SUBLANG_DEFAULT is required for mlang.dll, but optional for GetLocaleInfo */
- memset(expected, 0, COUNTOF(expected));
- len = GetLocaleInfoA(MAKELANGID(LANG_GERMAN, SUBLANG_DEFAULT), LOCALE_SLANGUAGE, expected, COUNTOF(expected));
+ memset(expected, 0, ARRAY_SIZE(expected));
+ len = GetLocaleInfoA(MAKELANGID(LANG_GERMAN, SUBLANG_DEFAULT), LOCALE_SLANGUAGE, expected, ARRAY_SIZE(expected));
SetLastError(0xdeadbeef);
- memset(buffer, 0, COUNTOF(buffer));
- ret = GetLocaleInfoA(LANG_GERMAN, LOCALE_SLANGUAGE, buffer, COUNTOF(buffer));
+ memset(buffer, 0, ARRAY_SIZE(buffer));
+ ret = GetLocaleInfoA(LANG_GERMAN, LOCALE_SLANGUAGE, buffer, ARRAY_SIZE(buffer));
ok((ret == len) && !lstrcmpA(buffer, expected),
"got %d with '%s' (expected %d with '%s')\n",
ret, buffer, len, expected);
@@ -224,19 +223,19 @@ static void test_GetLocaleInfoA(void)
* partially fill the buffer even if it is too short. See bug 637.
*/
SetLastError(0xdeadbeef);
- memset(buffer, 0, COUNTOF(buffer));
+ memset(buffer, 0, ARRAY_SIZE(buffer));
ret = GetLocaleInfoA(lcid, NUO|LOCALE_SDAYNAME1, buffer, 0);
ok(ret == 7 && !buffer[0], "Expected len=7, got %d\n", ret);
SetLastError(0xdeadbeef);
- memset(buffer, 0, COUNTOF(buffer));
+ memset(buffer, 0, ARRAY_SIZE(buffer));
ret = GetLocaleInfoA(lcid, NUO|LOCALE_SDAYNAME1, buffer, 3);
ok( !ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER,
"Expected ERROR_INSUFFICIENT_BUFFER, got %d\n", GetLastError());
ok(!strcmp(buffer, "Mon"), "Expected 'Mon', got '%s'\n", buffer);
SetLastError(0xdeadbeef);
- memset(buffer, 0, COUNTOF(buffer));
+ memset(buffer, 0, ARRAY_SIZE(buffer));
ret = GetLocaleInfoA(lcid, NUO|LOCALE_SDAYNAME1, buffer, 10);
ok(ret == 7, "Expected ret == 7, got %d, error %d\n", ret, GetLastError());
ok(!strcmp(buffer, "Monday"), "Expected 'Monday', got '%s'\n", buffer);
@@ -296,7 +295,7 @@ static void test_GetLocaleInfoW(void)
DWORD ret;
INT i;
- ret = GetLocaleInfoW(lcid_en, LOCALE_SMONTHNAME1, bufferW, COUNTOF(bufferW));
+ ret = GetLocaleInfoW(lcid_en, LOCALE_SMONTHNAME1, bufferW, ARRAY_SIZE(bufferW));
if (!ret) {
win_skip("GetLocaleInfoW() isn't implemented\n");
return;
@@ -306,7 +305,7 @@ static void test_GetLocaleInfoW(void)
ok(ret, "got %d\n", ret);
ok(val == lcid_en, "got 0x%08x\n", val);
- ret = GetLocaleInfoW(lcid_en_neut, LOCALE_SNAME, bufferW, COUNTOF(bufferW));
+ ret = GetLocaleInfoW(lcid_en_neut, LOCALE_SNAME, bufferW, ARRAY_SIZE(bufferW));
if (ret)
{
static const WCHAR slangW[] = {'E','n','g','l','i','s','h',' ','(','U','n','i','t','e','d',' ',
@@ -317,7 +316,7 @@ static void test_GetLocaleInfoW(void)
ok(!lstrcmpW(bufferW, enW), "got wrong name %s\n", wine_dbgstr_w(bufferW));
- ret = GetLocaleInfoW(lcid_en_neut, LOCALE_SCOUNTRY, bufferW, COUNTOF(bufferW));
+ ret = GetLocaleInfoW(lcid_en_neut, LOCALE_SCOUNTRY, bufferW, ARRAY_SIZE(bufferW));
ok(ret, "got %d\n", ret);
if ((PRIMARYLANGID(LANGIDFROMLCID(GetSystemDefaultLCID())) != LANG_ENGLISH) ||
(PRIMARYLANGID(LANGIDFROMLCID(GetThreadLocale())) != LANG_ENGLISH))
@@ -327,7 +326,7 @@ static void test_GetLocaleInfoW(void)
else
ok(!lstrcmpW(statesW, bufferW), "got wrong name %s\n", wine_dbgstr_w(bufferW));
- ret = GetLocaleInfoW(lcid_en_neut, LOCALE_SLANGUAGE, bufferW, COUNTOF(bufferW));
+ ret = GetLocaleInfoW(lcid_en_neut, LOCALE_SLANGUAGE, bufferW, ARRAY_SIZE(bufferW));
ok(ret, "got %d\n", ret);
if ((PRIMARYLANGID(LANGIDFROMLCID(GetSystemDefaultLCID())) != LANG_ENGLISH) ||
(PRIMARYLANGID(LANGIDFROMLCID(GetThreadLocale())) != LANG_ENGLISH))
@@ -353,7 +352,7 @@ static void test_GetLocaleInfoW(void)
wine_dbgstr_w(ptr->name), val, ptr->lcid);
/* now check LOCALE_SNAME */
- GetLocaleInfoW(lcid, LOCALE_SNAME, bufferW, COUNTOF(bufferW));
+ GetLocaleInfoW(lcid, LOCALE_SNAME, bufferW, ARRAY_SIZE(bufferW));
todo_wine_if (ptr->todo & 0x2)
ok(!lstrcmpW(bufferW, ptr->sname) ||
(*ptr->sname_broken && broken(!lstrcmpW(bufferW, ptr->sname_broken))),
@@ -364,13 +363,13 @@ static void test_GetLocaleInfoW(void)
else
win_skip("English neutral locale not supported\n");
- ret = GetLocaleInfoW(lcid_ru, LOCALE_SMONTHNAME1, bufferW, COUNTOF(bufferW));
+ ret = GetLocaleInfoW(lcid_ru, LOCALE_SMONTHNAME1, bufferW, ARRAY_SIZE(bufferW));
if (!ret) {
win_skip("LANG_RUSSIAN locale data unavailable\n");
return;
}
ret = GetLocaleInfoW(lcid_ru, LOCALE_SMONTHNAME1|LOCALE_RETURN_GENITIVE_NAMES,
- bufferW, COUNTOF(bufferW));
+ bufferW, ARRAY_SIZE(bufferW));
if (!ret) {
win_skip("LOCALE_RETURN_GENITIVE_NAMES isn't supported\n");
return;
@@ -380,7 +379,7 @@ static void test_GetLocaleInfoW(void)
bufferA[0] = 'a';
SetLastError(0xdeadbeef);
ret = GetLocaleInfoA(lcid_ru, LOCALE_SMONTHNAME1|LOCALE_RETURN_GENITIVE_NAMES,
- bufferA, COUNTOF(bufferA));
+ bufferA, ARRAY_SIZE(bufferA));
ok(ret == 0, "LOCALE_RETURN_GENITIVE_NAMES should fail with GetLocaleInfoA\n");
ok(bufferA[0] == 'a', "Expected buffer to be untouched\n");
ok(GetLastError() == ERROR_INVALID_FLAGS,
@@ -388,8 +387,7 @@ static void test_GetLocaleInfoW(void)
bufferW[0] = 'a';
SetLastError(0xdeadbeef);
- ret = GetLocaleInfoW(lcid_ru, LOCALE_RETURN_GENITIVE_NAMES,
- bufferW, COUNTOF(bufferW));
+ ret = GetLocaleInfoW(lcid_ru, LOCALE_RETURN_GENITIVE_NAMES, bufferW, ARRAY_SIZE(bufferW));
ok(ret == 0,
"LOCALE_RETURN_GENITIVE_NAMES itself doesn't return anything, got %d\n", ret);
ok(bufferW[0] == 'a', "Expected buffer to be untouched\n");
@@ -400,13 +398,12 @@ static void test_GetLocaleInfoW(void)
for (i = 0; i < 12; i++) {
bufferW[0] = 0;
ret = GetLocaleInfoW(lcid_ru, (LOCALE_SMONTHNAME1+i)|LOCALE_RETURN_GENITIVE_NAMES,
- bufferW, COUNTOF(bufferW));
+ bufferW, ARRAY_SIZE(bufferW));
ok(ret, "Expected non zero result\n");
ok(ret == lstrlenW(bufferW)+1, "Expected actual length, got %d, length %d\n",
ret, lstrlenW(bufferW));
buffer2W[0] = 0;
- ret = GetLocaleInfoW(lcid_ru, LOCALE_SMONTHNAME1+i,
- buffer2W, COUNTOF(buffer2W));
+ ret = GetLocaleInfoW(lcid_ru, LOCALE_SMONTHNAME1+i, buffer2W, ARRAY_SIZE(buffer2W));
ok(ret, "Expected non zero result\n");
ok(ret == lstrlenW(buffer2W)+1, "Expected actual length, got %d, length %d\n",
ret, lstrlenW(buffer2W));
@@ -417,13 +414,12 @@ static void test_GetLocaleInfoW(void)
/* for locale without genitive names nominative returned in both cases */
bufferW[0] = 0;
ret = GetLocaleInfoW(lcid_en, (LOCALE_SMONTHNAME1+i)|LOCALE_RETURN_GENITIVE_NAMES,
- bufferW, COUNTOF(bufferW));
+ bufferW, ARRAY_SIZE(bufferW));
ok(ret, "Expected non zero result\n");
ok(ret == lstrlenW(bufferW)+1, "Expected actual length, got %d, length %d\n",
ret, lstrlenW(bufferW));
buffer2W[0] = 0;
- ret = GetLocaleInfoW(lcid_en, LOCALE_SMONTHNAME1+i,
- buffer2W, COUNTOF(buffer2W));
+ ret = GetLocaleInfoW(lcid_en, LOCALE_SMONTHNAME1+i, buffer2W, ARRAY_SIZE(buffer2W));
ok(ret, "Expected non zero result\n");
ok(ret == lstrlenW(buffer2W)+1, "Expected actual length, got %d, length %d\n",
ret, lstrlenW(buffer2W));
@@ -443,7 +439,7 @@ static void test_GetTimeFormatA(void)
memset(&curtime, 2, sizeof(SYSTEMTIME));
STRINGSA("tt HH':'mm'@'ss", ""); /* Invalid time */
SetLastError(0xdeadbeef);
- ret = GetTimeFormatA(lcid, TIME_FORCE24HOURFORMAT, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetTimeFormatA(lcid, TIME_FORCE24HOURFORMAT, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
@@ -453,13 +449,13 @@ static void test_GetTimeFormatA(void)
curtime.wMilliseconds = 22;
STRINGSA("tt HH':'mm'@'ss", "AM 08:56(a)13"); /* Valid time */
SetLastError(0xdeadbeef);
- ret = GetTimeFormatA(lcid, TIME_FORCE24HOURFORMAT, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetTimeFormatA(lcid, TIME_FORCE24HOURFORMAT, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
/* MSDN: LOCALE_NOUSEROVERRIDE can't be specified with a format string */
SetLastError(0xdeadbeef);
- ret = GetTimeFormatA(lcid, NUO|TIME_FORCE24HOURFORMAT, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetTimeFormatA(lcid, NUO|TIME_FORCE24HOURFORMAT, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(!ret && GetLastError() == ERROR_INVALID_FLAGS,
"Expected ERROR_INVALID_FLAGS, got %d\n", GetLastError());
@@ -475,62 +471,62 @@ static void test_GetTimeFormatA(void)
EXPECT_LENA;
STRINGSA("", "8 AM"); /* TIME_NOMINUTESORSECONDS, default format */
- ret = GetTimeFormatA(lcid, NUO|TIME_NOMINUTESORSECONDS, &curtime, NULL, buffer, COUNTOF(buffer));
+ ret = GetTimeFormatA(lcid, NUO|TIME_NOMINUTESORSECONDS, &curtime, NULL, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
STRINGSA("m1s2m3s4", ""); /* TIME_NOMINUTESORSECONDS/complex format */
- ret = GetTimeFormatA(lcid, TIME_NOMINUTESORSECONDS, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetTimeFormatA(lcid, TIME_NOMINUTESORSECONDS, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret == strlen(buffer)+1, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
ok( !strcmp( buffer, "" ) || broken( !strcmp( buffer, "4" )), /* win9x */
"Expected '', got '%s'\n", buffer );
STRINGSA("", "8:56 AM"); /* TIME_NOSECONDS/Default format */
- ret = GetTimeFormatA(lcid, NUO|TIME_NOSECONDS, &curtime, NULL, buffer, COUNTOF(buffer));
+ ret = GetTimeFormatA(lcid, NUO|TIME_NOSECONDS, &curtime, NULL, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
STRINGSA("h:m:s tt", "8:56 AM"); /* TIME_NOSECONDS */
strcpy(Expected, "8:56 AM");
- ret = GetTimeFormatA(lcid, TIME_NOSECONDS, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetTimeFormatA(lcid, TIME_NOSECONDS, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
STRINGSA("h.@:m.@:s.@:tt", "8.@:56AM"); /* Multiple delimiters */
- ret = GetTimeFormatA(lcid, TIME_NOSECONDS, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetTimeFormatA(lcid, TIME_NOSECONDS, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
ok( !strcmp( buffer, "8.@:56AM" ) || broken( !strcmp( buffer, "8.@:56.@:AM" )) /* win9x */,
"Expected '8.@:56AM', got '%s'\n", buffer );
STRINGSA("s1s2s3", ""); /* Duplicate tokens */
- ret = GetTimeFormatA(lcid, TIME_NOSECONDS, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetTimeFormatA(lcid, TIME_NOSECONDS, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret == strlen(buffer)+1, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
ok( !strcmp( buffer, "" ) || broken( !strcmp( buffer, "3" )), /* win9x */
"Expected '', got '%s'\n", buffer );
STRINGSA("t/tt", "A/AM"); /* AM time marker */
- ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
curtime.wHour = 13;
STRINGSA("t/tt", "P/PM"); /* PM time marker */
- ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
STRINGSA("h1t2tt3m", "156"); /* TIME_NOTIMEMARKER: removes text around time marker token */
- ret = GetTimeFormatA(lcid, TIME_NOTIMEMARKER, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetTimeFormatA(lcid, TIME_NOTIMEMARKER, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
STRINGSA("h:m:s tt", "13:56:13 PM"); /* TIME_FORCE24HOURFORMAT */
- ret = GetTimeFormatA(lcid, TIME_FORCE24HOURFORMAT, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetTimeFormatA(lcid, TIME_FORCE24HOURFORMAT, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
STRINGSA("h:m:s", "13:56:13"); /* TIME_FORCE24HOURFORMAT doesn't add time marker */
- ret = GetTimeFormatA(lcid, TIME_FORCE24HOURFORMAT, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetTimeFormatA(lcid, TIME_FORCE24HOURFORMAT, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
@@ -538,18 +534,18 @@ static void test_GetTimeFormatA(void)
curtime.wMinute = 5;
curtime.wSecond = 3;
STRINGSA("h hh H HH m mm s ss t tt", "2 02 14 14 5 05 3 03 P PM"); /* 24 hrs, leading 0 */
- ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
curtime.wHour = 0;
STRINGSA("h/H/hh/HH", "12/0/12/00"); /* "hh" and "HH" */
- ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
STRINGSA("h:m:s tt", "12:5:3 AM"); /* non-zero flags should fail with format, doesn't */
- ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
@@ -565,7 +561,7 @@ static void test_GetTimeFormatA(void)
curtime.wMilliseconds = 22;
STRINGSA("h:hh:hhh H:HH:HHH m:mm:mmm M:MM:MMM s:ss:sss S:SS:SSS",
"8:08:08 8:08:08 56:56:56 M:MM:MMM 13:13:13 S:SS:SSS");
- ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
@@ -577,53 +573,53 @@ static void test_GetTimeFormatA(void)
STRINGSA("h 'h' H 'H' HH 'HH' m 'm' s 's' t 't' tt 'tt'",
"8 h 8 H 08 HH 56 m 13 s A t AM tt"); /* "'" preserves tokens */
- ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
STRINGSA("'''", "'"); /* invalid quoted string */
- ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
/* test that msdn suggested single quotation usage works as expected */
STRINGSA("''''", "'"); /* single quote mark */
- ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
STRINGSA("''HHHHHH", "08"); /* Normal use */
- ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
/* and test for normal use of the single quotation mark */
STRINGSA("'''HHHHHH'", "'HHHHHH"); /* Normal use */
- ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
STRINGSA("'''HHHHHH", "'HHHHHH"); /* Odd use */
- ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
STRINGSA("'123'tt", ""); /* TIME_NOTIMEMARKER drops literals too */
- ret = GetTimeFormatA(lcid, TIME_NOTIMEMARKER, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetTimeFormatA(lcid, TIME_NOTIMEMARKER, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
curtime.wHour = 25;
STRINGSA("'123'tt", ""); /* Invalid time */
SetLastError(0xdeadbeef);
- ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
curtime.wHour = 12;
curtime.wMonth = 60; /* Invalid */
STRINGSA("h:m:s", "12:56:13"); /* Invalid date */
- ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
}
@@ -643,7 +639,7 @@ static void test_GetTimeFormatEx(void)
memset(&curtime, 2, sizeof(SYSTEMTIME));
STRINGSW("tt HH':'mm'@'ss", ""); /* Invalid time */
SetLastError(0xdeadbeef);
- ret = pGetTimeFormatEx(localeW, TIME_FORCE24HOURFORMAT, &curtime, input, buffer, COUNTOF(buffer));
+ ret = pGetTimeFormatEx(localeW, TIME_FORCE24HOURFORMAT, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
@@ -653,13 +649,13 @@ static void test_GetTimeFormatEx(void)
curtime.wMilliseconds = 22;
STRINGSW("tt HH':'mm'@'ss", "AM 08:56(a)13"); /* Valid time */
SetLastError(0xdeadbeef);
- ret = pGetTimeFormatEx(localeW, TIME_FORCE24HOURFORMAT, &curtime, input, buffer, COUNTOF(buffer));
+ ret = pGetTimeFormatEx(localeW, TIME_FORCE24HOURFORMAT, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
/* MSDN: LOCALE_NOUSEROVERRIDE can't be specified with a format string */
SetLastError(0xdeadbeef);
- ret = pGetTimeFormatEx(localeW, NUO|TIME_FORCE24HOURFORMAT, &curtime, input, buffer, COUNTOF(buffer));
+ ret = pGetTimeFormatEx(localeW, NUO|TIME_FORCE24HOURFORMAT, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(!ret && GetLastError() == ERROR_INVALID_FLAGS,
"Expected ERROR_INVALID_FLAGS, got %d\n", GetLastError());
@@ -675,58 +671,58 @@ static void test_GetTimeFormatEx(void)
EXPECT_LENW;
STRINGSW("", "8 AM"); /* TIME_NOMINUTESORSECONDS, default format */
- ret = pGetTimeFormatEx(localeW, NUO|TIME_NOMINUTESORSECONDS, &curtime, NULL, buffer, COUNTOF(buffer));
+ ret = pGetTimeFormatEx(localeW, NUO|TIME_NOMINUTESORSECONDS, &curtime, NULL, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
STRINGSW("m1s2m3s4", ""); /* TIME_NOMINUTESORSECONDS/complex format */
- ret = pGetTimeFormatEx(localeW, TIME_NOMINUTESORSECONDS, &curtime, input, buffer, COUNTOF(buffer));
+ ret = pGetTimeFormatEx(localeW, TIME_NOMINUTESORSECONDS, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret == strlenW(buffer)+1, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
STRINGSW("", "8:56 AM"); /* TIME_NOSECONDS/Default format */
- ret = pGetTimeFormatEx(localeW, NUO|TIME_NOSECONDS, &curtime, NULL, buffer, COUNTOF(buffer));
+ ret = pGetTimeFormatEx(localeW, NUO|TIME_NOSECONDS, &curtime, NULL, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
STRINGSW("h:m:s tt", "8:56 AM"); /* TIME_NOSECONDS */
- ret = pGetTimeFormatEx(localeW, TIME_NOSECONDS, &curtime, input, buffer, COUNTOF(buffer));
+ ret = pGetTimeFormatEx(localeW, TIME_NOSECONDS, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
STRINGSW("h.@:m.@:s.@:tt", "8.@:56AM"); /* Multiple delimiters */
- ret = pGetTimeFormatEx(localeW, TIME_NOSECONDS, &curtime, input, buffer, COUNTOF(buffer));
+ ret = pGetTimeFormatEx(localeW, TIME_NOSECONDS, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
STRINGSW("s1s2s3", ""); /* Duplicate tokens */
- ret = pGetTimeFormatEx(localeW, TIME_NOSECONDS, &curtime, input, buffer, COUNTOF(buffer));
+ ret = pGetTimeFormatEx(localeW, TIME_NOSECONDS, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret == strlenW(buffer)+1, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
STRINGSW("t/tt", "A/AM"); /* AM time marker */
- ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
curtime.wHour = 13;
STRINGSW("t/tt", "P/PM"); /* PM time marker */
- ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
STRINGSW("h1t2tt3m", "156"); /* TIME_NOTIMEMARKER: removes text around time marker token */
- ret = pGetTimeFormatEx(localeW, TIME_NOTIMEMARKER, &curtime, input, buffer, COUNTOF(buffer));
+ ret = pGetTimeFormatEx(localeW, TIME_NOTIMEMARKER, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
STRINGSW("h:m:s tt", "13:56:13 PM"); /* TIME_FORCE24HOURFORMAT */
- ret = pGetTimeFormatEx(localeW, TIME_FORCE24HOURFORMAT, &curtime, input, buffer, COUNTOF(buffer));
+ ret = pGetTimeFormatEx(localeW, TIME_FORCE24HOURFORMAT, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
STRINGSW("h:m:s", "13:56:13"); /* TIME_FORCE24HOURFORMAT doesn't add time marker */
- ret = pGetTimeFormatEx(localeW, TIME_FORCE24HOURFORMAT, &curtime, input, buffer, COUNTOF(buffer));
+ ret = pGetTimeFormatEx(localeW, TIME_FORCE24HOURFORMAT, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
@@ -734,18 +730,18 @@ static void test_GetTimeFormatEx(void)
curtime.wMinute = 5;
curtime.wSecond = 3;
STRINGSW("h hh H HH m mm s ss t tt", "2 02 14 14 5 05 3 03 P PM"); /* 24 hrs, leading 0 */
- ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
curtime.wHour = 0;
STRINGSW("h/H/hh/HH", "12/0/12/00"); /* "hh" and "HH" */
- ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
STRINGSW("h:m:s tt", "12:5:3 AM"); /* non-zero flags should fail with format, doesn't */
- ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
@@ -761,7 +757,7 @@ static void test_GetTimeFormatEx(void)
curtime.wMilliseconds = 22;
STRINGSW("h:hh:hhh H:HH:HHH m:mm:mmm M:MM:MMM s:ss:sss S:SS:SSS",
"8:08:08 8:08:08 56:56:56 M:MM:MMM 13:13:13 S:SS:SSS");
- ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
@@ -773,53 +769,53 @@ static void test_GetTimeFormatEx(void)
STRINGSW("h 'h' H 'H' HH 'HH' m 'm' s 's' t 't' tt 'tt'",
"8 h 8 H 08 HH 56 m 13 s A t AM tt"); /* "'" preserves tokens */
- ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
STRINGSW("'''", "'"); /* invalid quoted string */
- ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
/* test that msdn suggested single quotation usage works as expected */
STRINGSW("''''", "'"); /* single quote mark */
- ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
STRINGSW("''HHHHHH", "08"); /* Normal use */
- ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
/* and test for normal use of the single quotation mark */
STRINGSW("'''HHHHHH'", "'HHHHHH"); /* Normal use */
- ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
STRINGSW("'''HHHHHH", "'HHHHHH"); /* Odd use */
- ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
STRINGSW("'123'tt", ""); /* TIME_NOTIMEMARKER drops literals too */
- ret = pGetTimeFormatEx(localeW, TIME_NOTIMEMARKER, &curtime, input, buffer, COUNTOF(buffer));
+ ret = pGetTimeFormatEx(localeW, TIME_NOTIMEMARKER, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
curtime.wHour = 25;
STRINGSW("'123'tt", ""); /* Invalid time */
SetLastError(0xdeadbeef);
- ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
curtime.wHour = 12;
curtime.wMonth = 60; /* Invalid */
STRINGSW("h:m:s", "12:56:13"); /* Invalid date */
- ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = pGetTimeFormatEx(localeW, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
}
@@ -837,7 +833,7 @@ static void test_GetDateFormatA(void)
memset(&curtime, 2, sizeof(SYSTEMTIME)); /* Invalid time */
STRINGSA("ddd',' MMM dd yy","");
SetLastError(0xdeadbeef);
- ret = GetDateFormatA(lcid, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetDateFormatA(lcid, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
@@ -846,26 +842,26 @@ static void test_GetDateFormatA(void)
curtime.wDay = 4;
curtime.wDayOfWeek = 3;
STRINGSA("ddd',' MMM dd yy","Sat, May 04 02"); /* Simple case */
- ret = GetDateFormatA(lcid, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetDateFormatA(lcid, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
/* Same as above but with LOCALE_NOUSEROVERRIDE */
STRINGSA("ddd',' MMM dd yy",""); /* Simple case */
SetLastError(0xdeadbeef);
- ret = GetDateFormatA(lcid, NUO, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetDateFormatA(lcid, NUO, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(!ret && GetLastError() == ERROR_INVALID_FLAGS,
"Expected ERROR_INVALID_FLAGS, got %d\n", GetLastError());
EXPECT_EQA;
STRINGSA("ddd',' MMM dd yy","Sat, May 04 02"); /* Format containing "'" */
- ret = GetDateFormatA(lcid, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetDateFormatA(lcid, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
curtime.wHour = 36; /* Invalid */
STRINGSA("ddd',' MMM dd ''''yy","Sat, May 04 '02"); /* Invalid time */
- ret = GetDateFormatA(lcid, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetDateFormatA(lcid, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
@@ -881,13 +877,13 @@ static void test_GetDateFormatA(void)
"Expected ERROR_INSUFFICIENT_BUFFER, got %d\n", GetLastError());
STRINGSA("ddd',' MMM dd ''''yy","5/4/2002"); /* Default to DATE_SHORTDATE */
- ret = GetDateFormatA(lcid, NUO, &curtime, NULL, buffer, COUNTOF(buffer));
+ ret = GetDateFormatA(lcid, NUO, &curtime, NULL, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
if (strncmp(buffer, Expected, strlen(Expected)) && strncmp(buffer, "5/4/02", strlen(Expected)) != 0)
ok (0, "Expected '%s' or '5/4/02', got '%s'\n", Expected, buffer);
SetLastError(0xdeadbeef); buffer[0] = '\0'; /* DATE_LONGDATE */
- ret = GetDateFormatA(lcid, NUO|DATE_LONGDATE, &curtime, NULL, buffer, COUNTOF(buffer));
+ ret = GetDateFormatA(lcid, NUO|DATE_LONGDATE, &curtime, NULL, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
ok(strcmp(buffer, "Saturday, May 04, 2002") == 0 ||
strcmp(buffer, "Saturday, May 4, 2002") == 0 /* Win 8 */,
@@ -897,7 +893,7 @@ static void test_GetDateFormatA(void)
/* NT4 returns ERROR_INVALID_FLAGS for DATE_YEARMONTH */
STRINGSA("ddd',' MMM dd ''''yy", ""); /* DATE_YEARMONTH */
SetLastError(0xdeadbeef);
- ret = GetDateFormatA(lcid, NUO|DATE_YEARMONTH, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetDateFormatA(lcid, NUO|DATE_YEARMONTH, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(!ret && GetLastError() == ERROR_INVALID_FLAGS,
"Expected ERROR_INVALID_FLAGS, got %d\n", GetLastError());
EXPECT_EQA;
@@ -906,12 +902,12 @@ static void test_GetDateFormatA(void)
/* and return values */
STRINGSA("m/d/y", ""); /* Invalid flags */
SetLastError(0xdeadbeef);
- ret = GetDateFormatA(lcid, DATE_YEARMONTH|DATE_SHORTDATE|DATE_LONGDATE,
- &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetDateFormatA(lcid, DATE_YEARMONTH|DATE_SHORTDATE|DATE_LONGDATE, &curtime, input,
+ buffer, ARRAY_SIZE(buffer));
ok(!ret && GetLastError() == ERROR_INVALID_FLAGS,
"Expected ERROR_INVALID_FLAGS, got %d\n", GetLastError());
- ret = GetDateFormatA(lcid_ru, 0, &curtime, "ddMMMM", buffer, COUNTOF(buffer));
+ ret = GetDateFormatA(lcid_ru, 0, &curtime, "ddMMMM", buffer, ARRAY_SIZE(buffer));
if (!ret)
{
win_skip("LANG_RUSSIAN locale data unavailable\n");
@@ -920,37 +916,37 @@ static void test_GetDateFormatA(void)
/* month part should be in genitive form */
strcpy(genitive_month, buffer + 2);
- ret = GetDateFormatA(lcid_ru, 0, &curtime, "MMMM", buffer, COUNTOF(buffer));
+ ret = GetDateFormatA(lcid_ru, 0, &curtime, "MMMM", buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
strcpy(month, buffer);
ok(strcmp(genitive_month, month) != 0, "Expected different month forms\n");
- ret = GetDateFormatA(lcid_ru, 0, &curtime, "ddd", buffer, COUNTOF(buffer));
+ ret = GetDateFormatA(lcid_ru, 0, &curtime, "ddd", buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
strcpy(short_day, buffer);
STRINGSA("dd MMMMddd dd", "");
sprintf(Expected, "04 %s%s 04", genitive_month, short_day);
- ret = GetDateFormatA(lcid_ru, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetDateFormatA(lcid_ru, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_EQA;
STRINGSA("MMMMddd dd", "");
sprintf(Expected, "%s%s 04", month, short_day);
- ret = GetDateFormatA(lcid_ru, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetDateFormatA(lcid_ru, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_EQA;
STRINGSA("MMMMddd", "");
sprintf(Expected, "%s%s", month, short_day);
- ret = GetDateFormatA(lcid_ru, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetDateFormatA(lcid_ru, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_EQA;
STRINGSA("MMMMdd", "");
sprintf(Expected, "%s04", genitive_month);
sprintf(Broken, "%s04", month);
- ret = GetDateFormatA(lcid_ru, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetDateFormatA(lcid_ru, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
ok(strncmp(buffer, Expected, strlen(Expected)) == 0 ||
broken(strncmp(buffer, Broken, strlen(Broken)) == 0) /* nt4 */,
@@ -959,7 +955,7 @@ static void test_GetDateFormatA(void)
STRINGSA("MMMMdd ddd", "");
sprintf(Expected, "%s04 %s", genitive_month, short_day);
sprintf(Broken, "%s04 %s", month, short_day);
- ret = GetDateFormatA(lcid_ru, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetDateFormatA(lcid_ru, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
ok(strncmp(buffer, Expected, strlen(Expected)) == 0 ||
broken(strncmp(buffer, Broken, strlen(Broken)) == 0) /* nt4 */,
@@ -967,14 +963,14 @@ static void test_GetDateFormatA(void)
STRINGSA("dd dddMMMM", "");
sprintf(Expected, "04 %s%s", short_day, month);
- ret = GetDateFormatA(lcid_ru, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetDateFormatA(lcid_ru, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_EQA;
STRINGSA("dd dddMMMM ddd MMMMdd", "");
sprintf(Expected, "04 %s%s %s %s04", short_day, month, short_day, genitive_month);
sprintf(Broken, "04 %s%s %s %s04", short_day, month, short_day, month);
- ret = GetDateFormatA(lcid_ru, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetDateFormatA(lcid_ru, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
ok(strncmp(buffer, Expected, strlen(Expected)) == 0 ||
broken(strncmp(buffer, Broken, strlen(Broken)) == 0) /* nt4 */,
@@ -984,7 +980,7 @@ static void test_GetDateFormatA(void)
STRINGSA("ddd',' MMMM dd", "");
sprintf(Expected, "%s, %s 04", short_day, genitive_month);
sprintf(Broken, "%s, %s 04", short_day, month);
- ret = GetDateFormatA(lcid_ru, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetDateFormatA(lcid_ru, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
ok(strncmp(buffer, Expected, strlen(Expected)) == 0 ||
broken(strncmp(buffer, Broken, strlen(Broken)) == 0) /* nt4 */,
@@ -1005,15 +1001,14 @@ static void test_GetDateFormatEx(void)
STRINGSW("",""); /* If flags are set, then format must be NULL */
SetLastError(0xdeadbeef);
- ret = pGetDateFormatEx(localeW, DATE_LONGDATE, NULL,
- input, buffer, COUNTOF(buffer), NULL);
+ ret = pGetDateFormatEx(localeW, DATE_LONGDATE, NULL, input, buffer, ARRAY_SIZE(buffer), NULL);
ok(!ret && GetLastError() == ERROR_INVALID_FLAGS,
"Expected ERROR_INVALID_FLAGS, got %d\n", GetLastError());
EXPECT_EQW;
STRINGSW("",""); /* NULL buffer, len > 0 */
SetLastError(0xdeadbeef);
- ret = pGetDateFormatEx(localeW, 0, NULL, input, NULL, COUNTOF(buffer), NULL);
+ ret = pGetDateFormatEx(localeW, 0, NULL, input, NULL, ARRAY_SIZE(buffer), NULL);
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
@@ -1039,7 +1034,7 @@ static void test_GetDateFormatEx(void)
curtime.wSecond = 65535; /* Invalid */
curtime.wMilliseconds = 12345;
STRINGSW("dddd d MMMM yyyy","Wednesday 23 October 2002"); /* Incorrect DOW and time */
- ret = pGetDateFormatEx(localeW, 0, &curtime, input, buffer, COUNTOF(buffer), NULL);
+ ret = pGetDateFormatEx(localeW, 0, &curtime, input, buffer, ARRAY_SIZE(buffer), NULL);
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
@@ -1052,7 +1047,7 @@ static void test_GetDateFormatEx(void)
curtime.wSecond = 65535; /* Invalid */
curtime.wMilliseconds = 12345;
STRINGSW("dddd d MMMM yyyy","Wednesday 23 October 2002");
- ret = pGetDateFormatEx(localeW, 0, &curtime, input, buffer, COUNTOF(buffer), emptyW); /* Use reserved arg */
+ ret = pGetDateFormatEx(localeW, 0, &curtime, input, buffer, ARRAY_SIZE(buffer), emptyW); /* Use reserved arg */
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
@@ -1068,7 +1063,7 @@ static void test_GetDateFormatEx(void)
curtime.wMilliseconds = 0;
STRINGSW("dddd d MMMM yyyy","Monday 1 January 1601");
SetLastError(0xdeadbeef);
- ret = pGetDateFormatEx(localeW, 0, &curtime, input, buffer, COUNTOF(buffer), NULL);
+ ret = pGetDateFormatEx(localeW, 0, &curtime, input, buffer, ARRAY_SIZE(buffer), NULL);
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
@@ -1082,7 +1077,7 @@ static void test_GetDateFormatEx(void)
curtime.wMilliseconds = 999;
STRINGSW("dddd d MMMM yyyy","Friday 31 December 1600");
SetLastError(0xdeadbeef);
- ret = pGetDateFormatEx(localeW, 0, &curtime, input, buffer, COUNTOF(buffer), NULL);
+ ret = pGetDateFormatEx(localeW, 0, &curtime, input, buffer, ARRAY_SIZE(buffer), NULL);
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
}
@@ -1095,8 +1090,7 @@ static void test_GetDateFormatW(void)
LCID lcid = MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT);
STRINGSW("",""); /* If flags is not zero then format must be NULL */
- ret = GetDateFormatW(LOCALE_SYSTEM_DEFAULT, DATE_LONGDATE, NULL,
- input, buffer, COUNTOF(buffer));
+ ret = GetDateFormatW(LOCALE_SYSTEM_DEFAULT, DATE_LONGDATE, NULL, input, buffer, ARRAY_SIZE(buffer));
if (GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
{
win_skip("GetDateFormatW is not implemented\n");
@@ -1108,7 +1102,7 @@ static void test_GetDateFormatW(void)
STRINGSW("",""); /* NULL buffer, len > 0 */
SetLastError(0xdeadbeef);
- ret = GetDateFormatW (lcid, 0, NULL, input, NULL, COUNTOF(buffer));
+ ret = GetDateFormatW (lcid, 0, NULL, input, NULL, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
@@ -1126,7 +1120,7 @@ static void test_GetDateFormatW(void)
curtime.wSecond = 65535; /* Invalid */
curtime.wMilliseconds = 12345;
STRINGSW("dddd d MMMM yyyy","Wednesday 23 October 2002"); /* Incorrect DOW and time */
- ret = GetDateFormatW (lcid, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetDateFormatW (lcid, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
@@ -1142,7 +1136,7 @@ static void test_GetDateFormatW(void)
curtime.wMilliseconds = 0;
STRINGSW("dddd d MMMM yyyy","Monday 1 January 1601");
SetLastError(0xdeadbeef);
- ret = GetDateFormatW (lcid, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetDateFormatW (lcid, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
@@ -1156,7 +1150,7 @@ static void test_GetDateFormatW(void)
curtime.wMilliseconds = 999;
STRINGSW("dddd d MMMM yyyy","Friday 31 December 1600");
SetLastError(0xdeadbeef);
- ret = GetDateFormatW (lcid, 0, &curtime, input, buffer, COUNTOF(buffer));
+ ret = GetDateFormatW (lcid, 0, &curtime, input, buffer, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
}
@@ -1181,37 +1175,37 @@ static void test_GetCurrencyFormatA(void)
STRINGSA("23",""); /* NULL output, length > 0 --> Error */
SetLastError(0xdeadbeef);
- ret = GetCurrencyFormatA(lcid, 0, input, NULL, NULL, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, NULL, NULL, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
STRINGSA("23,53",""); /* Invalid character --> Error */
SetLastError(0xdeadbeef);
- ret = GetCurrencyFormatA(lcid, 0, input, NULL, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, NULL, buffer, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
STRINGSA("--",""); /* Double '-' --> Error */
SetLastError(0xdeadbeef);
- ret = GetCurrencyFormatA(lcid, 0, input, NULL, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, NULL, buffer, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
STRINGSA("0-",""); /* Trailing '-' --> Error */
SetLastError(0xdeadbeef);
- ret = GetCurrencyFormatA(lcid, 0, input, NULL, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, NULL, buffer, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
STRINGSA("0..",""); /* Double '.' --> Error */
SetLastError(0xdeadbeef);
- ret = GetCurrencyFormatA(lcid, 0, input, NULL, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, NULL, buffer, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
STRINGSA(" 0.1",""); /* Leading space --> Error */
SetLastError(0xdeadbeef);
- ret = GetCurrencyFormatA(lcid, 0, input, NULL, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, NULL, buffer, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
@@ -1223,39 +1217,39 @@ static void test_GetCurrencyFormatA(void)
STRINGSA("2353",""); /* Format and flags given --> Error */
SetLastError(0xdeadbeef);
- ret = GetCurrencyFormatA(lcid, NUO, input, &format, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, NUO, input, &format, buffer, ARRAY_SIZE(buffer));
ok( !ret, "Expected ret == 0, got %d\n", ret);
ok( GetLastError() == ERROR_INVALID_FLAGS || GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_FLAGS, got %d\n", GetLastError());
STRINGSA("2353",""); /* Invalid format --> Error */
SetLastError(0xdeadbeef);
- ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
STRINGSA("2353","$2,353.00"); /* Valid number */
- ret = GetCurrencyFormatA(lcid, NUO, input, NULL, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, NUO, input, NULL, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
STRINGSA("-2353","($2,353.00)"); /* Valid negative number */
- ret = GetCurrencyFormatA(lcid, NUO, input, NULL, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, NUO, input, NULL, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
STRINGSA("2353.1","$2,353.10"); /* Valid real number */
- ret = GetCurrencyFormatA(lcid, NUO, input, NULL, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, NUO, input, NULL, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
STRINGSA("2353.111","$2,353.11"); /* Too many DP --> Truncated */
- ret = GetCurrencyFormatA(lcid, NUO, input, NULL, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, NUO, input, NULL, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
STRINGSA("2353.119","$2,353.12"); /* Too many DP --> Rounded */
- ret = GetCurrencyFormatA(lcid, NUO, input, NULL, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, NUO, input, NULL, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
@@ -1269,151 +1263,151 @@ static void test_GetCurrencyFormatA(void)
format.lpCurrencySymbol = szDollar;
STRINGSA("2353","$2353"); /* No decimal or grouping chars expected */
- ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.NumDigits = 1; /* 1 DP --> Expect decimal separator */
STRINGSA("2353","$2353.0");
- ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.Grouping = 2; /* Group by 100's */
STRINGSA("2353","$23,53.0");
- ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
STRINGSA("235","$235.0"); /* Grouping of a positive number */
format.Grouping = 3;
- ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
STRINGSA("-235","$-235.0"); /* Grouping of a negative number */
format.NegativeOrder = 2;
- ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.LeadingZero = 1; /* Always provide leading zero */
STRINGSA(".5","$0.5");
- ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.PositiveOrder = CY_POS_RIGHT;
STRINGSA("1","1.0$");
- ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.PositiveOrder = CY_POS_LEFT_SPACE;
STRINGSA("1","$ 1.0");
- ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.PositiveOrder = CY_POS_RIGHT_SPACE;
STRINGSA("1","1.0 $");
- ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.NegativeOrder = 0;
STRINGSA("-1","($1.0)");
- ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.NegativeOrder = 1;
STRINGSA("-1","-$1.0");
- ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.NegativeOrder = 2;
STRINGSA("-1","$-1.0");
- ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.NegativeOrder = 3;
STRINGSA("-1","$1.0-");
- ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.NegativeOrder = 4;
STRINGSA("-1","(1.0$)");
- ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.NegativeOrder = 5;
STRINGSA("-1","-1.0$");
- ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.NegativeOrder = 6;
STRINGSA("-1","1.0-$");
- ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.NegativeOrder = 7;
STRINGSA("-1","1.0$-");
- ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.NegativeOrder = 8;
STRINGSA("-1","-1.0 $");
- ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.NegativeOrder = 9;
STRINGSA("-1","-$ 1.0");
- ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.NegativeOrder = 10;
STRINGSA("-1","1.0 $-");
- ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.NegativeOrder = 11;
STRINGSA("-1","$ 1.0-");
- ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.NegativeOrder = 12;
STRINGSA("-1","$ -1.0");
- ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.NegativeOrder = 13;
STRINGSA("-1","1.0- $");
- ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.NegativeOrder = 14;
STRINGSA("-1","($ 1.0)");
- ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.NegativeOrder = 15;
STRINGSA("-1","(1.0 $)");
- ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
}
@@ -1437,37 +1431,37 @@ static void test_GetNumberFormatA(void)
STRINGSA("23",""); /* NULL output, length > 0 --> Error */
SetLastError(0xdeadbeef);
- ret = GetNumberFormatA(lcid, 0, input, NULL, NULL, COUNTOF(buffer));
+ ret = GetNumberFormatA(lcid, 0, input, NULL, NULL, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
STRINGSA("23,53",""); /* Invalid character --> Error */
SetLastError(0xdeadbeef);
- ret = GetNumberFormatA(lcid, 0, input, NULL, buffer, COUNTOF(buffer));
+ ret = GetNumberFormatA(lcid, 0, input, NULL, buffer, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
STRINGSA("--",""); /* Double '-' --> Error */
SetLastError(0xdeadbeef);
- ret = GetNumberFormatA(lcid, 0, input, NULL, buffer, COUNTOF(buffer));
+ ret = GetNumberFormatA(lcid, 0, input, NULL, buffer, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
STRINGSA("0-",""); /* Trailing '-' --> Error */
SetLastError(0xdeadbeef);
- ret = GetNumberFormatA(lcid, 0, input, NULL, buffer, COUNTOF(buffer));
+ ret = GetNumberFormatA(lcid, 0, input, NULL, buffer, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
STRINGSA("0..",""); /* Double '.' --> Error */
SetLastError(0xdeadbeef);
- ret = GetNumberFormatA(lcid, 0, input, NULL, buffer, COUNTOF(buffer));
+ ret = GetNumberFormatA(lcid, 0, input, NULL, buffer, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
STRINGSA(" 0.1",""); /* Leading space --> Error */
SetLastError(0xdeadbeef);
- ret = GetNumberFormatA(lcid, 0, input, NULL, buffer, COUNTOF(buffer));
+ ret = GetNumberFormatA(lcid, 0, input, NULL, buffer, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
@@ -1479,44 +1473,44 @@ static void test_GetNumberFormatA(void)
STRINGSA("2353",""); /* Format and flags given --> Error */
SetLastError(0xdeadbeef);
- ret = GetNumberFormatA(lcid, NUO, input, &format, buffer, COUNTOF(buffer));
+ ret = GetNumberFormatA(lcid, NUO, input, &format, buffer, ARRAY_SIZE(buffer));
ok( !ret, "Expected ret == 0, got %d\n", ret);
ok( GetLastError() == ERROR_INVALID_FLAGS || GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_FLAGS, got %d\n", GetLastError());
STRINGSA("2353",""); /* Invalid format --> Error */
SetLastError(0xdeadbeef);
- ret = GetNumberFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetNumberFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
STRINGSA("2353","2,353.00"); /* Valid number */
- ret = GetNumberFormatA(lcid, NUO, input, NULL, buffer, COUNTOF(buffer));
+ ret = GetNumberFormatA(lcid, NUO, input, NULL, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
STRINGSA("-2353","-2,353.00"); /* Valid negative number */
- ret = GetNumberFormatA(lcid, NUO, input, NULL, buffer, COUNTOF(buffer));
+ ret = GetNumberFormatA(lcid, NUO, input, NULL, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
STRINGSA("-353","-353.00"); /* test for off by one error in grouping */
- ret = GetNumberFormatA(lcid, NUO, input, NULL, buffer, COUNTOF(buffer));
+ ret = GetNumberFormatA(lcid, NUO, input, NULL, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
STRINGSA("2353.1","2,353.10"); /* Valid real number */
- ret = GetNumberFormatA(lcid, NUO, input, NULL, buffer, COUNTOF(buffer));
+ ret = GetNumberFormatA(lcid, NUO, input, NULL, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
STRINGSA("2353.111","2,353.11"); /* Too many DP --> Truncated */
- ret = GetNumberFormatA(lcid, NUO, input, NULL, buffer, COUNTOF(buffer));
+ ret = GetNumberFormatA(lcid, NUO, input, NULL, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
STRINGSA("2353.119","2,353.12"); /* Too many DP --> Rounded */
- ret = GetNumberFormatA(lcid, NUO, input, NULL, buffer, COUNTOF(buffer));
+ ret = GetNumberFormatA(lcid, NUO, input, NULL, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
@@ -1528,67 +1522,67 @@ static void test_GetNumberFormatA(void)
format.lpThousandSep = szComma;
STRINGSA("2353","2353"); /* No decimal or grouping chars expected */
- ret = GetNumberFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetNumberFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.NumDigits = 1; /* 1 DP --> Expect decimal separator */
STRINGSA("2353","2353.0");
- ret = GetNumberFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetNumberFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.Grouping = 2; /* Group by 100's */
STRINGSA("2353","23,53.0");
- ret = GetNumberFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetNumberFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
STRINGSA("235","235.0"); /* Grouping of a positive number */
format.Grouping = 3;
- ret = GetNumberFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetNumberFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
STRINGSA("-235","-235.0"); /* Grouping of a negative number */
format.NegativeOrder = NEG_LEFT;
- ret = GetNumberFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetNumberFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.LeadingZero = 1; /* Always provide leading zero */
STRINGSA(".5","0.5");
- ret = GetNumberFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetNumberFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.NegativeOrder = NEG_PARENS;
STRINGSA("-1","(1.0)");
- ret = GetNumberFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetNumberFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.NegativeOrder = NEG_LEFT;
STRINGSA("-1","-1.0");
- ret = GetNumberFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetNumberFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.NegativeOrder = NEG_LEFT_SPACE;
STRINGSA("-1","- 1.0");
- ret = GetNumberFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetNumberFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.NegativeOrder = NEG_RIGHT;
STRINGSA("-1","1.0-");
- ret = GetNumberFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetNumberFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
format.NegativeOrder = NEG_RIGHT_SPACE;
STRINGSA("-1","1.0 -");
- ret = GetNumberFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = GetNumberFormatA(lcid, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
@@ -1598,7 +1592,7 @@ static void test_GetNumberFormatA(void)
{
STRINGSA("-12345","-12 345,00"); /* Try French formatting */
Expected[3] = 160; /* Non breaking space */
- ret = GetNumberFormatA(lcid, NUO, input, NULL, buffer, COUNTOF(buffer));
+ ret = GetNumberFormatA(lcid, NUO, input, NULL, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENA; EXPECT_EQA;
}
@@ -1622,32 +1616,32 @@ static void test_GetNumberFormatEx(void)
}
STRINGSW("23",""); /* NULL output, length > 0 --> Error */
- ret = pGetNumberFormatEx(enW, 0, input, NULL, NULL, COUNTOF(buffer));
+ ret = pGetNumberFormatEx(enW, 0, input, NULL, NULL, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
STRINGSW("23,53",""); /* Invalid character --> Error */
- ret = pGetNumberFormatEx(enW, 0, input, NULL, buffer, COUNTOF(buffer));
+ ret = pGetNumberFormatEx(enW, 0, input, NULL, buffer, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
STRINGSW("--",""); /* Double '-' --> Error */
- ret = pGetNumberFormatEx(enW, 0, input, NULL, buffer, COUNTOF(buffer));
+ ret = pGetNumberFormatEx(enW, 0, input, NULL, buffer, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
STRINGSW("0-",""); /* Trailing '-' --> Error */
- ret = pGetNumberFormatEx(enW, 0, input, NULL, buffer, COUNTOF(buffer));
+ ret = pGetNumberFormatEx(enW, 0, input, NULL, buffer, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
STRINGSW("0..",""); /* Double '.' --> Error */
- ret = pGetNumberFormatEx(enW, 0, input, NULL, buffer, COUNTOF(buffer));
+ ret = pGetNumberFormatEx(enW, 0, input, NULL, buffer, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
STRINGSW(" 0.1",""); /* Leading space --> Error */
- ret = pGetNumberFormatEx(enW, 0, input, NULL, buffer, COUNTOF(buffer));
+ ret = pGetNumberFormatEx(enW, 0, input, NULL, buffer, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
@@ -1657,50 +1651,50 @@ static void test_GetNumberFormatEx(void)
"Expected ERROR_INSUFFICIENT_BUFFER, got %d\n", GetLastError());
STRINGSW("23",""); /* Bogus locale --> Error */
- ret = pGetNumberFormatEx(bogusW, NUO, input, NULL, buffer, COUNTOF(buffer));
+ ret = pGetNumberFormatEx(bogusW, NUO, input, NULL, buffer, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
memset(&format, 0, sizeof(format));
STRINGSW("2353",""); /* Format and flags given --> Error */
- ret = pGetNumberFormatEx(enW, NUO, input, &format, buffer, COUNTOF(buffer));
+ ret = pGetNumberFormatEx(enW, NUO, input, &format, buffer, ARRAY_SIZE(buffer));
ok( !ret, "Expected ret == 0, got %d\n", ret);
ok( GetLastError() == ERROR_INVALID_FLAGS || GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_FLAGS, got %d\n", GetLastError());
STRINGSW("2353",""); /* Invalid format --> Error */
- ret = pGetNumberFormatEx(enW, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = pGetNumberFormatEx(enW, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok( !ret && GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
STRINGSW("2353","2,353.00"); /* Valid number */
- ret = pGetNumberFormatEx(enW, NUO, input, NULL, buffer, COUNTOF(buffer));
+ ret = pGetNumberFormatEx(enW, NUO, input, NULL, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
STRINGSW("-2353","-2,353.00"); /* Valid negative number */
- ret = pGetNumberFormatEx(enW, NUO, input, NULL, buffer, COUNTOF(buffer));
+ ret = pGetNumberFormatEx(enW, NUO, input, NULL, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
STRINGSW("-353","-353.00"); /* test for off by one error in grouping */
- ret = pGetNumberFormatEx(enW, NUO, input, NULL, buffer, COUNTOF(buffer));
+ ret = pGetNumberFormatEx(enW, NUO, input, NULL, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
STRINGSW("2353.1","2,353.10"); /* Valid real number */
- ret = pGetNumberFormatEx(enW, NUO, input, NULL, buffer, COUNTOF(buffer));
+ ret = pGetNumberFormatEx(enW, NUO, input, NULL, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
STRINGSW("2353.111","2,353.11"); /* Too many DP --> Truncated */
- ret = pGetNumberFormatEx(enW, NUO, input, NULL, buffer, COUNTOF(buffer));
+ ret = pGetNumberFormatEx(enW, NUO, input, NULL, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
STRINGSW("2353.119","2,353.12"); /* Too many DP --> Rounded */
- ret = pGetNumberFormatEx(enW, NUO, input, NULL, buffer, COUNTOF(buffer));
+ ret = pGetNumberFormatEx(enW, NUO, input, NULL, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
@@ -1712,67 +1706,67 @@ static void test_GetNumberFormatEx(void)
format.lpThousandSep = commaW;
STRINGSW("2353","2353"); /* No decimal or grouping chars expected */
- ret = pGetNumberFormatEx(enW, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = pGetNumberFormatEx(enW, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
format.NumDigits = 1; /* 1 DP --> Expect decimal separator */
STRINGSW("2353","2353.0");
- ret = pGetNumberFormatEx(enW, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = pGetNumberFormatEx(enW, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
format.Grouping = 2; /* Group by 100's */
STRINGSW("2353","23,53.0");
- ret = pGetNumberFormatEx(enW, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = pGetNumberFormatEx(enW, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
STRINGSW("235","235.0"); /* Grouping of a positive number */
format.Grouping = 3;
- ret = pGetNumberFormatEx(enW, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = pGetNumberFormatEx(enW, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
STRINGSW("-235","-235.0"); /* Grouping of a negative number */
format.NegativeOrder = NEG_LEFT;
- ret = pGetNumberFormatEx(enW, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = pGetNumberFormatEx(enW, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
format.LeadingZero = 1; /* Always provide leading zero */
STRINGSW(".5","0.5");
- ret = pGetNumberFormatEx(enW, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = pGetNumberFormatEx(enW, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
format.NegativeOrder = NEG_PARENS;
STRINGSW("-1","(1.0)");
- ret = pGetNumberFormatEx(enW, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = pGetNumberFormatEx(enW, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
format.NegativeOrder = NEG_LEFT;
STRINGSW("-1","-1.0");
- ret = pGetNumberFormatEx(enW, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = pGetNumberFormatEx(enW, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
format.NegativeOrder = NEG_LEFT_SPACE;
STRINGSW("-1","- 1.0");
- ret = pGetNumberFormatEx(enW, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = pGetNumberFormatEx(enW, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
format.NegativeOrder = NEG_RIGHT;
STRINGSW("-1","1.0-");
- ret = pGetNumberFormatEx(enW, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = pGetNumberFormatEx(enW, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
format.NegativeOrder = NEG_RIGHT_SPACE;
STRINGSW("-1","1.0 -");
- ret = pGetNumberFormatEx(enW, 0, input, &format, buffer, COUNTOF(buffer));
+ ret = pGetNumberFormatEx(enW, 0, input, &format, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
@@ -1780,7 +1774,7 @@ static void test_GetNumberFormatEx(void)
{
STRINGSW("-12345","-12 345,00"); /* Try French formatting */
Expected[3] = 160; /* Non breaking space */
- ret = pGetNumberFormatEx(frW, NUO, input, NULL, buffer, COUNTOF(buffer));
+ ret = pGetNumberFormatEx(frW, NUO, input, NULL, buffer, ARRAY_SIZE(buffer));
ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError());
EXPECT_LENW; EXPECT_EQW;
}
@@ -1849,7 +1843,7 @@ static void test_CompareStringA(void)
char a[256];
LCID lcid = MAKELCID(MAKELANGID(LANG_FRENCH, SUBLANG_DEFAULT), SORT_DEFAULT);
- for (i = 0; i < sizeof(comparestringa_data)/sizeof(struct comparestringa_entry); i++)
+ for (i = 0; i < ARRAY_SIZE(comparestringa_data); i++)
{
const struct comparestringa_entry *entry = &comparestringa_data[i];
@@ -2194,11 +2188,11 @@ static void test_CompareStringEx(void)
return;
}
- for (i = 0; i < sizeof(comparestringex_tests)/sizeof(comparestringex_tests[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(comparestringex_tests); i++)
{
const struct comparestringex_test *e = &comparestringex_tests[i];
- MultiByteToWideChar(CP_ACP, 0, e->locale, -1, locale, sizeof(locale)/sizeof(WCHAR));
+ MultiByteToWideChar(CP_ACP, 0, e->locale, -1, locale, ARRAY_SIZE(locale));
ret = pCompareStringEx(locale, e->flags, e->first, -1, e->second, -1, NULL, NULL, 0);
todo_wine_if (e->todo)
ok(ret == e->ret || broken(ret == e->broken),
@@ -2258,7 +2252,7 @@ static void test_LCMapStringA(void)
"unexpected error code %d\n", GetLastError());
/* test invalid flag combinations */
- for (i = 0; i < sizeof(lcmap_invalid_flags)/sizeof(lcmap_invalid_flags[0]); i++) {
+ for (i = 0; i < ARRAY_SIZE(lcmap_invalid_flags); i++) {
lstrcpyA(buf, "foo");
SetLastError(0xdeadbeef);
ret = LCMapStringA(LOCALE_USER_DEFAULT, lcmap_invalid_flags[i],
@@ -2420,8 +2414,7 @@ static void test_lcmapstring_unicode(lcmapstring_wrapper func_ptr, const char *f
char *p_buf = (char *)buf, *p_buf2 = (char *)buf2;
/* LCMAP_LOWERCASE | LCMAP_UPPERCASE makes LCMAP_TITLECASE, so it's valid now. */
- ret = func_ptr(LCMAP_LOWERCASE | LCMAP_UPPERCASE,
- lower_case, -1, buf, sizeof(buf)/sizeof(WCHAR));
+ ret = func_ptr(LCMAP_LOWERCASE | LCMAP_UPPERCASE, lower_case, -1, buf, ARRAY_SIZE(buf));
todo_wine ok(ret == lstrlenW(title_case) + 1 || broken(!ret),
"%s ret %d, error %d, expected value %d\n", func_name,
ret, GetLastError(), lstrlenW(title_case) + 1);
@@ -2429,7 +2422,7 @@ static void test_lcmapstring_unicode(lcmapstring_wrapper func_ptr, const char *f
"Expected title case string\n");
/* test invalid flag combinations */
- for (i = 0; i < sizeof(lcmap_invalid_flags)/sizeof(lcmap_invalid_flags[0]); i++) {
+ for (i = 0; i < ARRAY_SIZE(lcmap_invalid_flags); i++) {
lstrcpyW(buf, fooW);
SetLastError(0xdeadbeef);
ret = func_ptr(lcmap_invalid_flags[i],
@@ -2442,22 +2435,19 @@ static void test_lcmapstring_unicode(lcmapstring_wrapper func_ptr, const char *f
}
/* test LCMAP_LOWERCASE */
- ret = func_ptr(LCMAP_LOWERCASE,
- upper_case, -1, buf, sizeof(buf)/sizeof(WCHAR));
+ ret = func_ptr(LCMAP_LOWERCASE, upper_case, -1, buf, ARRAY_SIZE(buf));
ok(ret == lstrlenW(upper_case) + 1, "%s ret %d, error %d, expected value %d\n", func_name,
ret, GetLastError(), lstrlenW(upper_case) + 1);
ok(!lstrcmpW(buf, lower_case), "%s string compare mismatch\n", func_name);
/* test LCMAP_UPPERCASE */
- ret = func_ptr(LCMAP_UPPERCASE,
- lower_case, -1, buf, sizeof(buf)/sizeof(WCHAR));
+ ret = func_ptr(LCMAP_UPPERCASE, lower_case, -1, buf, ARRAY_SIZE(buf));
ok(ret == lstrlenW(lower_case) + 1, "%s ret %d, error %d, expected value %d\n", func_name,
ret, GetLastError(), lstrlenW(lower_case) + 1);
ok(!lstrcmpW(buf, upper_case), "%s string compare mismatch\n", func_name);
/* test LCMAP_HIRAGANA */
- ret = func_ptr(LCMAP_HIRAGANA,
- japanese_text, -1, buf, sizeof(buf)/sizeof(WCHAR));
+ ret = func_ptr(LCMAP_HIRAGANA, japanese_text, -1, buf, ARRAY_SIZE(buf));
ok(ret == lstrlenW(hiragana_text) + 1, "%s ret %d, error %d, expected value %d\n", func_name,
ret, GetLastError(), lstrlenW(hiragana_text) + 1);
ok(!lstrcmpW(buf, hiragana_text), "%s string compare mismatch\n", func_name);
@@ -2471,15 +2461,13 @@ static void test_lcmapstring_unicode(lcmapstring_wrapper func_ptr, const char *f
"%s expected %04x, got %04x\n", func_name, 0x3095, buf2[0]);
/* test LCMAP_KATAKANA | LCMAP_LOWERCASE */
- ret = func_ptr(LCMAP_KATAKANA | LCMAP_LOWERCASE,
- japanese_text, -1, buf, sizeof(buf)/sizeof(WCHAR));
+ ret = func_ptr(LCMAP_KATAKANA | LCMAP_LOWERCASE, japanese_text, -1, buf, ARRAY_SIZE(buf));
ok(ret == lstrlenW(katakana_text) + 1, "%s ret %d, error %d, expected value %d\n", func_name,
ret, GetLastError(), lstrlenW(katakana_text) + 1);
ok(!lstrcmpW(buf, katakana_text), "%s string compare mismatch\n", func_name);
/* test LCMAP_FULLWIDTH */
- ret = func_ptr(LCMAP_FULLWIDTH,
- halfwidth_text, -1, buf, sizeof(buf)/sizeof(WCHAR));
+ ret = func_ptr(LCMAP_FULLWIDTH, halfwidth_text, -1, buf, ARRAY_SIZE(buf));
ok(ret == lstrlenW(japanese_text) + 1, "%s ret %d, error %d, expected value %d\n", func_name,
ret, GetLastError(), lstrlenW(japanese_text) + 1);
ok(!lstrcmpW(buf, japanese_text), "%s string compare mismatch\n", func_name);
@@ -2489,8 +2477,7 @@ static void test_lcmapstring_unicode(lcmapstring_wrapper func_ptr, const char *f
/* test LCMAP_FULLWIDTH | LCMAP_HIRAGANA
(half-width katakana is converted into full-width hiragana) */
- ret = func_ptr(LCMAP_FULLWIDTH | LCMAP_HIRAGANA,
- halfwidth_text, -1, buf, sizeof(buf)/sizeof(WCHAR));
+ ret = func_ptr(LCMAP_FULLWIDTH | LCMAP_HIRAGANA, halfwidth_text, -1, buf, ARRAY_SIZE(buf));
ok(ret == lstrlenW(hiragana_text) + 1, "%s ret %d, error %d, expected value %d\n", func_name,
ret, GetLastError(), lstrlenW(hiragana_text) + 1);
ok(!lstrcmpW(buf, hiragana_text), "%s string compare mismatch\n", func_name);
@@ -2499,8 +2486,7 @@ static void test_lcmapstring_unicode(lcmapstring_wrapper func_ptr, const char *f
ok(ret == ret2, "%s ret %d, expected value %d\n", func_name, ret, ret2);
/* test LCMAP_HALFWIDTH */
- ret = func_ptr(LCMAP_HALFWIDTH,
- japanese_text, -1, buf, sizeof(buf)/sizeof(WCHAR));
+ ret = func_ptr(LCMAP_HALFWIDTH, japanese_text, -1, buf, ARRAY_SIZE(buf));
ok(ret == lstrlenW(halfwidth_text) + 1, "%s ret %d, error %d, expected value %d\n", func_name,
ret, GetLastError(), lstrlenW(halfwidth_text) + 1);
ok(!lstrcmpW(buf, halfwidth_text), "%s string compare mismatch\n", func_name);
@@ -2525,15 +2511,13 @@ static void test_lcmapstring_unicode(lcmapstring_wrapper func_ptr, const char *f
/* LCMAP_UPPERCASE or LCMAP_LOWERCASE should accept src == dst */
lstrcpyW(buf, lower_case);
- ret = func_ptr(LCMAP_UPPERCASE,
- buf, -1, buf, sizeof(buf)/sizeof(WCHAR));
+ ret = func_ptr(LCMAP_UPPERCASE, buf, -1, buf, ARRAY_SIZE(buf));
ok(ret == lstrlenW(lower_case) + 1, "%s ret %d, error %d, expected value %d\n", func_name,
ret, GetLastError(), lstrlenW(lower_case) + 1);
ok(!lstrcmpW(buf, upper_case), "%s string compare mismatch\n", func_name);
lstrcpyW(buf, upper_case);
- ret = func_ptr(LCMAP_LOWERCASE,
- buf, -1, buf, sizeof(buf)/sizeof(WCHAR));
+ ret = func_ptr(LCMAP_LOWERCASE, buf, -1, buf, ARRAY_SIZE(buf));
ok(ret == lstrlenW(upper_case) + 1, "%s ret %d, error %d, expected value %d\n", func_name,
ret, GetLastError(), lstrlenW(lower_case) + 1);
ok(!lstrcmpW(buf, lower_case), "%s string compare mismatch\n", func_name);
@@ -2582,31 +2566,28 @@ static void test_lcmapstring_unicode(lcmapstring_wrapper func_ptr, const char *f
/* test NORM_IGNORENONSPACE */
lstrcpyW(buf, fooW);
- ret = func_ptr(NORM_IGNORENONSPACE,
- lower_case, -1, buf, sizeof(buf)/sizeof(WCHAR));
+ ret = func_ptr(NORM_IGNORENONSPACE, lower_case, -1, buf, ARRAY_SIZE(buf));
ok(ret == lstrlenW(lower_case) + 1, "%s func_ptr should return %d, ret = %d\n", func_name,
lstrlenW(lower_case) + 1, ret);
ok(!lstrcmpW(buf, lower_case), "%s string comparison mismatch\n", func_name);
/* test NORM_IGNORESYMBOLS */
lstrcpyW(buf, fooW);
- ret = func_ptr(NORM_IGNORESYMBOLS,
- lower_case, -1, buf, sizeof(buf)/sizeof(WCHAR));
+ ret = func_ptr(NORM_IGNORESYMBOLS, lower_case, -1, buf, ARRAY_SIZE(buf));
ok(ret == lstrlenW(symbols_stripped) + 1, "%s func_ptr should return %d, ret = %d\n", func_name,
lstrlenW(symbols_stripped) + 1, ret);
ok(!lstrcmpW(buf, symbols_stripped), "%s string comparison mismatch\n", func_name);
/* test NORM_IGNORESYMBOLS | NORM_IGNORENONSPACE */
lstrcpyW(buf, fooW);
- ret = func_ptr(NORM_IGNORESYMBOLS | NORM_IGNORENONSPACE,
- lower_case, -1, buf, sizeof(buf)/sizeof(WCHAR));
+ ret = func_ptr(NORM_IGNORESYMBOLS | NORM_IGNORENONSPACE, lower_case, -1, buf, ARRAY_SIZE(buf));
ok(ret == lstrlenW(symbols_stripped) + 1, "%s func_ptr should return %d, ret = %d\n", func_name,
lstrlenW(symbols_stripped) + 1, ret);
ok(!lstrcmpW(buf, symbols_stripped), "%s string comparison mismatch\n", func_name);
/* test srclen = 0 */
SetLastError(0xdeadbeef);
- ret = func_ptr(0, upper_case, 0, buf, sizeof(buf)/sizeof(WCHAR));
+ ret = func_ptr(0, upper_case, 0, buf, ARRAY_SIZE(buf));
ok(!ret, "%s func_ptr should fail with srclen = 0\n", func_name);
ok(GetLastError() == ERROR_INVALID_PARAMETER,
"%s unexpected error code %d\n", func_name, GetLastError());
@@ -2625,7 +2606,7 @@ static void test_LCMapStringW(void)
trace("testing LCMapStringW\n");
SetLastError(0xdeadbeef);
- ret = LCMapStringW((LCID)-1, LCMAP_LOWERCASE, upper_case, -1, buf, sizeof(buf)/sizeof(WCHAR));
+ ret = LCMapStringW((LCID)-1, LCMAP_LOWERCASE, upper_case, -1, buf, ARRAY_SIZE(buf));
todo_wine {
ok(!ret, "LCMapStringW should fail with bad lcid\n");
ok(GetLastError() == ERROR_INVALID_PARAMETER, "unexpected error code %d\n", GetLastError());
@@ -2654,7 +2635,7 @@ static void test_LCMapStringEx(void)
SetLastError(0xdeadbeef);
ret = pLCMapStringEx(invalidW, LCMAP_LOWERCASE,
- upper_case, -1, buf, sizeof(buf)/sizeof(WCHAR), NULL, NULL, 0);
+ upper_case, -1, buf, ARRAY_SIZE(buf), NULL, NULL, 0);
todo_wine {
ok(!ret, "LCMapStringEx should fail with bad locale name\n");
ok(GetLastError() == ERROR_INVALID_PARAMETER, "unexpected error code %d\n", GetLastError());
@@ -2662,13 +2643,13 @@ static void test_LCMapStringEx(void)
/* test reserved parameters */
ret = pLCMapStringEx(LOCALE_NAME_USER_DEFAULT, LCMAP_LOWERCASE,
- upper_case, -1, buf, sizeof(buf)/sizeof(WCHAR), NULL, NULL, 1);
+ upper_case, -1, buf, ARRAY_SIZE(buf), NULL, NULL, 1);
ok(ret == lstrlenW(upper_case) + 1, "ret %d, error %d, expected value %d\n",
ret, GetLastError(), lstrlenW(upper_case) + 1);
ok(!lstrcmpW(buf, lower_case), "string compare mismatch\n");
ret = pLCMapStringEx(LOCALE_NAME_USER_DEFAULT, LCMAP_LOWERCASE,
- upper_case, -1, buf, sizeof(buf)/sizeof(WCHAR), NULL, (void*)1, 0);
+ upper_case, -1, buf, ARRAY_SIZE(buf), NULL, (void*)1, 0);
ok(ret == lstrlenW(upper_case) + 1, "ret %d, error %d, expected value %d\n",
ret, GetLastError(), lstrlenW(upper_case) + 1);
ok(!lstrcmpW(buf, lower_case), "string compare mismatch\n");
@@ -2676,7 +2657,7 @@ static void test_LCMapStringEx(void)
/* crashes on native */
if(0)
ret = pLCMapStringEx(LOCALE_NAME_USER_DEFAULT, LCMAP_LOWERCASE,
- upper_case, -1, buf, sizeof(buf)/sizeof(WCHAR), (void*)1, NULL, 0);
+ upper_case, -1, buf, ARRAY_SIZE(buf), (void*)1, NULL, 0);
test_lcmapstring_unicode(LCMapStringEx_wrapper, "LCMapStringEx:");
}
@@ -2779,7 +2760,7 @@ static void test_LocaleNameToLCID(void)
wine_dbgstr_w(ptr->name), lcid, ptr->lcid);
*buffer = 0;
- ret = pLCIDToLocaleName(lcid, buffer, sizeof(buffer)/sizeof(WCHAR), 0);
+ ret = pLCIDToLocaleName(lcid, buffer, ARRAY_SIZE(buffer), 0);
ok(ret > 0, "%s: got %d\n", wine_dbgstr_w(ptr->name), ret);
ok(!lstrcmpW(ptr->sname, buffer), "%s: got wrong locale name %s\n",
wine_dbgstr_w(ptr->name), wine_dbgstr_w(buffer));
@@ -2791,12 +2772,13 @@ static void test_LocaleNameToLCID(void)
lcid = pLocaleNameToLCID(zhHantW, 0);
ok(lcid == MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_HONGKONG), SORT_DEFAULT),
"%s: got wrong lcid 0x%04x\n", wine_dbgstr_w(zhHantW), lcid);
- ret = pLCIDToLocaleName(lcid, buffer, sizeof(buffer)/sizeof(WCHAR), 0);
+ ret = pLCIDToLocaleName(lcid, buffer, ARRAY_SIZE(buffer), 0);
ok(ret > 0, "%s: got %d\n", wine_dbgstr_w(zhHantW), ret);
ok(!lstrcmpW(zhhkW, buffer), "%s: got wrong locale name %s\n",
wine_dbgstr_w(zhHantW), wine_dbgstr_w(buffer));
/* check that 0x7c04 also works and is mapped to zh-HK */
- ret = pLCIDToLocaleName(MAKELANGID(LANG_CHINESE_TRADITIONAL, SUBLANG_CHINESE_TRADITIONAL), buffer, sizeof(buffer)/sizeof(WCHAR), 0);
+ ret = pLCIDToLocaleName(MAKELANGID(LANG_CHINESE_TRADITIONAL, SUBLANG_CHINESE_TRADITIONAL),
+ buffer, ARRAY_SIZE(buffer), 0);
todo_wine ok(ret > 0, "%s: got %d\n", wine_dbgstr_w(zhHantW), ret);
ok(!lstrcmpW(zhhkW, buffer), "%s: got wrong locale name %s\n",
wine_dbgstr_w(zhHantW), wine_dbgstr_w(buffer));
@@ -2805,7 +2787,7 @@ static void test_LocaleNameToLCID(void)
lcid = pLocaleNameToLCID(zhhantW, 0);
ok(lcid == MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_HONGKONG), SORT_DEFAULT),
"%s: got wrong lcid 0x%04x\n", wine_dbgstr_w(zhhantW), lcid);
- ret = pLCIDToLocaleName(lcid, buffer, sizeof(buffer)/sizeof(WCHAR), 0);
+ ret = pLCIDToLocaleName(lcid, buffer, ARRAY_SIZE(buffer), 0);
ok(ret > 0, "%s: got %d\n", wine_dbgstr_w(zhhantW), ret);
ok(!lstrcmpW(zhhkW, buffer), "%s: got wrong locale name %s\n",
wine_dbgstr_w(zhhantW), wine_dbgstr_w(buffer));
@@ -2815,12 +2797,12 @@ static void test_LocaleNameToLCID(void)
/* check that LocaleNameToLCID actually returns 0x0804 */
ok(lcid == MAKELCID(MAKELANGID(LANG_CHINESE_SIMPLIFIED, SUBLANG_CHINESE_SIMPLIFIED), SORT_DEFAULT),
"%s: got wrong lcid 0x%04x\n", wine_dbgstr_w(zhHansW), lcid);
- ret = pLCIDToLocaleName(lcid, buffer, sizeof(buffer)/sizeof(WCHAR), 0);
+ ret = pLCIDToLocaleName(lcid, buffer, ARRAY_SIZE(buffer), 0);
ok(ret > 0, "%s: got %d\n", wine_dbgstr_w(zhHansW), ret);
ok(!lstrcmpW(zhcnW, buffer), "%s: got wrong locale name %s\n",
wine_dbgstr_w(zhHansW), wine_dbgstr_w(buffer));
/* check that 0x0004 also works and is mapped to zh-CN */
- ret = pLCIDToLocaleName(MAKELANGID(LANG_CHINESE, SUBLANG_NEUTRAL), buffer, sizeof(buffer)/sizeof(WCHAR), 0);
+ ret = pLCIDToLocaleName(MAKELANGID(LANG_CHINESE, SUBLANG_NEUTRAL), buffer, ARRAY_SIZE(buffer), 0);
ok(ret > 0, "%s: got %d\n", wine_dbgstr_w(zhHansW), ret);
ok(!lstrcmpW(zhcnW, buffer), "%s: got wrong locale name %s\n",
wine_dbgstr_w(zhHansW), wine_dbgstr_w(buffer));
@@ -2829,7 +2811,7 @@ static void test_LocaleNameToLCID(void)
lcid = pLocaleNameToLCID(zhhansW, 0);
ok(lcid == MAKELCID(MAKELANGID(LANG_CHINESE_SIMPLIFIED, SUBLANG_CHINESE_SIMPLIFIED), SORT_DEFAULT),
"%s: got wrong lcid 0x%04x\n", wine_dbgstr_w(zhhansW), lcid);
- ret = pLCIDToLocaleName(lcid, buffer, sizeof(buffer)/sizeof(WCHAR), 0);
+ ret = pLCIDToLocaleName(lcid, buffer, ARRAY_SIZE(buffer), 0);
ok(ret > 0, "%s: got %d\n", wine_dbgstr_w(zhhansW), ret);
ok(!lstrcmpW(zhcnW, buffer), "%s: got wrong locale name %s\n",
wine_dbgstr_w(zhhansW), wine_dbgstr_w(buffer));
@@ -2938,24 +2920,24 @@ static void test_sorting(void)
/* 1. sort using lstrcmpA */
memcpy(buf, strings, sizeof(strings));
- qsort(buf, sizeof(strings)/sizeof(strings[0]), sizeof(strings[0]), compare_string1);
- for (i = 0; i < sizeof(strings)/sizeof(strings[0]); i++)
+ qsort(buf, ARRAY_SIZE(strings), sizeof(strings[0]), compare_string1);
+ for (i = 0; i < ARRAY_SIZE(strings); i++)
{
ok(!strcmp(strings_sorted[i], str_buf[i]),
"qsort using lstrcmpA failed for element %d\n", i);
}
/* 2. sort using CompareStringA */
memcpy(buf, strings, sizeof(strings));
- qsort(buf, sizeof(strings)/sizeof(strings[0]), sizeof(strings[0]), compare_string2);
- for (i = 0; i < sizeof(strings)/sizeof(strings[0]); i++)
+ qsort(buf, ARRAY_SIZE(strings), sizeof(strings[0]), compare_string2);
+ for (i = 0; i < ARRAY_SIZE(strings); i++)
{
ok(!strcmp(strings_sorted[i], str_buf[i]),
"qsort using CompareStringA failed for element %d\n", i);
}
/* 3. sort using sort keys */
memcpy(buf, strings, sizeof(strings));
- qsort(buf, sizeof(strings)/sizeof(strings[0]), sizeof(strings[0]), compare_string3);
- for (i = 0; i < sizeof(strings)/sizeof(strings[0]); i++)
+ qsort(buf, ARRAY_SIZE(strings), sizeof(strings[0]), compare_string3);
+ for (i = 0; i < ARRAY_SIZE(strings); i++)
{
ok(!strcmp(strings_sorted[i], str_buf[i]),
"qsort using sort keys failed for element %d\n", i);
@@ -3333,7 +3315,7 @@ static void test_FoldStringW(void)
}
/* Invalid flag combinations */
- for (i = 0; i < sizeof(badFlags)/sizeof(badFlags[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(badFlags); i++)
{
src[0] = dst[0] = '\0';
SetLastError(0);
@@ -3395,7 +3377,7 @@ static void test_FoldStringW(void)
'A','X', ret, dst[0], dst[1], GetLastError());
/* MAP_FOLDDIGITS */
- for (j = 0; j < sizeof(digitRanges)/sizeof(digitRanges[0]); j++)
+ for (j = 0; j < ARRAY_SIZE(digitRanges); j++)
{
/* Check everything before this range */
for (ch = prev_ch; ch < digitRanges[j]; ch++)
@@ -3447,14 +3429,12 @@ static void test_FoldStringW(void)
/* MAP_FOLDCZONE */
SetLastError(0);
ret = pFoldStringW(MAP_FOLDCZONE, foldczone_src, -1, dst, 256);
- ok(ret == sizeof(foldczone_dst)/sizeof(foldczone_dst[0]),
- "Got %d, error %d\n", ret, GetLastError());
+ ok(ret == ARRAY_SIZE(foldczone_dst), "Got %d, error %d\n", ret, GetLastError());
ok(!memcmp(dst, foldczone_dst, sizeof(foldczone_dst)),
"MAP_FOLDCZONE: Expanded incorrectly\n");
ret = pFoldStringW(MAP_FOLDCZONE|MAP_PRECOMPOSED, foldczone_todo_src, -1, dst, 256);
- todo_wine ok(ret == sizeof(foldczone_todo_dst)/sizeof(foldczone_todo_dst[0]),
- "Got %d, error %d\n", ret, GetLastError());
+ todo_wine ok(ret == ARRAY_SIZE(foldczone_todo_dst), "Got %d, error %d\n", ret, GetLastError());
todo_wine ok(!memcmp(dst, foldczone_todo_dst, sizeof(foldczone_todo_dst))
|| broken(!memcmp(dst, foldczone_todo_broken_dst, sizeof(foldczone_todo_broken_dst))),
"MAP_FOLDCZONE: Expanded incorrectly (%s)\n", wine_dbgstr_w(dst));
@@ -3464,8 +3444,7 @@ static void test_FoldStringW(void)
ret = pFoldStringW(MAP_EXPAND_LIGATURES, ligatures_src, -1, dst, 256);
/* NT 4.0 doesn't support MAP_EXPAND_LIGATURES */
if (!(ret == 0 && GetLastError() == ERROR_INVALID_FLAGS)) {
- ok(ret == sizeof(ligatures_dst)/sizeof(ligatures_dst[0]),
- "Got %d, error %d\n", ret, GetLastError());
+ ok(ret == ARRAY_SIZE(ligatures_dst), "Got %d, error %d\n", ret, GetLastError());
ok(!memcmp(dst, ligatures_dst, sizeof(ligatures_dst)),
"MAP_EXPAND_LIGATURES: Expanded incorrectly\n");
}
@@ -3866,7 +3845,7 @@ static void test_EnumTimeFormatsW(void)
date_fmt_bufW[0] = 0;
ret = EnumTimeFormatsW(enum_datetime_procW, lcid, 0);
ok(ret, "EnumTimeFormatsW(0) error %d\n", GetLastError());
- ret = GetLocaleInfoW(lcid, LOCALE_STIMEFORMAT, bufW, sizeof(bufW)/sizeof(bufW[0]));
+ ret = GetLocaleInfoW(lcid, LOCALE_STIMEFORMAT, bufW, ARRAY_SIZE(bufW));
ok(ret, "GetLocaleInfoW(LOCALE_STIMEFORMAT) error %d\n", GetLastError());
ok(!lstrcmpW(date_fmt_bufW, bufW), "expected \"%s\" got \"%s\"\n", wine_dbgstr_w(date_fmt_bufW),
wine_dbgstr_w(bufW));
@@ -3874,7 +3853,7 @@ static void test_EnumTimeFormatsW(void)
date_fmt_bufW[0] = 0;
ret = EnumTimeFormatsW(enum_datetime_procW, lcid, LOCALE_USE_CP_ACP);
ok(ret, "EnumTimeFormatsW(LOCALE_USE_CP_ACP) error %d\n", GetLastError());
- ret = GetLocaleInfoW(lcid, LOCALE_STIMEFORMAT, bufW, sizeof(bufW)/sizeof(bufW[0]));
+ ret = GetLocaleInfoW(lcid, LOCALE_STIMEFORMAT, bufW, ARRAY_SIZE(bufW));
ok(ret, "GetLocaleInfoW(LOCALE_STIMEFORMAT) error %d\n", GetLastError());
ok(!lstrcmpW(date_fmt_bufW, bufW), "expected \"%s\" got \"%s\"\n", wine_dbgstr_w(date_fmt_bufW),
wine_dbgstr_w(bufW));
@@ -3888,7 +3867,7 @@ static void test_EnumTimeFormatsW(void)
char buf[256];
ok(ret, "EnumTimeFormatsW(TIME_NOSECONDS) error %d\n", GetLastError());
- ret = GetLocaleInfoW(lcid, LOCALE_SSHORTTIME, bufW, sizeof(bufW)/sizeof(bufW[0]));
+ ret = GetLocaleInfoW(lcid, LOCALE_SSHORTTIME, bufW, ARRAY_SIZE(bufW));
ok(ret, "GetLocaleInfoW(LOCALE_SSHORTTIME) error %d\n", GetLastError());
ok(!lstrcmpW(date_fmt_bufW, bufW), "expected \"%s\" got \"%s\"\n", wine_dbgstr_w(date_fmt_bufW),
wine_dbgstr_w(bufW));
@@ -3903,7 +3882,7 @@ static void test_EnumTimeFormatsW(void)
GetLastError());
/* And it's not supported by GetLocaleInfoA either */
- ret = GetLocaleInfoA(lcid, LOCALE_SSHORTTIME, buf, sizeof(buf)/sizeof(buf[0]));
+ ret = GetLocaleInfoA(lcid, LOCALE_SSHORTTIME, buf, ARRAY_SIZE(buf));
ok(!ret && GetLastError() == ERROR_INVALID_FLAGS, "GetLocaleInfoA(LOCALE_SSHORTTIME) ret %d, error %d\n", ret,
GetLastError());
}
@@ -4241,28 +4220,25 @@ static void test_IdnToNameprepUnicode(void)
ok(err == test_data[1].err, "err = %d\n", err);
SetLastError(0xdeadbeef);
- ret = pIdnToNameprepUnicode(0, test_data[0].in, -1,
- buf, sizeof(buf)/sizeof(WCHAR));
+ ret = pIdnToNameprepUnicode(0, test_data[0].in, -1, buf, ARRAY_SIZE(buf));
err = GetLastError();
ok(ret == test_data[0].ret, "ret = %d\n", ret);
ok(err == 0xdeadbeef, "err = %d\n", err);
SetLastError(0xdeadbeef);
- ret = pIdnToNameprepUnicode(0, test_data[0].in, -2,
- buf, sizeof(buf)/sizeof(WCHAR));
+ ret = pIdnToNameprepUnicode(0, test_data[0].in, -2, buf, ARRAY_SIZE(buf));
err = GetLastError();
ok(ret == 0, "ret = %d\n", ret);
ok(err == ERROR_INVALID_PARAMETER, "err = %d\n", err);
SetLastError(0xdeadbeef);
- ret = pIdnToNameprepUnicode(0, test_data[0].in, 0,
- buf, sizeof(buf)/sizeof(WCHAR));
+ ret = pIdnToNameprepUnicode(0, test_data[0].in, 0, buf, ARRAY_SIZE(buf));
err = GetLastError();
ok(ret == 0, "ret = %d\n", ret);
ok(err == ERROR_INVALID_NAME, "err = %d\n", err);
ret = pIdnToNameprepUnicode(IDN_ALLOW_UNASSIGNED|IDN_USE_STD3_ASCII_RULES,
- test_data[0].in, -1, buf, sizeof(buf)/sizeof(WCHAR));
+ test_data[0].in, -1, buf, ARRAY_SIZE(buf));
ok(ret == test_data[0].ret, "ret = %d\n", ret);
SetLastError(0xdeadbeef);
@@ -4278,11 +4254,11 @@ static void test_IdnToNameprepUnicode(void)
ok(err == ERROR_INVALID_FLAGS || err == ERROR_INVALID_PARAMETER /* Win8 */,
"err = %d\n", err);
- for (i=0; i<sizeof(test_data)/sizeof(*test_data); i++)
+ for (i=0; i<ARRAY_SIZE(test_data); i++)
{
SetLastError(0xdeadbeef);
- ret = pIdnToNameprepUnicode(test_data[i].flags, test_data[i].in,
- test_data[i].in_len, buf, sizeof(buf)/sizeof(WCHAR));
+ ret = pIdnToNameprepUnicode(test_data[i].flags, test_data[i].in, test_data[i].in_len,
+ buf, ARRAY_SIZE(buf));
err = GetLastError();
todo_wine_if (test_data[i].todo)
@@ -4355,7 +4331,7 @@ static void test_IdnToAscii(void)
return;
}
- for (i=0; i<sizeof(test_data)/sizeof(*test_data); i++)
+ for (i=0; i<ARRAY_SIZE(test_data); i++)
{
SetLastError(0xdeadbeef);
ret = pIdnToAscii(test_data[i].flags, test_data[i].in,
@@ -4427,7 +4403,7 @@ static void test_IdnToUnicode(void)
return;
}
- for (i=0; i<sizeof(test_data)/sizeof(*test_data); i++)
+ for (i=0; i<ARRAY_SIZE(test_data); i++)
{
ret = pIdnToUnicode(test_data[i].flags, test_data[i].in,
test_data[i].in_len, NULL, 0);
@@ -4456,7 +4432,7 @@ static void test_GetLocaleInfoEx(void)
return;
}
- ret = pGetLocaleInfoEx(enW, LOCALE_SNAME, bufferW, sizeof(bufferW)/sizeof(WCHAR));
+ ret = pGetLocaleInfoEx(enW, LOCALE_SNAME, bufferW, ARRAY_SIZE(bufferW));
ok(ret || broken(ret == 0) /* Vista */, "got %d\n", ret);
if (ret)
{
@@ -4479,31 +4455,31 @@ static void test_GetLocaleInfoEx(void)
ret = pGetLocaleInfoEx(enW, LOCALE_SNAME, NULL, 0);
ok(ret == 3 && GetLastError() == 0xdeadbeef, "got %d, %d\n", ret, GetLastError());
- ret = pGetLocaleInfoEx(enusW, LOCALE_SNAME, bufferW, sizeof(bufferW)/sizeof(WCHAR));
+ ret = pGetLocaleInfoEx(enusW, LOCALE_SNAME, bufferW, ARRAY_SIZE(bufferW));
ok(ret == lstrlenW(bufferW)+1, "got %d\n", ret);
ok(!lstrcmpW(bufferW, enusW), "got %s\n", wine_dbgstr_w(bufferW));
- ret = pGetLocaleInfoEx(enW, LOCALE_SABBREVCTRYNAME, bufferW, sizeof(bufferW)/sizeof(WCHAR));
+ ret = pGetLocaleInfoEx(enW, LOCALE_SABBREVCTRYNAME, bufferW, ARRAY_SIZE(bufferW));
ok(ret == lstrlenW(bufferW)+1, "got %d\n", ret);
ok(!lstrcmpW(bufferW, usaW), "got %s\n", wine_dbgstr_w(bufferW));
- ret = pGetLocaleInfoEx(enW, LOCALE_SABBREVLANGNAME, bufferW, sizeof(bufferW)/sizeof(WCHAR));
+ ret = pGetLocaleInfoEx(enW, LOCALE_SABBREVLANGNAME, bufferW, ARRAY_SIZE(bufferW));
ok(ret == lstrlenW(bufferW)+1, "got %d\n", ret);
ok(!lstrcmpW(bufferW, enuW), "got %s\n", wine_dbgstr_w(bufferW));
- ret = pGetLocaleInfoEx(enusW, LOCALE_SPARENT, bufferW, sizeof(bufferW)/sizeof(WCHAR));
+ ret = pGetLocaleInfoEx(enusW, LOCALE_SPARENT, bufferW, ARRAY_SIZE(bufferW));
ok(ret == lstrlenW(bufferW)+1, "got %d\n", ret);
ok(!lstrcmpW(bufferW, enW), "got %s\n", wine_dbgstr_w(bufferW));
- ret = pGetLocaleInfoEx(enW, LOCALE_SPARENT, bufferW, sizeof(bufferW)/sizeof(WCHAR));
+ ret = pGetLocaleInfoEx(enW, LOCALE_SPARENT, bufferW, ARRAY_SIZE(bufferW));
ok(ret == 1, "got %d\n", ret);
ok(!bufferW[0], "got %s\n", wine_dbgstr_w(bufferW));
- ret = pGetLocaleInfoEx(enW, LOCALE_SPARENT | LOCALE_NOUSEROVERRIDE, bufferW, sizeof(bufferW)/sizeof(WCHAR));
+ ret = pGetLocaleInfoEx(enW, LOCALE_SPARENT | LOCALE_NOUSEROVERRIDE, bufferW, ARRAY_SIZE(bufferW));
ok(ret == 1, "got %d\n", ret);
ok(!bufferW[0], "got %s\n", wine_dbgstr_w(bufferW));
- ret = pGetLocaleInfoEx(enW, LOCALE_SCOUNTRY, bufferW, sizeof(bufferW)/sizeof(WCHAR));
+ ret = pGetLocaleInfoEx(enW, LOCALE_SCOUNTRY, bufferW, ARRAY_SIZE(bufferW));
ok(ret == lstrlenW(bufferW)+1, "got %d\n", ret);
if ((PRIMARYLANGID(LANGIDFROMLCID(GetSystemDefaultLCID())) != LANG_ENGLISH) ||
(PRIMARYLANGID(LANGIDFROMLCID(GetThreadLocale())) != LANG_ENGLISH))
@@ -4515,7 +4491,7 @@ static void test_GetLocaleInfoEx(void)
bufferW[0] = 0;
SetLastError(0xdeadbeef);
- ret = pGetLocaleInfoEx(dummyW, LOCALE_SNAME, bufferW, sizeof(bufferW)/sizeof(WCHAR));
+ ret = pGetLocaleInfoEx(dummyW, LOCALE_SNAME, bufferW, ARRAY_SIZE(bufferW));
ok(!ret && GetLastError() == ERROR_INVALID_PARAMETER, "got %d, error %d\n", ret, GetLastError());
while (*ptr->name)
@@ -4525,15 +4501,15 @@ static void test_GetLocaleInfoEx(void)
todo_wine_if (ptr->todo)
ok(val == ptr->lcid, "%s: got wrong lcid 0x%04x, expected 0x%04x\n", wine_dbgstr_w(ptr->name), val, ptr->lcid);
bufferW[0] = 0;
- ret = pGetLocaleInfoEx(ptr->name, LOCALE_SNAME, bufferW, sizeof(bufferW)/sizeof(WCHAR));
+ ret = pGetLocaleInfoEx(ptr->name, LOCALE_SNAME, bufferW, ARRAY_SIZE(bufferW));
ok(ret == lstrlenW(bufferW)+1, "%s: got ret value %d\n", wine_dbgstr_w(ptr->name), ret);
ok(!lstrcmpW(bufferW, ptr->name), "%s: got wrong LOCALE_SNAME %s\n", wine_dbgstr_w(ptr->name), wine_dbgstr_w(bufferW));
ptr++;
}
- ret = pGetLocaleInfoEx(LOCALE_NAME_USER_DEFAULT, LOCALE_SNAME, bufferW, sizeof(bufferW)/sizeof(WCHAR));
+ ret = pGetLocaleInfoEx(LOCALE_NAME_USER_DEFAULT, LOCALE_SNAME, bufferW, ARRAY_SIZE(bufferW));
ok(ret && ret == lstrlenW(bufferW)+1, "got ret value %d\n", ret);
- ret = GetLocaleInfoW(GetUserDefaultLCID(), LOCALE_SNAME, buffer2, sizeof(buffer2)/sizeof(WCHAR));
+ ret = GetLocaleInfoW(GetUserDefaultLCID(), LOCALE_SNAME, buffer2, ARRAY_SIZE(buffer2));
ok(ret && ret == lstrlenW(buffer2)+1, "got ret value %d\n", ret);
ok(!lstrcmpW(bufferW, buffer2), "LOCALE_SNAMEs don't match %s %s\n", wine_dbgstr_w(bufferW), wine_dbgstr_w(buffer2));
}
@@ -5367,18 +5343,18 @@ static void test_FindNLSStringEx(void)
static struct test_data test_arr[] =
{
- { localeW, FIND_FROMSTART, en_simpsimpW, sizeof(en_simpsimpW)/sizeof(WCHAR)-1,
- en_simpW, sizeof(en_simpW)/sizeof(WCHAR)-1, 0, 0, 6, 0, FALSE},
- { localeW, FIND_FROMEND, en_simpsimpW, sizeof(en_simpsimpW)/sizeof(WCHAR)-1,
- en_simpW, sizeof(en_simpW)/sizeof(WCHAR)-1, 0, 6, 6, 0, FALSE},
- { localeW, FIND_STARTSWITH, en_simpsimpW, sizeof(en_simpsimpW)/sizeof(WCHAR)-1,
- en_simpW, sizeof(en_simpW)/sizeof(WCHAR)-1, 0, 0, 6, 0, FALSE},
- { localeW, FIND_ENDSWITH, en_simpsimpW, sizeof(en_simpsimpW)/sizeof(WCHAR)-1,
- en_simpW, sizeof(en_simpW)/sizeof(WCHAR)-1, 0, 6, 6, 0, FALSE},
- { localeW, FIND_FROMSTART, comb_s_accent1W, sizeof(comb_s_accent1W)/sizeof(WCHAR)-1,
- comb_s_accent2W, sizeof(comb_s_accent2W)/sizeof(WCHAR)-1, 0, 0, 6, 1, TRUE },
- { localeW, FIND_FROMSTART, comb_q_accent1W, sizeof(comb_q_accent1W)/sizeof(WCHAR)-1,
- comb_q_accent2W, sizeof(comb_q_accent2W)/sizeof(WCHAR)-1, 0, 0, 7, 1, FALSE },
+ { localeW, FIND_FROMSTART, en_simpsimpW, ARRAY_SIZE(en_simpsimpW)-1,
+ en_simpW, ARRAY_SIZE(en_simpW)-1, 0, 0, 6, 0, FALSE},
+ { localeW, FIND_FROMEND, en_simpsimpW, ARRAY_SIZE(en_simpsimpW)-1,
+ en_simpW, ARRAY_SIZE(en_simpW)-1, 0, 6, 6, 0, FALSE},
+ { localeW, FIND_STARTSWITH, en_simpsimpW, ARRAY_SIZE(en_simpsimpW)-1,
+ en_simpW, ARRAY_SIZE(en_simpW)-1, 0, 0, 6, 0, FALSE},
+ { localeW, FIND_ENDSWITH, en_simpsimpW, ARRAY_SIZE(en_simpsimpW)-1,
+ en_simpW, ARRAY_SIZE(en_simpW)-1, 0, 6, 6, 0, FALSE},
+ { localeW, FIND_FROMSTART, comb_s_accent1W, ARRAY_SIZE(comb_s_accent1W)-1,
+ comb_s_accent2W, ARRAY_SIZE(comb_s_accent2W)-1, 0, 0, 6, 1, TRUE },
+ { localeW, FIND_FROMSTART, comb_q_accent1W, ARRAY_SIZE(comb_q_accent1W)-1,
+ comb_q_accent2W, ARRAY_SIZE(comb_q_accent2W)-1, 0, 0, 7, 1, FALSE },
{ 0 }
};
struct test_data *ptest;
--
2.14.4
1
0
June 22, 2018
Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org>
---
dlls/wininet/tests/ftp.c | 2 +-
dlls/wininet/tests/http.c | 10 ++++-----
dlls/wininet/tests/internet.c | 16 ++++++-------
dlls/wininet/tests/url.c | 52 +++++++++++++++++++++----------------------
dlls/wininet/tests/urlcache.c | 4 ++--
5 files changed, 42 insertions(+), 42 deletions(-)
diff --git a/dlls/wininet/tests/ftp.c b/dlls/wininet/tests/ftp.c
index d2118faded..6f50104f3b 100644
--- a/dlls/wininet/tests/ftp.c
+++ b/dlls/wininet/tests/ftp.c
@@ -735,7 +735,7 @@ static void test_command(HINTERNET hFtp, HINTERNET hConnect)
return;
}
- for (i = 0; i < sizeof(command_test) / sizeof(command_test[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(command_test); i++)
{
SetLastError(0xdeadbeef);
ret = pFtpCommandA(hFtp, FALSE, FTP_TRANSFER_TYPE_ASCII, command_test[i].cmd, 0, NULL);
diff --git a/dlls/wininet/tests/http.c b/dlls/wininet/tests/http.c
index 0524ddf3fd..ace8512399 100644
--- a/dlls/wininet/tests/http.c
+++ b/dlls/wininet/tests/http.c
@@ -172,7 +172,7 @@ static BOOL (WINAPI *pInternetGetSecurityInfoByURLA)(LPSTR,PCCERT_CHAIN_CONTEXT*
static int strcmp_wa(LPCWSTR strw, const char *stra)
{
WCHAR buf[512];
- MultiByteToWideChar(CP_ACP, 0, stra, -1, buf, sizeof(buf)/sizeof(WCHAR));
+ MultiByteToWideChar(CP_ACP, 0, stra, -1, buf, ARRAY_SIZE(buf));
return lstrcmpW(strw, buf);
}
@@ -4204,7 +4204,7 @@ static void test_http_status(int port)
DWORD i, size;
BOOL res;
- for(i=0; i < sizeof(http_status_tests)/sizeof(*http_status_tests); i++) {
+ for(i = 0; i < ARRAY_SIZE(http_status_tests); i++) {
send_buffer = http_status_tests[i].response_text;
open_simple_request(&req, "localhost", port, NULL, "/send_from_buffer");
@@ -6543,14 +6543,14 @@ static const struct notification async_send_request_ex_chunked_test[] =
static const struct notification_data notification_data[] = {
{
async_send_request_ex_chunked_test,
- sizeof(async_send_request_ex_chunked_test)/sizeof(async_send_request_ex_chunked_test[0]),
+ ARRAY_SIZE(async_send_request_ex_chunked_test),
"GET",
"test.winehq.org",
"tests/data.php"
},
{
async_send_request_ex_test,
- sizeof(async_send_request_ex_test)/sizeof(async_send_request_ex_test[0]),
+ ARRAY_SIZE(async_send_request_ex_test),
"POST",
"test.winehq.org",
"tests/post.php",
@@ -6565,7 +6565,7 @@ static const struct notification_data notification_data[] = {
},
{
async_send_request_ex_resolve_failure_test,
- sizeof(async_send_request_ex_resolve_failure_test)/sizeof(async_send_request_ex_resolve_failure_test[0]),
+ ARRAY_SIZE(async_send_request_ex_resolve_failure_test),
"GET",
"brokenhost",
"index.html",
diff --git a/dlls/wininet/tests/internet.c b/dlls/wininet/tests/internet.c
index 39c698f5db..7889e40ea8 100644
--- a/dlls/wininet/tests/internet.c
+++ b/dlls/wininet/tests/internet.c
@@ -629,7 +629,7 @@ static void test_cookie_url(void)
ok(!res && GetLastError() == ERROR_INVALID_PARAMETER,
"InternetGetCookeA failed: %u, expected ERROR_INVALID_PARAMETER\n", GetLastError());
- len = sizeof(bufw)/sizeof(*bufw);
+ len = ARRAY_SIZE(bufw);
res = InternetGetCookieW(about_blankW, NULL, bufw, &len);
ok(!res && GetLastError() == ERROR_INVALID_PARAMETER,
"InternetGetCookeW failed: %u, expected ERROR_INVALID_PARAMETER\n", GetLastError());
@@ -639,7 +639,7 @@ static void test_cookie_url(void)
ok(!res && GetLastError() == ERROR_INVALID_PARAMETER,
"InternetGetCookeExA failed: %u, expected ERROR_INVALID_PARAMETER\n", GetLastError());
- len = sizeof(bufw)/sizeof(*bufw);
+ len = ARRAY_SIZE(bufw);
res = pInternetGetCookieExW(about_blankW, NULL, bufw, &len, 0, NULL);
ok(!res && GetLastError() == ERROR_INVALID_PARAMETER,
"InternetGetCookeExW failed: %u, expected ERROR_INVALID_PARAMETER\n", GetLastError());
@@ -887,7 +887,7 @@ static void InternetTimeFromSystemTimeW_test(void)
/* test too small buffer size */
SetLastError(0xdeadbeef);
- ret = pInternetTimeFromSystemTimeW( &time, INTERNET_RFC1123_FORMAT, string, sizeof(string)/sizeof(string[0]) );
+ ret = pInternetTimeFromSystemTimeW( &time, INTERNET_RFC1123_FORMAT, string, ARRAY_SIZE(string));
error = GetLastError();
ok( !ret, "InternetTimeFromSystemTimeW should have returned FALSE\n" );
ok( error == ERROR_INSUFFICIENT_BUFFER,
@@ -1084,7 +1084,7 @@ static void test_PrivacyGetSetZonePreferenceW(void)
trace("template %u\n", old_template);
if(old_template == PRIVACY_TEMPLATE_ADVANCED) {
- pref_size = sizeof(pref)/sizeof(WCHAR);
+ pref_size = ARRAY_SIZE(pref);
ret = pPrivacyGetZonePreferenceW(zone, type, &old_template, pref, &pref_size);
ok(ret == 0, "expected ret == 0, got %u\n", ret);
}
@@ -1721,7 +1721,7 @@ static void test_InternetGetConnectedStateExW(void)
flags = 0;
buffer[0] = 0;
- res = pInternetGetConnectedStateExW(&flags, buffer, sizeof(buffer) / sizeof(buffer[0]), 0);
+ res = pInternetGetConnectedStateExW(&flags, buffer, ARRAY_SIZE(buffer), 0);
trace("Internet Connection: Flags 0x%02x - Name '%s'\n", flags, wine_dbgstr_w(buffer));
todo_wine
ok (flags & INTERNET_RAS_INSTALLED, "Missing RAS flag\n");
@@ -1755,21 +1755,21 @@ todo_wine
ok(!buffer[0], "Buffer must not change, got %02X\n", buffer[0]);
buffer[0] = 0;
- res = pInternetGetConnectedStateExW(NULL, buffer, sizeof(buffer) / sizeof(buffer[0]), 0);
+ res = pInternetGetConnectedStateExW(NULL, buffer, ARRAY_SIZE(buffer), 0);
ok(res == TRUE, "Expected TRUE, got %d\n", res);
sz = lstrlenW(buffer);
ok(sz > 0, "Expected a connection name\n");
buffer[0] = 0;
flags = 0;
- res = pInternetGetConnectedStateExW(&flags, buffer, sizeof(buffer) / sizeof(buffer[0]), 0);
+ res = pInternetGetConnectedStateExW(&flags, buffer, ARRAY_SIZE(buffer), 0);
ok(res == TRUE, "Expected TRUE, got %d\n", res);
ok(flags, "Expected at least one flag set\n");
sz = lstrlenW(buffer);
ok(sz > 0, "Expected a connection name\n");
flags = 0;
- res = pInternetGetConnectedStateExW(&flags, NULL, sizeof(buffer) / sizeof(buffer[0]), 0);
+ res = pInternetGetConnectedStateExW(&flags, NULL, ARRAY_SIZE(buffer), 0);
ok(res == TRUE, "Expected TRUE, got %d\n", res);
ok(flags, "Expected at least one flag set\n");
diff --git a/dlls/wininet/tests/url.c b/dlls/wininet/tests/url.c
index 0af58358eb..18c77b6647 100644
--- a/dlls/wininet/tests/url.c
+++ b/dlls/wininet/tests/url.c
@@ -672,17 +672,17 @@ static void InternetCrackUrlW_test(void)
memset(&comp, 0, sizeof comp);
comp.dwStructSize = sizeof(comp);
comp.lpszScheme = scheme;
- comp.dwSchemeLength = sizeof(scheme)/sizeof(scheme[0]);
+ comp.dwSchemeLength = ARRAY_SIZE(scheme);
comp.lpszHostName = host;
- comp.dwHostNameLength = sizeof(host)/sizeof(host[0]);
+ comp.dwHostNameLength = ARRAY_SIZE(host);
comp.lpszUserName = user;
- comp.dwUserNameLength = sizeof(user)/sizeof(user[0]);
+ comp.dwUserNameLength = ARRAY_SIZE(user);
comp.lpszPassword = pwd;
- comp.dwPasswordLength = sizeof(pwd)/sizeof(pwd[0]);
+ comp.dwPasswordLength = ARRAY_SIZE(pwd);
comp.lpszUrlPath = urlpart;
- comp.dwUrlPathLength = sizeof(urlpart)/sizeof(urlpart[0]);
+ comp.dwUrlPathLength = ARRAY_SIZE(urlpart);
comp.lpszExtraInfo = extra;
- comp.dwExtraInfoLength = sizeof(extra)/sizeof(extra[0]);
+ comp.dwExtraInfoLength = ARRAY_SIZE(extra);
SetLastError(0xdeadbeef);
r = InternetCrackUrlW(NULL, 0, 0, &comp );
@@ -721,9 +721,9 @@ static void InternetCrackUrlW_test(void)
memset(&comp, 0, sizeof comp);
comp.dwStructSize = sizeof comp;
comp.lpszHostName = host;
- comp.dwHostNameLength = sizeof(host)/sizeof(host[0]);
+ comp.dwHostNameLength = ARRAY_SIZE(host);
comp.lpszUrlPath = urlpart;
- comp.dwUrlPathLength = sizeof(urlpart)/sizeof(urlpart[0]);
+ comp.dwUrlPathLength = ARRAY_SIZE(urlpart);
r = InternetCrackUrlW(url, 0, 0, &comp );
ok( r, "failed to crack url\n");
@@ -739,11 +739,11 @@ static void InternetCrackUrlW_test(void)
memset(&comp, 0, sizeof comp);
comp.dwStructSize = sizeof comp;
comp.lpszHostName = host;
- comp.dwHostNameLength = sizeof(host)/sizeof(host[0]);
+ comp.dwHostNameLength = ARRAY_SIZE(host);
comp.lpszUrlPath = urlpart;
- comp.dwUrlPathLength = sizeof(urlpart)/sizeof(urlpart[0]);
+ comp.dwUrlPathLength = ARRAY_SIZE(urlpart);
comp.lpszExtraInfo = NULL;
- comp.dwExtraInfoLength = sizeof(extra)/sizeof(extra[0]);
+ comp.dwExtraInfoLength = ARRAY_SIZE(extra);
r = InternetCrackUrlW(url, 0, 0, &comp );
ok( r, "failed to crack url\n");
@@ -763,17 +763,17 @@ static void InternetCrackUrlW_test(void)
memset(&comp, 0, sizeof(comp));
comp.dwStructSize = sizeof(comp);
comp.lpszScheme = scheme;
- comp.dwSchemeLength = sizeof(scheme)/sizeof(scheme[0]);
+ comp.dwSchemeLength = ARRAY_SIZE(scheme);
comp.lpszHostName = host;
- comp.dwHostNameLength = sizeof(host)/sizeof(host[0]);
+ comp.dwHostNameLength = ARRAY_SIZE(host);
comp.lpszUserName = user;
- comp.dwUserNameLength = sizeof(user)/sizeof(user[0]);
+ comp.dwUserNameLength = ARRAY_SIZE(user);
comp.lpszPassword = pwd;
- comp.dwPasswordLength = sizeof(pwd)/sizeof(pwd[0]);
+ comp.dwPasswordLength = ARRAY_SIZE(pwd);
comp.lpszUrlPath = urlpart;
- comp.dwUrlPathLength = sizeof(urlpart)/sizeof(urlpart[0]);
+ comp.dwUrlPathLength = ARRAY_SIZE(urlpart);
comp.lpszExtraInfo = extra;
- comp.dwExtraInfoLength = sizeof(extra)/sizeof(extra[0]);
+ comp.dwExtraInfoLength = ARRAY_SIZE(extra);
r = InternetCrackUrlW(url2, 0, 0, &comp);
ok(!r, "InternetCrackUrl should have failed\n");
@@ -791,17 +791,17 @@ static void InternetCrackUrlW_test(void)
memset(&comp, 0, sizeof comp);
comp.dwStructSize = sizeof comp;
comp.lpszScheme = scheme;
- comp.dwSchemeLength = sizeof(scheme)/sizeof(scheme[0]);
+ comp.dwSchemeLength = ARRAY_SIZE(scheme);
comp.lpszHostName = host;
- comp.dwHostNameLength = sizeof(host)/sizeof(host[0]);
+ comp.dwHostNameLength = ARRAY_SIZE(host);
comp.lpszUserName = user;
- comp.dwUserNameLength = sizeof(user)/sizeof(user[0]);
+ comp.dwUserNameLength = ARRAY_SIZE(user);
comp.lpszPassword = pwd;
- comp.dwPasswordLength = sizeof(pwd)/sizeof(pwd[0]);
+ comp.dwPasswordLength = ARRAY_SIZE(pwd);
comp.lpszUrlPath = urlpart;
- comp.dwUrlPathLength = sizeof(urlpart)/sizeof(urlpart[0]);
+ comp.dwUrlPathLength = ARRAY_SIZE(urlpart);
comp.lpszExtraInfo = extra;
- comp.dwExtraInfoLength = sizeof(extra)/sizeof(extra[0]);
+ comp.dwExtraInfoLength = ARRAY_SIZE(extra);
r = InternetCrackUrlW(url3, 0, 0, &comp );
ok( r, "InternetCrackUrlW failed unexpectedly\n");
ok( host[0] == 'x', "host should be x.org\n");
@@ -812,9 +812,9 @@ static void InternetCrackUrlW_test(void)
memset(&comp, 0, sizeof(comp));
comp.dwStructSize = sizeof(comp);
comp.lpszHostName = host;
- comp.dwHostNameLength = sizeof(host)/sizeof(host[0]);
+ comp.dwHostNameLength = ARRAY_SIZE(host);
comp.lpszUrlPath = urlpart;
- comp.dwUrlPathLength = sizeof(urlpart)/sizeof(urlpart[0]);
+ comp.dwUrlPathLength = ARRAY_SIZE(urlpart);
r = InternetCrackUrlW(url3, 0, ICU_DECODE, &comp);
todo_wine ok(r, "InternetCrackUrlW failed unexpectedly\n");
todo_wine ok(!strcmp_wa(host, "x.org"), "host is %s, should be x.org\n", wine_dbgstr_w(host));
@@ -1224,7 +1224,7 @@ START_TEST(url)
return;
}
- for(i=0; i < sizeof(crack_url_tests)/sizeof(*crack_url_tests); i++)
+ for(i = 0; i < ARRAY_SIZE(crack_url_tests); i++)
test_crack_url(crack_url_tests+i);
test_long_url();
diff --git a/dlls/wininet/tests/urlcache.c b/dlls/wininet/tests/urlcache.c
index 310054b6a7..3799500489 100644
--- a/dlls/wininet/tests/urlcache.c
+++ b/dlls/wininet/tests/urlcache.c
@@ -891,13 +891,13 @@ static void test_urlcacheW(void)
if(ie10_cache) {
if(!MultiByteToWideChar(CP_ACP, 0, urls[6].encoded_url, -1,
- urls[6].url, sizeof(urls[6].url)/sizeof(WCHAR)))
+ urls[6].url, ARRAY_SIZE(urls[6].url)))
urls[6].url[0] = 0;
trace("converted url in test 6: %s\n", wine_dbgstr_w(urls[6].url));
}
- for(i=0; i<sizeof(urls)/sizeof(*urls); i++) {
+ for(i=0; i<ARRAY_SIZE(urls); i++) {
INTERNET_CACHE_ENTRY_INFOA *entry_infoA;
INTERNET_CACHE_ENTRY_INFOW *entry_infoW;
DWORD size;
--
2.14.4
1
1
Glyphs were copied from the Android Emoji font.
wingding.ttf should be rebuilt in maintainer mode after applying this patch.
Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru>
---
fonts/wingding.sfd | 1903 +++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 1900 insertions(+), 3 deletions(-)
diff --git a/fonts/wingding.sfd b/fonts/wingding.sfd
index c46152b077..940b1d686c 100644
--- a/fonts/wingding.sfd
+++ b/fonts/wingding.sfd
@@ -47,12 +47,12 @@ LangName: 1033 "" "" "" "" "" "" "" "" "" "" "" "http://www.winehq.org" "" "This
Encoding: Symbol
UnicodeInterp: none
NameList: Adobe Glyph List
-DisplaySize: -48
+DisplaySize: -72
AntiAlias: 1
FitToEm: 1
-WinInfo: 0 29 12
+WinInfo: 0 25 9
TeXData: 1 0 0 708670 354335 236222 1342177 -2147484 236222 783286 444596 497025 792723 393216 433062 380633 303038 157286 324010 404750 52429 2506097 1059062 262144
-BeginChars: 256 38
+BeginChars: 256 50
StartChar: f020
Encoding: 0 61472 0
@@ -788,5 +788,1902 @@ LayerCount: 2
Fore
Refer: 34 63724 N 0 1 -1 0 1653 -173 2
EndChar
+
+StartChar: bullet
+Encoding: 183 8226 38
+Width: 2048
+Flags: W
+LayerCount: 2
+Fore
+SplineSet
+1024 1538 m 0,0,1
+ 1239 1538 1239 1538 1427 1430 c 128,-1,2
+ 1615 1322 1615 1322 1723 1133.5 c 128,-1,3
+ 1831 945 1831 945 1831 731 c 0,4,5
+ 1831 515 1831 515 1722 327.5 c 128,-1,6
+ 1613 140 1613 140 1425.5 32.5 c 128,-1,7
+ 1238 -75 1238 -75 1024 -75 c 0,8,9
+ 808 -75 808 -75 621 33 c 128,-1,10
+ 434 141 434 141 326 328 c 128,-1,11
+ 218 515 218 515 218 731 c 0,12,13
+ 218 945 218 945 325.5 1132.5 c 128,-1,14
+ 433 1320 433 1320 620.5 1429 c 128,-1,15
+ 808 1538 808 1538 1024 1538 c 0,0,1
+1024 3 m 0,16,17
+ 1220 3 1220 3 1389 101 c 128,-1,18
+ 1558 199 1558 199 1655.5 367.5 c 128,-1,19
+ 1753 536 1753 536 1753 731 c 0,20,21
+ 1753 927 1753 927 1655 1096 c 128,-1,22
+ 1557 1265 1557 1265 1388.5 1362.5 c 128,-1,23
+ 1220 1460 1220 1460 1024 1460 c 256,24,25
+ 828 1460 828 1460 659.5 1362 c 128,-1,26
+ 491 1264 491 1264 393.5 1095.5 c 128,-1,27
+ 296 927 296 927 296 731 c 256,28,29
+ 296 535 296 535 394 366.5 c 128,-1,30
+ 492 198 492 198 660.5 100.5 c 128,-1,31
+ 829 3 829 3 1024 3 c 0,16,17
+1285 1066 m 1,32,-1
+ 1129 796 l 1,33,34
+ 1148 766 1148 766 1148 731 c 0,35,36
+ 1148 680 1148 680 1112 644 c 128,-1,37
+ 1076 608 1076 608 1024 608 c 0,38,39
+ 973 608 973 608 937 644 c 128,-1,40
+ 901 680 901 680 901 731 c 0,41,42
+ 901 766 901 766 919 794.5 c 128,-1,43
+ 937 823 937 823 966 840 c 1,44,-1
+ 966 1396 l 1,45,-1
+ 1082 1396 l 1,46,-1
+ 1082 948 l 1,47,-1
+ 1184 1124 l 1,48,-1
+ 1285 1066 l 1,32,-1
+978 731 m 0,49,50
+ 978 716 978 716 990.5 700.5 c 128,-1,51
+ 1003 685 1003 685 1024 685 c 0,52,53
+ 1040 685 1040 685 1055.5 696.5 c 128,-1,54
+ 1071 708 1071 708 1071 731 c 0,55,56
+ 1071 751 1071 751 1057.5 764 c 128,-1,57
+ 1044 777 1044 777 1024 777 c 0,58,59
+ 1005 777 1005 777 991.5 764 c 128,-1,60
+ 978 751 978 751 978 731 c 0,49,50
+1654 777 m 0,61,62
+ 1674 777 1674 777 1687.5 764 c 128,-1,63
+ 1701 751 1701 751 1701 731 c 0,64,65
+ 1701 712 1701 712 1687.5 698.5 c 128,-1,66
+ 1674 685 1674 685 1654 685 c 0,67,68
+ 1635 685 1635 685 1621.5 698.5 c 128,-1,69
+ 1608 712 1608 712 1608 731 c 0,70,71
+ 1608 751 1608 751 1621.5 764 c 128,-1,72
+ 1635 777 1635 777 1654 777 c 0,61,62
+1570 1000 m 0,73,74
+ 1552 1000 1552 1000 1538 1013 c 128,-1,75
+ 1524 1026 1524 1026 1524 1046 c 0,76,77
+ 1524 1063 1524 1063 1536.5 1078 c 128,-1,78
+ 1549 1093 1549 1093 1569 1093 c 0,79,80
+ 1588 1093 1588 1093 1602 1080 c 128,-1,81
+ 1616 1067 1616 1067 1616 1047 c 0,82,83
+ 1616 1020 1616 1020 1594 1006 c 1,84,85
+ 1582 1000 1582 1000 1570 1000 c 0,73,74
+1386 1277 m 0,86,87
+ 1386 1256 1386 1256 1371.5 1243 c 128,-1,88
+ 1357 1230 1357 1230 1340 1230 c 0,89,90
+ 1319 1230 1319 1230 1306 1245 c 128,-1,91
+ 1293 1260 1293 1260 1293 1277 c 0,92,93
+ 1293 1297 1293 1297 1307.5 1310 c 128,-1,94
+ 1322 1323 1322 1323 1339 1323 c 0,95,96
+ 1358 1323 1358 1323 1372 1310 c 128,-1,97
+ 1386 1297 1386 1297 1386 1277 c 0,86,87
+709 1323 m 256,98,99
+ 727 1323 727 1323 741.5 1310.5 c 128,-1,100
+ 756 1298 756 1298 756 1277 c 0,101,102
+ 756 1259 756 1259 743 1244.5 c 128,-1,103
+ 730 1230 730 1230 709 1230 c 0,104,105
+ 692 1230 692 1230 677.5 1243 c 128,-1,106
+ 663 1256 663 1256 663 1277 c 0,107,108
+ 663 1297 663 1297 677 1310 c 128,-1,109
+ 691 1323 691 1323 709 1323 c 256,98,99
+525 1046 m 0,110,111
+ 525 1025 525 1025 510 1012.5 c 128,-1,112
+ 495 1000 495 1000 478 1000 c 0,113,114
+ 458 1000 458 1000 445 1014.5 c 128,-1,115
+ 432 1029 432 1029 432 1046 c 0,116,117
+ 432 1066 432 1066 446 1079.5 c 128,-1,118
+ 460 1093 460 1093 479 1093 c 256,119,120
+ 498 1093 498 1093 511.5 1079 c 128,-1,121
+ 525 1065 525 1065 525 1046 c 0,110,111
+394 777 m 256,122,123
+ 414 777 414 777 427.5 764 c 128,-1,124
+ 441 751 441 751 441 731 c 0,125,126
+ 441 712 441 712 427.5 698.5 c 128,-1,127
+ 414 685 414 685 394 685 c 256,128,129
+ 374 685 374 685 361 698.5 c 128,-1,130
+ 348 712 348 712 348 731 c 0,131,132
+ 348 751 348 751 361 764 c 128,-1,133
+ 374 777 374 777 394 777 c 256,122,123
+477 462 m 256,134,135
+ 496 462 496 462 510.5 449.5 c 128,-1,136
+ 525 437 525 437 525 416 c 0,137,138
+ 525 397 525 397 512 383.5 c 128,-1,139
+ 499 370 499 370 478 370 c 0,140,141
+ 460 370 460 370 446 383.5 c 128,-1,142
+ 432 397 432 397 432 417 c 256,143,144
+ 432 437 432 437 445 449.5 c 128,-1,145
+ 458 462 458 462 477 462 c 256,134,135
+756 185 m 0,146,147
+ 756 164 756 164 741.5 151.5 c 128,-1,148
+ 727 139 727 139 709 139 c 0,149,150
+ 689 139 689 139 676 153.5 c 128,-1,151
+ 663 168 663 168 663 185 c 0,152,153
+ 663 206 663 206 677.5 219 c 128,-1,154
+ 692 232 692 232 709 232 c 0,155,156
+ 721 232 721 232 733 226 c 1,157,158
+ 756 211 756 211 756 185 c 0,146,147
+1024 147 m 256,159,160
+ 1044 147 1044 147 1057.5 134 c 128,-1,161
+ 1071 121 1071 121 1071 101 c 256,162,163
+ 1071 81 1071 81 1057.5 67.5 c 128,-1,164
+ 1044 54 1044 54 1024 54 c 0,165,166
+ 1005 54 1005 54 991.5 67.5 c 128,-1,167
+ 978 81 978 81 978 101 c 256,168,169
+ 978 121 978 121 991 134 c 128,-1,170
+ 1004 147 1004 147 1024 147 c 256,159,160
+1339 232 m 0,171,172
+ 1357 232 1357 232 1371.5 219 c 128,-1,173
+ 1386 206 1386 206 1386 185 c 0,174,175
+ 1386 168 1386 168 1373 153.5 c 128,-1,176
+ 1360 139 1360 139 1339 139 c 0,177,178
+ 1322 139 1322 139 1307.5 152 c 128,-1,179
+ 1293 165 1293 165 1293 185 c 0,180,181
+ 1293 204 1293 204 1306.5 218 c 128,-1,182
+ 1320 232 1320 232 1339 232 c 0,171,172
+1616 415 m 0,183,184
+ 1616 394 1616 394 1601.5 382 c 128,-1,185
+ 1587 370 1587 370 1570 370 c 0,186,187
+ 1550 370 1550 370 1537 384.5 c 128,-1,188
+ 1524 399 1524 399 1524 416 c 0,189,190
+ 1524 436 1524 436 1537.5 449 c 128,-1,191
+ 1551 462 1551 462 1571 462 c 256,192,193
+ 1591 462 1591 462 1603.5 449.5 c 128,-1,194
+ 1616 437 1616 437 1616 415 c 0,183,184
+EndSplineSet
+EndChar
+
+StartChar: divide
+Encoding: 184 247 39
+Width: 2048
+Flags: W
+LayerCount: 2
+Fore
+SplineSet
+1024 1538 m 0,0,1
+ 1238 1538 1238 1538 1425.5 1430.5 c 128,-1,2
+ 1613 1323 1613 1323 1722 1135.5 c 128,-1,3
+ 1831 948 1831 948 1831 732 c 0,4,5
+ 1831 514 1831 514 1722 327 c 128,-1,6
+ 1613 140 1613 140 1425 32.5 c 128,-1,7
+ 1237 -75 1237 -75 1024 -75 c 0,8,9
+ 808 -75 808 -75 621 33 c 128,-1,10
+ 434 141 434 141 326 328 c 128,-1,11
+ 218 515 218 515 218 732 c 0,12,13
+ 218 948 218 948 326 1135 c 128,-1,14
+ 434 1322 434 1322 621 1430 c 128,-1,15
+ 808 1538 808 1538 1024 1538 c 0,0,1
+1024 2 m 0,16,17
+ 1219 2 1219 2 1387 98.5 c 128,-1,18
+ 1555 195 1555 195 1654 364.5 c 128,-1,19
+ 1753 534 1753 534 1753 732 c 0,20,21
+ 1753 928 1753 928 1655 1096.5 c 128,-1,22
+ 1557 1265 1557 1265 1388.5 1362.5 c 128,-1,23
+ 1220 1460 1220 1460 1024 1460 c 256,24,25
+ 828 1460 828 1460 659.5 1362 c 128,-1,26
+ 491 1264 491 1264 393.5 1095.5 c 128,-1,27
+ 296 927 296 927 296 732 c 0,28,29
+ 296 534 296 534 395.5 364.5 c 128,-1,30
+ 495 195 495 195 663 98.5 c 128,-1,31
+ 831 2 831 2 1024 2 c 0,16,17
+1359 992 m 1,32,-1
+ 1417 891 l 1,33,-1
+ 1147 735 l 1,34,-1
+ 1148 732 l 1,35,36
+ 1148 680 1148 680 1111.5 644 c 128,-1,37
+ 1075 608 1075 608 1024 608 c 256,38,39
+ 973 608 973 608 937 644 c 128,-1,40
+ 901 680 901 680 901 732 c 0,41,42
+ 901 767 901 767 919 795.5 c 128,-1,43
+ 937 824 937 824 966 839 c 1,44,-1
+ 966 1396 l 1,45,-1
+ 1082 1396 l 1,46,-1
+ 1082 839 l 1,47,-1
+ 1089 836 l 1,48,-1
+ 1359 992 l 1,32,-1
+1654 778 m 0,49,50
+ 1674 778 1674 778 1687.5 764.5 c 128,-1,51
+ 1701 751 1701 751 1701 732 c 0,52,53
+ 1701 712 1701 712 1687.5 698 c 128,-1,54
+ 1674 684 1674 684 1654 684 c 0,55,56
+ 1635 684 1635 684 1621.5 698 c 128,-1,57
+ 1608 712 1608 712 1608 732 c 0,58,59
+ 1608 751 1608 751 1621.5 764.5 c 128,-1,60
+ 1635 778 1635 778 1654 778 c 0,49,50
+756 185 m 0,61,62
+ 756 164 756 164 741.5 151.5 c 128,-1,63
+ 727 139 727 139 709 139 c 0,64,65
+ 689 139 689 139 676 153.5 c 128,-1,66
+ 663 168 663 168 663 186 c 0,67,68
+ 663 206 663 206 677.5 219 c 128,-1,69
+ 692 232 692 232 709 232 c 0,70,71
+ 729 232 729 232 742.5 218.5 c 128,-1,72
+ 756 205 756 205 756 185 c 0,61,62
+1024 684 m 0,73,74
+ 1043 684 1043 684 1057 698 c 128,-1,75
+ 1071 712 1071 712 1071 732 c 0,76,77
+ 1071 751 1071 751 1057.5 764.5 c 128,-1,78
+ 1044 778 1044 778 1024 778 c 0,79,80
+ 1005 778 1005 778 991.5 764.5 c 128,-1,81
+ 978 751 978 751 978 732 c 0,82,83
+ 978 712 978 712 992.5 698 c 128,-1,84
+ 1007 684 1007 684 1024 684 c 0,73,74
+394 778 m 256,85,86
+ 414 778 414 778 427.5 764.5 c 128,-1,87
+ 441 751 441 751 441 732 c 0,88,89
+ 441 712 441 712 428 698.5 c 128,-1,90
+ 415 685 415 685 396 685 c 0,91,92
+ 376 685 376 685 362 698.5 c 128,-1,93
+ 348 712 348 712 348 732 c 0,94,95
+ 348 751 348 751 361 764.5 c 128,-1,96
+ 374 778 374 778 394 778 c 256,85,86
+1339 232 m 0,97,98
+ 1357 232 1357 232 1371.5 219 c 128,-1,99
+ 1386 206 1386 206 1386 186 c 0,100,101
+ 1386 168 1386 168 1373 153.5 c 128,-1,102
+ 1360 139 1360 139 1339 139 c 0,103,104
+ 1322 139 1322 139 1307.5 152 c 128,-1,105
+ 1293 165 1293 165 1293 185 c 0,106,107
+ 1293 206 1293 206 1306.5 219 c 128,-1,108
+ 1320 232 1320 232 1339 232 c 0,97,98
+710 1323 m 0,109,110
+ 727 1323 727 1323 741.5 1310.5 c 128,-1,111
+ 756 1298 756 1298 756 1277 c 0,112,113
+ 756 1259 756 1259 743 1244.5 c 128,-1,114
+ 730 1230 730 1230 709 1230 c 0,115,116
+ 692 1230 692 1230 677.5 1243 c 128,-1,117
+ 663 1256 663 1256 663 1277 c 0,118,119
+ 663 1297 663 1297 677 1310 c 128,-1,120
+ 691 1323 691 1323 710 1323 c 0,109,110
+479 462 m 0,121,122
+ 496 462 496 462 510.5 450 c 128,-1,123
+ 525 438 525 438 525 417 c 0,124,125
+ 525 399 525 399 512 384 c 128,-1,126
+ 499 369 499 369 478 369 c 0,127,128
+ 460 369 460 369 446 382.5 c 128,-1,129
+ 432 396 432 396 432 417 c 0,130,131
+ 432 437 432 437 446.5 449.5 c 128,-1,132
+ 461 462 461 462 479 462 c 0,121,122
+1024 147 m 256,133,134
+ 1044 147 1044 147 1057.5 134 c 128,-1,135
+ 1071 121 1071 121 1071 101 c 0,136,137
+ 1071 82 1071 82 1057.5 68 c 128,-1,138
+ 1044 54 1044 54 1024 54 c 0,139,140
+ 1005 54 1005 54 991.5 68 c 128,-1,141
+ 978 82 978 82 978 101 c 0,142,143
+ 978 121 978 121 991 134 c 128,-1,144
+ 1004 147 1004 147 1024 147 c 256,133,134
+525 1046 m 256,145,146
+ 525 1025 525 1025 510.5 1012.5 c 128,-1,147
+ 496 1000 496 1000 478 1000 c 0,148,149
+ 458 1000 458 1000 445 1014.5 c 128,-1,150
+ 432 1029 432 1029 432 1046 c 0,151,152
+ 432 1066 432 1066 446.5 1079.5 c 128,-1,153
+ 461 1093 461 1093 479 1093 c 0,154,155
+ 498 1093 498 1093 511.5 1080 c 128,-1,156
+ 525 1067 525 1067 525 1046 c 256,145,146
+1293 1277 m 0,157,158
+ 1293 1297 1293 1297 1307.5 1310 c 128,-1,159
+ 1322 1323 1322 1323 1339 1323 c 0,160,161
+ 1359 1323 1359 1323 1372.5 1308.5 c 128,-1,162
+ 1386 1294 1386 1294 1386 1277 c 0,163,164
+ 1386 1256 1386 1256 1371.5 1243 c 128,-1,165
+ 1357 1230 1357 1230 1340 1230 c 0,166,167
+ 1322 1230 1322 1230 1307.5 1243 c 128,-1,168
+ 1293 1256 1293 1256 1293 1277 c 0,157,158
+1570 1000 m 0,169,170
+ 1551 1000 1551 1000 1537.5 1013 c 128,-1,171
+ 1524 1026 1524 1026 1524 1046 c 0,172,173
+ 1524 1064 1524 1064 1537 1078.5 c 128,-1,174
+ 1550 1093 1550 1093 1570 1093 c 0,175,176
+ 1587 1093 1587 1093 1601.5 1080.5 c 128,-1,177
+ 1616 1068 1616 1068 1616 1047 c 0,178,179
+ 1616 1020 1616 1020 1594 1006 c 1,180,181
+ 1582 1000 1582 1000 1570 1000 c 0,169,170
+1616 415 m 0,182,183
+ 1616 394 1616 394 1602 381.5 c 128,-1,184
+ 1588 369 1588 369 1571 369 c 0,185,186
+ 1550 369 1550 369 1537 384 c 128,-1,187
+ 1524 399 1524 399 1524 416 c 0,188,189
+ 1524 436 1524 436 1538 449 c 128,-1,190
+ 1552 462 1552 462 1570 462 c 0,191,192
+ 1582 462 1582 462 1594 456 c 1,193,194
+ 1616 442 1616 442 1616 415 c 0,182,183
+EndSplineSet
+EndChar
+
+StartChar: notequal
+Encoding: 185 8800 40
+Width: 2048
+Flags: W
+LayerCount: 2
+Fore
+SplineSet
+1024 1538 m 0,0,1
+ 1239 1538 1239 1538 1427 1430 c 128,-1,2
+ 1615 1322 1615 1322 1723 1133.5 c 128,-1,3
+ 1831 945 1831 945 1831 731 c 0,4,5
+ 1831 515 1831 515 1722 327.5 c 128,-1,6
+ 1613 140 1613 140 1425.5 32.5 c 128,-1,7
+ 1238 -75 1238 -75 1024 -75 c 0,8,9
+ 808 -75 808 -75 621 33 c 128,-1,10
+ 434 141 434 141 326 328 c 128,-1,11
+ 218 515 218 515 218 731 c 0,12,13
+ 218 945 218 945 325.5 1132.5 c 128,-1,14
+ 433 1320 433 1320 620.5 1429 c 128,-1,15
+ 808 1538 808 1538 1024 1538 c 0,0,1
+1024 3 m 0,16,17
+ 1220 3 1220 3 1388 100 c 128,-1,18
+ 1556 197 1556 197 1654.5 365.5 c 128,-1,19
+ 1753 534 1753 534 1753 731 c 0,20,21
+ 1753 927 1753 927 1655 1096 c 128,-1,22
+ 1557 1265 1557 1265 1388.5 1362.5 c 128,-1,23
+ 1220 1460 1220 1460 1024 1460 c 256,24,25
+ 828 1460 828 1460 659.5 1362 c 128,-1,26
+ 491 1264 491 1264 393.5 1095.5 c 128,-1,27
+ 296 927 296 927 296 731 c 0,28,29
+ 296 533 296 533 394.5 365 c 128,-1,30
+ 493 197 493 197 661 100 c 128,-1,31
+ 829 3 829 3 1024 3 c 0,16,17
+1082 840 m 1,32,33
+ 1115 822 1115 822 1133 789 c 1,34,-1
+ 1445 789 l 1,35,-1
+ 1445 673 l 1,36,-1
+ 1133 673 l 1,37,38
+ 1117 644 1117 644 1088 626 c 128,-1,39
+ 1059 608 1059 608 1024 608 c 0,40,41
+ 973 608 973 608 937 644 c 128,-1,42
+ 901 680 901 680 901 731 c 0,43,44
+ 901 767 901 767 919 795.5 c 128,-1,45
+ 937 824 937 824 966 840 c 1,46,-1
+ 966 1396 l 1,47,-1
+ 1082 1396 l 1,48,-1
+ 1082 840 l 1,32,33
+1024 685 m 0,49,50
+ 1044 685 1044 685 1057.5 698 c 128,-1,51
+ 1071 711 1071 711 1071 731 c 256,52,53
+ 1071 751 1071 751 1057.5 764.5 c 128,-1,54
+ 1044 778 1044 778 1024 778 c 256,55,56
+ 1004 778 1004 778 991 764.5 c 128,-1,57
+ 978 751 978 751 978 731 c 0,58,59
+ 978 712 978 712 990 698.5 c 128,-1,60
+ 1002 685 1002 685 1024 685 c 0,49,50
+1654 778 m 0,61,62
+ 1674 778 1674 778 1687.5 764.5 c 128,-1,63
+ 1701 751 1701 751 1701 731 c 256,64,65
+ 1701 711 1701 711 1687.5 698 c 128,-1,66
+ 1674 685 1674 685 1654 685 c 0,67,68
+ 1635 685 1635 685 1621.5 698 c 128,-1,69
+ 1608 711 1608 711 1608 731 c 256,70,71
+ 1608 751 1608 751 1621.5 764.5 c 128,-1,72
+ 1635 778 1635 778 1654 778 c 0,61,62
+1569 1000 m 0,73,74
+ 1551 1000 1551 1000 1537.5 1013 c 128,-1,75
+ 1524 1026 1524 1026 1524 1046 c 0,76,77
+ 1524 1064 1524 1064 1536.5 1078.5 c 128,-1,78
+ 1549 1093 1549 1093 1570 1093 c 0,79,80
+ 1587 1093 1587 1093 1601.5 1081 c 128,-1,81
+ 1616 1069 1616 1069 1616 1047 c 0,82,83
+ 1616 1026 1616 1026 1602.5 1013 c 128,-1,84
+ 1589 1000 1589 1000 1569 1000 c 0,73,74
+1293 1277 m 256,85,86
+ 1293 1297 1293 1297 1307.5 1310 c 128,-1,87
+ 1322 1323 1322 1323 1339 1323 c 0,88,89
+ 1359 1323 1359 1323 1372.5 1309.5 c 128,-1,90
+ 1386 1296 1386 1296 1386 1277 c 0,91,92
+ 1386 1257 1386 1257 1371.5 1244 c 128,-1,93
+ 1357 1231 1357 1231 1339 1231 c 0,94,95
+ 1320 1231 1320 1231 1306.5 1244 c 128,-1,96
+ 1293 1257 1293 1257 1293 1277 c 256,85,86
+710 1323 m 0,97,98
+ 728 1323 728 1323 742 1310.5 c 128,-1,99
+ 756 1298 756 1298 756 1277 c 0,100,101
+ 756 1260 756 1260 743 1245.5 c 128,-1,102
+ 730 1231 730 1231 709 1231 c 0,103,104
+ 692 1231 692 1231 677.5 1244 c 128,-1,105
+ 663 1257 663 1257 663 1277 c 0,106,107
+ 663 1296 663 1296 676 1309.5 c 128,-1,108
+ 689 1323 689 1323 710 1323 c 0,97,98
+525 1046 m 0,109,110
+ 525 1025 525 1025 510.5 1012.5 c 128,-1,111
+ 496 1000 496 1000 479 1000 c 0,112,113
+ 459 1000 459 1000 445.5 1014.5 c 128,-1,114
+ 432 1029 432 1029 432 1046 c 0,115,116
+ 432 1066 432 1066 446 1079.5 c 128,-1,117
+ 460 1093 460 1093 478 1093 c 0,118,119
+ 490 1093 490 1093 502 1087 c 1,120,121
+ 525 1072 525 1072 525 1046 c 0,109,110
+394 778 m 256,122,123
+ 414 778 414 778 427.5 764.5 c 128,-1,124
+ 441 751 441 751 441 731 c 256,125,126
+ 441 711 441 711 427.5 698 c 128,-1,127
+ 414 685 414 685 394 685 c 256,128,129
+ 374 685 374 685 361 698 c 128,-1,130
+ 348 711 348 711 348 731 c 256,131,132
+ 348 751 348 751 361 764.5 c 128,-1,133
+ 374 778 374 778 394 778 c 256,122,123
+479 462 m 0,134,135
+ 496 462 496 462 510.5 449.5 c 128,-1,136
+ 525 437 525 437 525 416 c 0,137,138
+ 525 399 525 399 512 384.5 c 128,-1,139
+ 499 370 499 370 478 370 c 0,140,141
+ 460 370 460 370 446 383.5 c 128,-1,142
+ 432 397 432 397 432 417 c 0,143,144
+ 432 436 432 436 445 449 c 128,-1,145
+ 458 462 458 462 479 462 c 0,134,135
+756 185 m 256,146,147
+ 756 164 756 164 741.5 151.5 c 128,-1,148
+ 727 139 727 139 709 139 c 0,149,150
+ 688 139 688 139 675.5 153.5 c 128,-1,151
+ 663 168 663 168 663 186 c 0,152,153
+ 663 206 663 206 678 219 c 128,-1,154
+ 693 232 693 232 710 232 c 0,155,156
+ 729 232 729 232 742.5 219 c 128,-1,157
+ 756 206 756 206 756 185 c 256,146,147
+1024 148 m 256,158,159
+ 1044 148 1044 148 1057.5 134.5 c 128,-1,160
+ 1071 121 1071 121 1071 101 c 256,161,162
+ 1071 81 1071 81 1057.5 68 c 128,-1,163
+ 1044 55 1044 55 1024 55 c 0,164,165
+ 1005 55 1005 55 991.5 68 c 128,-1,166
+ 978 81 978 81 978 101 c 256,167,168
+ 978 121 978 121 991 134.5 c 128,-1,169
+ 1004 148 1004 148 1024 148 c 256,158,159
+1339 232 m 0,170,171
+ 1356 232 1356 232 1371 219 c 128,-1,172
+ 1386 206 1386 206 1386 186 c 0,173,174
+ 1386 168 1386 168 1373.5 153.5 c 128,-1,175
+ 1361 139 1361 139 1339 139 c 0,176,177
+ 1322 139 1322 139 1307.5 152 c 128,-1,178
+ 1293 165 1293 165 1293 185 c 0,179,180
+ 1293 206 1293 206 1306.5 219 c 128,-1,181
+ 1320 232 1320 232 1339 232 c 0,170,171
+1616 415 m 0,182,183
+ 1616 394 1616 394 1601.5 382 c 128,-1,184
+ 1587 370 1587 370 1570 370 c 0,185,186
+ 1550 370 1550 370 1537 384.5 c 128,-1,187
+ 1524 399 1524 399 1524 416 c 0,188,189
+ 1524 436 1524 436 1538 449 c 128,-1,190
+ 1552 462 1552 462 1570 462 c 0,191,192
+ 1589 462 1589 462 1602.5 449.5 c 128,-1,193
+ 1616 437 1616 437 1616 415 c 0,182,183
+EndSplineSet
+EndChar
+
+StartChar: equivalence
+Encoding: 186 8801 41
+Width: 2048
+Flags: W
+LayerCount: 2
+Fore
+SplineSet
+1024 1538 m 0,0,1
+ 1239 1538 1239 1538 1427 1430 c 128,-1,2
+ 1615 1322 1615 1322 1723 1133.5 c 128,-1,3
+ 1831 945 1831 945 1831 731 c 0,4,5
+ 1831 515 1831 515 1722 327.5 c 128,-1,6
+ 1613 140 1613 140 1425.5 32.5 c 128,-1,7
+ 1238 -75 1238 -75 1024 -75 c 0,8,9
+ 808 -75 808 -75 621 33 c 128,-1,10
+ 434 141 434 141 326 328 c 128,-1,11
+ 218 515 218 515 218 731 c 0,12,13
+ 218 945 218 945 325.5 1132.5 c 128,-1,14
+ 433 1320 433 1320 620.5 1429 c 128,-1,15
+ 808 1538 808 1538 1024 1538 c 0,0,1
+1024 3 m 0,16,17
+ 1220 3 1220 3 1388 100 c 128,-1,18
+ 1556 197 1556 197 1654.5 365.5 c 128,-1,19
+ 1753 534 1753 534 1753 731 c 0,20,21
+ 1753 927 1753 927 1655 1096 c 128,-1,22
+ 1557 1265 1557 1265 1388.5 1362.5 c 128,-1,23
+ 1220 1460 1220 1460 1024 1460 c 256,24,25
+ 828 1460 828 1460 659.5 1362 c 128,-1,26
+ 491 1264 491 1264 393.5 1095.5 c 128,-1,27
+ 296 927 296 927 296 731 c 0,28,29
+ 296 533 296 533 394.5 365 c 128,-1,30
+ 493 197 493 197 661 100 c 128,-1,31
+ 829 3 829 3 1024 3 c 0,16,17
+1082 840 m 1,32,33
+ 1115 822 1115 822 1133 789 c 1,34,-1
+ 1445 789 l 1,35,-1
+ 1445 673 l 1,36,-1
+ 1133 673 l 1,37,38
+ 1117 644 1117 644 1088 626 c 128,-1,39
+ 1059 608 1059 608 1024 608 c 0,40,41
+ 973 608 973 608 937 644 c 128,-1,42
+ 901 680 901 680 901 731 c 0,43,44
+ 901 767 901 767 919 795.5 c 128,-1,45
+ 937 824 937 824 966 840 c 1,46,-1
+ 966 1396 l 1,47,-1
+ 1082 1396 l 1,48,-1
+ 1082 840 l 1,32,33
+1024 685 m 0,49,50
+ 1044 685 1044 685 1057.5 698 c 128,-1,51
+ 1071 711 1071 711 1071 731 c 256,52,53
+ 1071 751 1071 751 1057.5 764.5 c 128,-1,54
+ 1044 778 1044 778 1024 778 c 256,55,56
+ 1004 778 1004 778 991 764.5 c 128,-1,57
+ 978 751 978 751 978 731 c 0,58,59
+ 978 712 978 712 990 698.5 c 128,-1,60
+ 1002 685 1002 685 1024 685 c 0,49,50
+1654 778 m 0,61,62
+ 1674 778 1674 778 1687.5 764.5 c 128,-1,63
+ 1701 751 1701 751 1701 731 c 256,64,65
+ 1701 711 1701 711 1687.5 698 c 128,-1,66
+ 1674 685 1674 685 1654 685 c 0,67,68
+ 1635 685 1635 685 1621.5 698 c 128,-1,69
+ 1608 711 1608 711 1608 731 c 256,70,71
+ 1608 751 1608 751 1621.5 764.5 c 128,-1,72
+ 1635 778 1635 778 1654 778 c 0,61,62
+1569 1000 m 0,73,74
+ 1551 1000 1551 1000 1537.5 1013 c 128,-1,75
+ 1524 1026 1524 1026 1524 1046 c 0,76,77
+ 1524 1064 1524 1064 1536.5 1078.5 c 128,-1,78
+ 1549 1093 1549 1093 1570 1093 c 0,79,80
+ 1587 1093 1587 1093 1601.5 1081 c 128,-1,81
+ 1616 1069 1616 1069 1616 1047 c 0,82,83
+ 1616 1026 1616 1026 1602.5 1013 c 128,-1,84
+ 1589 1000 1589 1000 1569 1000 c 0,73,74
+1293 1277 m 256,85,86
+ 1293 1297 1293 1297 1307.5 1310 c 128,-1,87
+ 1322 1323 1322 1323 1339 1323 c 0,88,89
+ 1359 1323 1359 1323 1372.5 1309.5 c 128,-1,90
+ 1386 1296 1386 1296 1386 1277 c 0,91,92
+ 1386 1257 1386 1257 1371.5 1244 c 128,-1,93
+ 1357 1231 1357 1231 1339 1231 c 0,94,95
+ 1320 1231 1320 1231 1306.5 1244 c 128,-1,96
+ 1293 1257 1293 1257 1293 1277 c 256,85,86
+710 1323 m 0,97,98
+ 728 1323 728 1323 742 1310.5 c 128,-1,99
+ 756 1298 756 1298 756 1277 c 0,100,101
+ 756 1260 756 1260 743 1245.5 c 128,-1,102
+ 730 1231 730 1231 709 1231 c 0,103,104
+ 692 1231 692 1231 677.5 1244 c 128,-1,105
+ 663 1257 663 1257 663 1277 c 0,106,107
+ 663 1296 663 1296 676 1309.5 c 128,-1,108
+ 689 1323 689 1323 710 1323 c 0,97,98
+525 1046 m 0,109,110
+ 525 1025 525 1025 510.5 1012.5 c 128,-1,111
+ 496 1000 496 1000 479 1000 c 0,112,113
+ 459 1000 459 1000 445.5 1014.5 c 128,-1,114
+ 432 1029 432 1029 432 1046 c 0,115,116
+ 432 1066 432 1066 446 1079.5 c 128,-1,117
+ 460 1093 460 1093 478 1093 c 0,118,119
+ 490 1093 490 1093 502 1087 c 1,120,121
+ 525 1072 525 1072 525 1046 c 0,109,110
+394 778 m 256,122,123
+ 414 778 414 778 427.5 764.5 c 128,-1,124
+ 441 751 441 751 441 731 c 256,125,126
+ 441 711 441 711 427.5 698 c 128,-1,127
+ 414 685 414 685 394 685 c 256,128,129
+ 374 685 374 685 361 698 c 128,-1,130
+ 348 711 348 711 348 731 c 256,131,132
+ 348 751 348 751 361 764.5 c 128,-1,133
+ 374 778 374 778 394 778 c 256,122,123
+479 462 m 0,134,135
+ 496 462 496 462 510.5 449.5 c 128,-1,136
+ 525 437 525 437 525 416 c 0,137,138
+ 525 399 525 399 512 384.5 c 128,-1,139
+ 499 370 499 370 478 370 c 0,140,141
+ 460 370 460 370 446 383.5 c 128,-1,142
+ 432 397 432 397 432 417 c 0,143,144
+ 432 436 432 436 445 449 c 128,-1,145
+ 458 462 458 462 479 462 c 0,134,135
+756 185 m 256,146,147
+ 756 164 756 164 741.5 151.5 c 128,-1,148
+ 727 139 727 139 709 139 c 0,149,150
+ 688 139 688 139 675.5 153.5 c 128,-1,151
+ 663 168 663 168 663 186 c 0,152,153
+ 663 206 663 206 678 219 c 128,-1,154
+ 693 232 693 232 710 232 c 0,155,156
+ 729 232 729 232 742.5 219 c 128,-1,157
+ 756 206 756 206 756 185 c 256,146,147
+1024 148 m 256,158,159
+ 1044 148 1044 148 1057.5 134.5 c 128,-1,160
+ 1071 121 1071 121 1071 101 c 256,161,162
+ 1071 81 1071 81 1057.5 68 c 128,-1,163
+ 1044 55 1044 55 1024 55 c 0,164,165
+ 1005 55 1005 55 991.5 68 c 128,-1,166
+ 978 81 978 81 978 101 c 256,167,168
+ 978 121 978 121 991 134.5 c 128,-1,169
+ 1004 148 1004 148 1024 148 c 256,158,159
+1339 232 m 0,170,171
+ 1356 232 1356 232 1371 219 c 128,-1,172
+ 1386 206 1386 206 1386 186 c 0,173,174
+ 1386 168 1386 168 1373.5 153.5 c 128,-1,175
+ 1361 139 1361 139 1339 139 c 0,176,177
+ 1322 139 1322 139 1307.5 152 c 128,-1,178
+ 1293 165 1293 165 1293 185 c 0,179,180
+ 1293 206 1293 206 1306.5 219 c 128,-1,181
+ 1320 232 1320 232 1339 232 c 0,170,171
+1616 415 m 0,182,183
+ 1616 394 1616 394 1601.5 382 c 128,-1,184
+ 1587 370 1587 370 1570 370 c 0,185,186
+ 1550 370 1550 370 1537 384.5 c 128,-1,187
+ 1524 399 1524 399 1524 416 c 0,188,189
+ 1524 436 1524 436 1538 449 c 128,-1,190
+ 1552 462 1552 462 1570 462 c 0,191,192
+ 1589 462 1589 462 1602.5 449.5 c 128,-1,193
+ 1616 437 1616 437 1616 415 c 0,182,183
+EndSplineSet
+EndChar
+
+StartChar: approxequal
+Encoding: 187 8776 42
+Width: 2048
+Flags: W
+LayerCount: 2
+Fore
+SplineSet
+1024 1538 m 256,0,1
+ 1240 1538 1240 1538 1427.5 1429 c 128,-1,2
+ 1615 1320 1615 1320 1722.5 1132.5 c 128,-1,3
+ 1830 945 1830 945 1830 731 c 0,4,5
+ 1830 515 1830 515 1722 328 c 128,-1,6
+ 1614 141 1614 141 1427 33 c 128,-1,7
+ 1240 -75 1240 -75 1024 -75 c 256,8,9
+ 808 -75 808 -75 621 33 c 128,-1,10
+ 434 141 434 141 326 328 c 128,-1,11
+ 218 515 218 515 218 731 c 0,12,13
+ 218 945 218 945 325.5 1132.5 c 128,-1,14
+ 433 1320 433 1320 620.5 1429 c 128,-1,15
+ 808 1538 808 1538 1024 1538 c 256,0,1
+1024 3 m 0,16,17
+ 1220 3 1220 3 1388.5 100.5 c 128,-1,18
+ 1557 198 1557 198 1654.5 367 c 128,-1,19
+ 1752 536 1752 536 1752 731 c 0,20,21
+ 1752 927 1752 927 1655 1095 c 128,-1,22
+ 1558 1263 1558 1263 1389.5 1361.5 c 128,-1,23
+ 1221 1460 1221 1460 1024 1460 c 0,24,25
+ 826 1460 826 1460 658 1361.5 c 128,-1,26
+ 490 1263 490 1263 393 1095 c 128,-1,27
+ 296 927 296 927 296 731 c 256,28,29
+ 296 535 296 535 393.5 366.5 c 128,-1,30
+ 491 198 491 198 660 100.5 c 128,-1,31
+ 829 3 829 3 1024 3 c 0,16,17
+1147 731 m 0,32,33
+ 1147 695 1147 695 1128 666 c 1,34,-1
+ 1285 397 l 1,35,-1
+ 1184 338 l 1,36,-1
+ 1028 608 l 1,37,38
+ 974 608 974 608 937 643 c 128,-1,39
+ 900 678 900 678 900 731 c 0,40,41
+ 900 766 900 766 918.5 795 c 128,-1,42
+ 937 824 937 824 966 840 c 1,43,-1
+ 966 1396 l 1,44,-1
+ 1082 1396 l 1,45,-1
+ 1082 840 l 1,46,47
+ 1111 824 1111 824 1129 795 c 128,-1,48
+ 1147 766 1147 766 1147 731 c 0,32,33
+1024 685 m 256,49,50
+ 1044 685 1044 685 1057 698.5 c 128,-1,51
+ 1070 712 1070 712 1070 731 c 0,52,53
+ 1070 751 1070 751 1057 764.5 c 128,-1,54
+ 1044 778 1044 778 1024 778 c 256,55,56
+ 1004 778 1004 778 991 764 c 128,-1,57
+ 978 750 978 750 978 731 c 0,58,59
+ 978 711 978 711 991 698 c 128,-1,60
+ 1004 685 1004 685 1024 685 c 256,49,50
+1654 778 m 0,61,62
+ 1674 778 1674 778 1687 764.5 c 128,-1,63
+ 1700 751 1700 751 1700 731 c 256,64,65
+ 1700 711 1700 711 1687 698 c 128,-1,66
+ 1674 685 1674 685 1654 685 c 0,67,68
+ 1635 685 1635 685 1621.5 698 c 128,-1,69
+ 1608 711 1608 711 1608 731 c 256,70,71
+ 1608 751 1608 751 1621.5 764.5 c 128,-1,72
+ 1635 778 1635 778 1654 778 c 0,61,62
+1570 1000 m 0,73,74
+ 1551 1000 1551 1000 1537 1013.5 c 128,-1,75
+ 1523 1027 1523 1027 1523 1047 c 0,76,77
+ 1523 1064 1523 1064 1535.5 1078.5 c 128,-1,78
+ 1548 1093 1548 1093 1570 1093 c 0,79,80
+ 1587 1093 1587 1093 1601.5 1080 c 128,-1,81
+ 1616 1067 1616 1067 1616 1046 c 0,82,83
+ 1616 1026 1616 1026 1602 1013 c 128,-1,84
+ 1588 1000 1588 1000 1570 1000 c 0,73,74
+1385 1276 m 0,85,86
+ 1385 1255 1385 1255 1370.5 1242.5 c 128,-1,87
+ 1356 1230 1356 1230 1338 1230 c 0,88,89
+ 1318 1230 1318 1230 1305.5 1244.5 c 128,-1,90
+ 1293 1259 1293 1259 1293 1277 c 0,91,92
+ 1293 1297 1293 1297 1306.5 1310 c 128,-1,93
+ 1320 1323 1320 1323 1338 1323 c 0,94,95
+ 1359 1323 1359 1323 1372 1310.5 c 128,-1,96
+ 1385 1298 1385 1298 1385 1276 c 0,85,86
+709 1323 m 0,97,98
+ 728 1323 728 1323 741.5 1310 c 128,-1,99
+ 755 1297 755 1297 755 1277 c 0,100,101
+ 755 1258 755 1258 742 1244.5 c 128,-1,102
+ 729 1231 729 1231 709 1231 c 0,103,104
+ 690 1231 690 1231 676 1244.5 c 128,-1,105
+ 662 1258 662 1258 662 1278 c 0,106,107
+ 662 1297 662 1297 675 1310 c 128,-1,108
+ 688 1323 688 1323 709 1323 c 0,97,98
+524 1047 m 0,109,110
+ 524 1027 524 1027 510.5 1013.5 c 128,-1,111
+ 497 1000 497 1000 478 1000 c 0,112,113
+ 458 1000 458 1000 445 1014.5 c 128,-1,114
+ 432 1029 432 1029 432 1046 c 0,115,116
+ 432 1067 432 1067 445.5 1080 c 128,-1,117
+ 459 1093 459 1093 478 1093 c 0,118,119
+ 490 1093 490 1093 502 1087 c 1,120,121
+ 524 1073 524 1073 524 1047 c 0,109,110
+394 778 m 0,122,123
+ 413 778 413 778 426.5 764.5 c 128,-1,124
+ 440 751 440 751 440 731 c 256,125,126
+ 440 711 440 711 426.5 698 c 128,-1,127
+ 413 685 413 685 394 685 c 0,128,129
+ 374 685 374 685 360.5 698 c 128,-1,130
+ 347 711 347 711 347 731 c 256,131,132
+ 347 751 347 751 360.5 764.5 c 128,-1,133
+ 374 778 374 778 394 778 c 0,122,123
+479 462 m 0,134,135
+ 497 462 497 462 510.5 449 c 128,-1,136
+ 524 436 524 436 524 416 c 0,137,138
+ 524 399 524 399 511 384.5 c 128,-1,139
+ 498 370 498 370 478 370 c 0,140,141
+ 460 370 460 370 446 383 c 128,-1,142
+ 432 396 432 396 432 416 c 0,143,144
+ 432 435 432 435 445 448.5 c 128,-1,145
+ 458 462 458 462 479 462 c 0,134,135
+755 185 m 0,146,147
+ 755 165 755 165 741 152 c 128,-1,148
+ 727 139 727 139 709 139 c 0,149,150
+ 687 139 687 139 674.5 153.5 c 128,-1,151
+ 662 168 662 168 662 186 c 0,152,153
+ 662 207 662 207 676 219 c 128,-1,154
+ 690 231 690 231 708 231 c 0,155,156
+ 727 231 727 231 741 219 c 128,-1,157
+ 755 207 755 207 755 185 c 0,146,147
+1024 148 m 256,158,159
+ 1044 148 1044 148 1057 134 c 128,-1,160
+ 1070 120 1070 120 1070 101 c 0,161,162
+ 1070 81 1070 81 1057 68 c 128,-1,163
+ 1044 55 1044 55 1024 55 c 256,164,165
+ 1004 55 1004 55 991 68 c 128,-1,166
+ 978 81 978 81 978 101 c 0,167,168
+ 978 120 978 120 991 134 c 128,-1,169
+ 1004 148 1004 148 1024 148 c 256,158,159
+1340 231 m 0,170,171
+ 1357 231 1357 231 1371 219 c 128,-1,172
+ 1385 207 1385 207 1385 187 c 0,173,174
+ 1385 168 1385 168 1372.5 153.5 c 128,-1,175
+ 1360 139 1360 139 1339 139 c 0,176,177
+ 1320 139 1320 139 1306.5 152 c 128,-1,178
+ 1293 165 1293 165 1293 185 c 0,179,180
+ 1293 207 1293 207 1306.5 219 c 128,-1,181
+ 1320 231 1320 231 1340 231 c 0,170,171
+1616 416 m 0,182,183
+ 1616 396 1616 396 1601.5 383 c 128,-1,184
+ 1587 370 1587 370 1570 370 c 0,185,186
+ 1549 370 1549 370 1536 384 c 128,-1,187
+ 1523 398 1523 398 1523 415 c 0,188,189
+ 1523 435 1523 435 1537.5 448.5 c 128,-1,190
+ 1552 462 1552 462 1569 462 c 0,191,192
+ 1590 462 1590 462 1603 448.5 c 128,-1,193
+ 1616 435 1616 435 1616 416 c 0,182,183
+EndSplineSet
+EndChar
+
+StartChar: ellipsis
+Encoding: 188 8230 43
+Width: 2048
+Flags: W
+LayerCount: 2
+Fore
+SplineSet
+1024 1538 m 256,0,1
+ 1240 1538 1240 1538 1427.5 1429 c 128,-1,2
+ 1615 1320 1615 1320 1722.5 1132.5 c 128,-1,3
+ 1830 945 1830 945 1830 731 c 0,4,5
+ 1830 515 1830 515 1722 328 c 128,-1,6
+ 1614 141 1614 141 1427 33 c 128,-1,7
+ 1240 -75 1240 -75 1024 -75 c 256,8,9
+ 808 -75 808 -75 621 33 c 128,-1,10
+ 434 141 434 141 326 328 c 128,-1,11
+ 218 515 218 515 218 731 c 0,12,13
+ 218 945 218 945 325.5 1132.5 c 128,-1,14
+ 433 1320 433 1320 620.5 1429 c 128,-1,15
+ 808 1538 808 1538 1024 1538 c 256,0,1
+1024 3 m 256,16,17
+ 1222 3 1222 3 1390 101.5 c 128,-1,18
+ 1558 200 1558 200 1655 368 c 128,-1,19
+ 1752 536 1752 536 1752 731 c 0,20,21
+ 1752 927 1752 927 1655 1095 c 128,-1,22
+ 1558 1263 1558 1263 1389.5 1361.5 c 128,-1,23
+ 1221 1460 1221 1460 1024 1460 c 0,24,25
+ 826 1460 826 1460 658 1361.5 c 128,-1,26
+ 490 1263 490 1263 393 1095 c 128,-1,27
+ 296 927 296 927 296 731 c 0,28,29
+ 296 536 296 536 393 368 c 128,-1,30
+ 490 200 490 200 658 101.5 c 128,-1,31
+ 826 3 826 3 1024 3 c 256,16,17
+1082 840 m 1,32,33
+ 1111 824 1111 824 1129 795.5 c 128,-1,34
+ 1147 767 1147 767 1147 732 c 256,35,36
+ 1147 697 1147 697 1129 668 c 128,-1,37
+ 1111 639 1111 639 1082 623 c 1,38,-1
+ 1082 311 l 1,39,-1
+ 966 311 l 1,40,-1
+ 966 623 l 1,41,42
+ 937 639 937 639 918.5 667.5 c 128,-1,43
+ 900 696 900 696 900 732 c 0,44,45
+ 900 767 900 767 918.5 795.5 c 128,-1,46
+ 937 824 937 824 966 840 c 1,47,-1
+ 966 1396 l 1,48,-1
+ 1082 1396 l 1,49,-1
+ 1082 840 l 1,32,33
+1024 685 m 0,50,51
+ 1042 685 1042 685 1056 698 c 128,-1,52
+ 1070 711 1070 711 1070 731 c 0,53,54
+ 1070 750 1070 750 1056.5 764 c 128,-1,55
+ 1043 778 1043 778 1024 778 c 256,56,57
+ 1005 778 1005 778 991.5 764 c 128,-1,58
+ 978 750 978 750 978 731 c 0,59,60
+ 978 711 978 711 991.5 698 c 128,-1,61
+ 1005 685 1005 685 1024 685 c 0,50,51
+1654 778 m 0,62,63
+ 1674 778 1674 778 1687 764.5 c 128,-1,64
+ 1700 751 1700 751 1700 731 c 0,65,66
+ 1700 712 1700 712 1687 698.5 c 128,-1,67
+ 1674 685 1674 685 1654 685 c 0,68,69
+ 1635 685 1635 685 1621.5 698.5 c 128,-1,70
+ 1608 712 1608 712 1608 731 c 0,71,72
+ 1608 751 1608 751 1621.5 764.5 c 128,-1,73
+ 1635 778 1635 778 1654 778 c 0,62,63
+1570 1000 m 0,74,75
+ 1551 1000 1551 1000 1537 1013.5 c 128,-1,76
+ 1523 1027 1523 1027 1523 1047 c 0,77,78
+ 1523 1064 1523 1064 1536 1078.5 c 128,-1,79
+ 1549 1093 1549 1093 1570 1093 c 0,80,81
+ 1587 1093 1587 1093 1601.5 1080 c 128,-1,82
+ 1616 1067 1616 1067 1616 1046 c 0,83,84
+ 1616 1026 1616 1026 1602 1013 c 128,-1,85
+ 1588 1000 1588 1000 1570 1000 c 0,74,75
+1385 1276 m 0,86,87
+ 1385 1255 1385 1255 1370.5 1243 c 128,-1,88
+ 1356 1231 1356 1231 1339 1231 c 0,89,90
+ 1319 1231 1319 1231 1306 1245.5 c 128,-1,91
+ 1293 1260 1293 1260 1293 1277 c 0,92,93
+ 1293 1297 1293 1297 1306.5 1310.5 c 128,-1,94
+ 1320 1324 1320 1324 1340 1324 c 0,95,96
+ 1359 1324 1359 1324 1372 1311 c 128,-1,97
+ 1385 1298 1385 1298 1385 1276 c 0,86,87
+708 1324 m 0,98,99
+ 727 1324 727 1324 741 1310.5 c 128,-1,100
+ 755 1297 755 1297 755 1277 c 0,101,102
+ 755 1260 755 1260 742 1245.5 c 128,-1,103
+ 729 1231 729 1231 709 1231 c 0,104,105
+ 690 1231 690 1231 676 1244.5 c 128,-1,106
+ 662 1258 662 1258 662 1278 c 256,107,108
+ 662 1298 662 1298 676 1311 c 128,-1,109
+ 690 1324 690 1324 708 1324 c 0,98,99
+524 1047 m 0,110,111
+ 524 1027 524 1027 510.5 1013.5 c 128,-1,112
+ 497 1000 497 1000 478 1000 c 0,113,114
+ 458 1000 458 1000 445 1014.5 c 128,-1,115
+ 432 1029 432 1029 432 1046 c 0,116,117
+ 432 1066 432 1066 445.5 1079.5 c 128,-1,118
+ 459 1093 459 1093 478 1093 c 0,119,120
+ 490 1093 490 1093 502 1087 c 1,121,122
+ 524 1073 524 1073 524 1047 c 0,110,111
+394 778 m 0,123,124
+ 413 778 413 778 426.5 764.5 c 128,-1,125
+ 440 751 440 751 440 731 c 0,126,127
+ 440 712 440 712 426.5 698.5 c 128,-1,128
+ 413 685 413 685 394 685 c 0,129,130
+ 374 685 374 685 360.5 698.5 c 128,-1,131
+ 347 712 347 712 347 731 c 0,132,133
+ 347 751 347 751 360.5 764.5 c 128,-1,134
+ 374 778 374 778 394 778 c 0,123,124
+478 463 m 256,135,136
+ 497 463 497 463 510.5 449.5 c 128,-1,137
+ 524 436 524 436 524 416 c 0,138,139
+ 524 399 524 399 511 384.5 c 128,-1,140
+ 498 370 498 370 478 370 c 0,141,142
+ 460 370 460 370 446 383 c 128,-1,143
+ 432 396 432 396 432 416 c 0,144,145
+ 432 435 432 435 445.5 449 c 128,-1,146
+ 459 463 459 463 478 463 c 256,135,136
+755 185 m 0,147,148
+ 755 165 755 165 740.5 152 c 128,-1,149
+ 726 139 726 139 708 139 c 0,150,151
+ 688 139 688 139 675 153.5 c 128,-1,152
+ 662 168 662 168 662 185 c 0,153,154
+ 662 207 662 207 676.5 219.5 c 128,-1,155
+ 691 232 691 232 709 232 c 0,156,157
+ 728 232 728 232 741.5 218 c 128,-1,158
+ 755 204 755 204 755 185 c 0,147,148
+1024 147 m 256,159,160
+ 1044 147 1044 147 1057 134 c 128,-1,161
+ 1070 121 1070 121 1070 101 c 0,162,163
+ 1070 82 1070 82 1057 68.5 c 128,-1,164
+ 1044 55 1044 55 1024 55 c 256,165,166
+ 1004 55 1004 55 991 68.5 c 128,-1,167
+ 978 82 978 82 978 101 c 0,168,169
+ 978 121 978 121 991 134 c 128,-1,170
+ 1004 147 1004 147 1024 147 c 256,159,160
+1339 232 m 0,171,172
+ 1356 232 1356 232 1370.5 219.5 c 128,-1,173
+ 1385 207 1385 207 1385 186 c 0,174,175
+ 1385 167 1385 167 1372.5 153 c 128,-1,176
+ 1360 139 1360 139 1339 139 c 0,177,178
+ 1322 139 1322 139 1307.5 152 c 128,-1,179
+ 1293 165 1293 165 1293 185 c 0,180,181
+ 1293 204 1293 204 1306.5 218 c 128,-1,182
+ 1320 232 1320 232 1339 232 c 0,171,172
+1616 416 m 0,183,184
+ 1616 396 1616 396 1601.5 383 c 128,-1,185
+ 1587 370 1587 370 1570 370 c 0,186,187
+ 1549 370 1549 370 1536 384.5 c 128,-1,188
+ 1523 399 1523 399 1523 416 c 0,189,190
+ 1523 436 1523 436 1537 449.5 c 128,-1,191
+ 1551 463 1551 463 1570 463 c 256,192,193
+ 1589 463 1589 463 1602.5 449 c 128,-1,194
+ 1616 435 1616 435 1616 416 c 0,183,184
+EndSplineSet
+EndChar
+
+StartChar: uniF8E6
+Encoding: 189 63718 44
+Width: 2048
+Flags: W
+LayerCount: 2
+Fore
+SplineSet
+1024 1538 m 0,0,1
+ 1240 1538 1240 1538 1427 1430 c 128,-1,2
+ 1614 1322 1614 1322 1722 1135 c 128,-1,3
+ 1830 948 1830 948 1830 732 c 0,4,5
+ 1830 518 1830 518 1722.5 330.5 c 128,-1,6
+ 1615 143 1615 143 1427.5 34 c 128,-1,7
+ 1240 -75 1240 -75 1024 -75 c 0,8,9
+ 809 -75 809 -75 621 33 c 128,-1,10
+ 433 141 433 141 325 329.5 c 128,-1,11
+ 217 518 217 518 217 732 c 0,12,13
+ 217 948 217 948 326 1135.5 c 128,-1,14
+ 435 1323 435 1323 622.5 1430.5 c 128,-1,15
+ 810 1538 810 1538 1024 1538 c 0,0,1
+1024 3 m 256,16,17
+ 1220 3 1220 3 1389 101 c 128,-1,18
+ 1558 199 1558 199 1655.5 367.5 c 128,-1,19
+ 1753 536 1753 536 1753 732 c 256,20,21
+ 1753 928 1753 928 1655 1096.5 c 128,-1,22
+ 1557 1265 1557 1265 1388.5 1362.5 c 128,-1,23
+ 1220 1460 1220 1460 1024 1460 c 256,24,25
+ 828 1460 828 1460 659 1362 c 128,-1,26
+ 490 1264 490 1264 392.5 1095.5 c 128,-1,27
+ 295 927 295 927 295 732 c 0,28,29
+ 295 536 295 536 393 367 c 128,-1,30
+ 491 198 491 198 659.5 100.5 c 128,-1,31
+ 828 3 828 3 1024 3 c 256,16,17
+1082 840 m 1,32,33
+ 1111 824 1111 824 1129 795.5 c 128,-1,34
+ 1147 767 1147 767 1147 732 c 0,35,36
+ 1147 679 1147 679 1109.5 643.5 c 128,-1,37
+ 1072 608 1072 608 1020 608 c 1,38,-1
+ 864 339 l 1,39,-1
+ 763 397 l 1,40,-1
+ 919 666 l 1,41,42
+ 901 698 901 698 901 732 c 0,43,44
+ 901 767 901 767 919 795.5 c 128,-1,45
+ 937 824 937 824 966 840 c 1,46,-1
+ 966 1396 l 1,47,-1
+ 1082 1396 l 1,48,-1
+ 1082 840 l 1,32,33
+977 732 m 0,49,50
+ 977 714 977 714 990.5 699.5 c 128,-1,51
+ 1004 685 1004 685 1024 685 c 0,52,53
+ 1042 685 1042 685 1056.5 698.5 c 128,-1,54
+ 1071 712 1071 712 1071 732 c 0,55,56
+ 1071 747 1071 747 1059 762.5 c 128,-1,57
+ 1047 778 1047 778 1024 778 c 0,58,59
+ 1007 778 1007 778 992 766.5 c 128,-1,60
+ 977 755 977 755 977 732 c 0,49,50
+1654 778 m 256,61,62
+ 1674 778 1674 778 1687.5 764.5 c 128,-1,63
+ 1701 751 1701 751 1701 731 c 0,64,65
+ 1701 712 1701 712 1687.5 698.5 c 128,-1,66
+ 1674 685 1674 685 1654 685 c 256,67,68
+ 1634 685 1634 685 1620.5 698.5 c 128,-1,69
+ 1607 712 1607 712 1607 731 c 0,70,71
+ 1607 751 1607 751 1620.5 764.5 c 128,-1,72
+ 1634 778 1634 778 1654 778 c 256,61,62
+1569 1000 m 0,73,74
+ 1552 1000 1552 1000 1537.5 1013 c 128,-1,75
+ 1523 1026 1523 1026 1523 1046 c 0,76,77
+ 1523 1064 1523 1064 1536 1078.5 c 128,-1,78
+ 1549 1093 1549 1093 1569 1093 c 0,79,80
+ 1587 1093 1587 1093 1601.5 1080 c 128,-1,81
+ 1616 1067 1616 1067 1616 1047 c 0,82,83
+ 1616 1021 1616 1021 1593 1006 c 1,84,85
+ 1581 1000 1581 1000 1569 1000 c 0,73,74
+1385 1278 m 256,86,87
+ 1385 1258 1385 1258 1370.5 1244.5 c 128,-1,88
+ 1356 1231 1356 1231 1339 1231 c 0,89,90
+ 1318 1231 1318 1231 1305 1245.5 c 128,-1,91
+ 1292 1260 1292 1260 1292 1277 c 0,92,93
+ 1292 1297 1292 1297 1307 1310.5 c 128,-1,94
+ 1322 1324 1322 1324 1339 1324 c 0,95,96
+ 1358 1324 1358 1324 1371.5 1311 c 128,-1,97
+ 1385 1298 1385 1298 1385 1278 c 256,86,87
+708 1324 m 256,98,99
+ 725 1324 725 1324 740 1311 c 128,-1,100
+ 755 1298 755 1298 755 1278 c 0,101,102
+ 755 1260 755 1260 742 1245.5 c 128,-1,103
+ 729 1231 729 1231 709 1231 c 0,104,105
+ 690 1231 690 1231 676 1244.5 c 128,-1,106
+ 662 1258 662 1258 662 1278 c 256,107,108
+ 662 1298 662 1298 676.5 1311 c 128,-1,109
+ 691 1324 691 1324 708 1324 c 256,98,99
+524 1046 m 0,110,111
+ 524 1026 524 1026 510 1013 c 128,-1,112
+ 496 1000 496 1000 477 1000 c 0,113,114
+ 457 1000 457 1000 444 1014.5 c 128,-1,115
+ 431 1029 431 1029 431 1046 c 0,116,117
+ 431 1066 431 1066 446 1079.5 c 128,-1,118
+ 461 1093 461 1093 478 1093 c 0,119,120
+ 497 1093 497 1093 510.5 1080 c 128,-1,121
+ 524 1067 524 1067 524 1046 c 0,110,111
+393 778 m 0,122,123
+ 413 778 413 778 426.5 764.5 c 128,-1,124
+ 440 751 440 751 440 732 c 0,125,126
+ 440 712 440 712 426.5 698.5 c 128,-1,127
+ 413 685 413 685 393 685 c 0,128,129
+ 374 685 374 685 360.5 698.5 c 128,-1,130
+ 347 712 347 712 347 732 c 0,131,132
+ 347 751 347 751 360.5 764.5 c 128,-1,133
+ 374 778 374 778 393 778 c 0,122,123
+478 463 m 0,134,135
+ 495 463 495 463 509.5 450 c 128,-1,136
+ 524 437 524 437 524 416 c 0,137,138
+ 524 399 524 399 511 384.5 c 128,-1,139
+ 498 370 498 370 478 370 c 0,140,141
+ 460 370 460 370 445.5 383.5 c 128,-1,142
+ 431 397 431 397 431 417 c 256,143,144
+ 431 437 431 437 445.5 450 c 128,-1,145
+ 460 463 460 463 478 463 c 0,134,135
+755 185 m 0,146,147
+ 755 164 755 164 740 151.5 c 128,-1,148
+ 725 139 725 139 708 139 c 0,149,150
+ 687 139 687 139 674.5 153.5 c 128,-1,151
+ 662 168 662 168 662 185 c 0,152,153
+ 662 206 662 206 676.5 219 c 128,-1,154
+ 691 232 691 232 708 232 c 0,155,156
+ 720 232 720 232 732 226 c 1,157,158
+ 755 211 755 211 755 185 c 0,146,147
+1024 148 m 256,159,160
+ 1044 148 1044 148 1057 134.5 c 128,-1,161
+ 1070 121 1070 121 1070 101 c 0,162,163
+ 1070 82 1070 82 1057 68.5 c 128,-1,164
+ 1044 55 1044 55 1024 55 c 256,165,166
+ 1004 55 1004 55 990.5 68.5 c 128,-1,167
+ 977 82 977 82 977 101 c 0,168,169
+ 977 121 977 121 990.5 134.5 c 128,-1,170
+ 1004 148 1004 148 1024 148 c 256,159,160
+1339 232 m 0,171,172
+ 1356 232 1356 232 1370.5 219.5 c 128,-1,173
+ 1385 207 1385 207 1385 186 c 0,174,175
+ 1385 168 1385 168 1372.5 153.5 c 128,-1,176
+ 1360 139 1360 139 1339 139 c 0,177,178
+ 1322 139 1322 139 1307 152 c 128,-1,179
+ 1292 165 1292 165 1292 186 c 0,180,181
+ 1292 206 1292 206 1306.5 219 c 128,-1,182
+ 1321 232 1321 232 1339 232 c 0,171,172
+1616 416 m 0,183,184
+ 1616 396 1616 396 1601.5 383 c 128,-1,185
+ 1587 370 1587 370 1569 370 c 0,186,187
+ 1549 370 1549 370 1536 384.5 c 128,-1,188
+ 1523 399 1523 399 1523 416 c 0,189,190
+ 1523 437 1523 437 1537.5 450 c 128,-1,191
+ 1552 463 1552 463 1569 463 c 0,192,193
+ 1581 463 1581 463 1593 457 c 1,194,195
+ 1616 442 1616 442 1616 416 c 0,183,184
+EndSplineSet
+EndChar
+
+StartChar: uniF8E7
+Encoding: 190 63719 45
+Width: 2048
+Flags: W
+LayerCount: 2
+Fore
+SplineSet
+1024 1538 m 0,0,1
+ 1240 1538 1240 1538 1427 1430 c 128,-1,2
+ 1614 1322 1614 1322 1722 1135 c 128,-1,3
+ 1830 948 1830 948 1830 732 c 256,4,5
+ 1830 516 1830 516 1722 329 c 128,-1,6
+ 1614 142 1614 142 1427 34 c 128,-1,7
+ 1240 -74 1240 -74 1024 -74 c 0,8,9
+ 810 -74 810 -74 622.5 33.5 c 128,-1,10
+ 435 141 435 141 326 328.5 c 128,-1,11
+ 217 516 217 516 217 732 c 256,12,13
+ 217 948 217 948 326 1135.5 c 128,-1,14
+ 435 1323 435 1323 622.5 1430.5 c 128,-1,15
+ 810 1538 810 1538 1024 1538 c 0,0,1
+1024 4 m 256,16,17
+ 1220 4 1220 4 1388 101 c 128,-1,18
+ 1556 198 1556 198 1654.5 366.5 c 128,-1,19
+ 1753 535 1753 535 1753 732 c 0,20,21
+ 1753 930 1753 930 1654.5 1098 c 128,-1,22
+ 1556 1266 1556 1266 1388 1363 c 128,-1,23
+ 1220 1460 1220 1460 1024 1460 c 256,24,25
+ 828 1460 828 1460 660 1363 c 128,-1,26
+ 492 1266 492 1266 393.5 1097.5 c 128,-1,27
+ 295 929 295 929 295 732 c 0,28,29
+ 295 534 295 534 393.5 366.5 c 128,-1,30
+ 492 199 492 199 660 101.5 c 128,-1,31
+ 828 4 828 4 1024 4 c 256,16,17
+1082 841 m 1,32,33
+ 1111 824 1111 824 1129 795.5 c 128,-1,34
+ 1147 767 1147 767 1147 732 c 0,35,36
+ 1147 681 1147 681 1111 645 c 128,-1,37
+ 1075 609 1075 609 1024 609 c 0,38,39
+ 989 609 989 609 959 628 c 1,40,-1
+ 689 472 l 1,41,-1
+ 631 572 l 1,42,-1
+ 901 728 l 1,43,44
+ 901 805 901 805 966 841 c 1,45,-1
+ 966 1397 l 1,46,-1
+ 1082 1397 l 1,47,-1
+ 1082 841 l 1,32,33
+1071 732 m 256,48,49
+ 1071 752 1071 752 1056.5 765 c 128,-1,50
+ 1042 778 1042 778 1024 778 c 0,51,52
+ 1004 778 1004 778 990.5 765 c 128,-1,53
+ 977 752 977 752 977 732 c 256,54,55
+ 977 712 977 712 990.5 699 c 128,-1,56
+ 1004 686 1004 686 1024 686 c 0,57,58
+ 1042 686 1042 686 1056.5 699 c 128,-1,59
+ 1071 712 1071 712 1071 732 c 256,48,49
+1654 778 m 256,60,61
+ 1674 778 1674 778 1687.5 765 c 128,-1,62
+ 1701 752 1701 752 1701 732 c 256,63,64
+ 1701 712 1701 712 1687.5 699 c 128,-1,65
+ 1674 686 1674 686 1654 686 c 256,66,67
+ 1634 686 1634 686 1620.5 699 c 128,-1,68
+ 1607 712 1607 712 1607 732 c 256,69,70
+ 1607 752 1607 752 1620.5 765 c 128,-1,71
+ 1634 778 1634 778 1654 778 c 256,60,61
+1569 1001 m 0,72,73
+ 1552 1001 1552 1001 1537.5 1014 c 128,-1,74
+ 1523 1027 1523 1027 1523 1047 c 0,75,76
+ 1523 1065 1523 1065 1535.5 1079.5 c 128,-1,77
+ 1548 1094 1548 1094 1569 1094 c 0,78,79
+ 1587 1094 1587 1094 1601.5 1081 c 128,-1,80
+ 1616 1068 1616 1068 1616 1047 c 0,81,82
+ 1616 1028 1616 1028 1603 1014.5 c 128,-1,83
+ 1590 1001 1590 1001 1569 1001 c 0,72,73
+1385 1278 m 0,84,85
+ 1385 1257 1385 1257 1370.5 1244 c 128,-1,86
+ 1356 1231 1356 1231 1339 1231 c 0,87,88
+ 1317 1231 1317 1231 1304.5 1245.5 c 128,-1,89
+ 1292 1260 1292 1260 1292 1277 c 0,90,91
+ 1292 1297 1292 1297 1307 1310.5 c 128,-1,92
+ 1322 1324 1322 1324 1339 1324 c 0,93,94
+ 1358 1324 1358 1324 1371.5 1311 c 128,-1,95
+ 1385 1298 1385 1298 1385 1278 c 0,84,85
+708 1231 m 0,96,97
+ 691 1231 691 1231 676.5 1244.5 c 128,-1,98
+ 662 1258 662 1258 662 1279 c 0,99,100
+ 662 1296 662 1296 675 1310 c 128,-1,101
+ 688 1324 688 1324 708 1324 c 0,102,103
+ 726 1324 726 1324 740.5 1311 c 128,-1,104
+ 755 1298 755 1298 755 1278 c 0,105,106
+ 755 1257 755 1257 740.5 1244 c 128,-1,107
+ 726 1231 726 1231 708 1231 c 0,96,97
+524 1047 m 0,108,109
+ 524 1027 524 1027 509.5 1014 c 128,-1,110
+ 495 1001 495 1001 478 1001 c 0,111,112
+ 458 1001 458 1001 444.5 1015 c 128,-1,113
+ 431 1029 431 1029 431 1047 c 0,114,115
+ 431 1068 431 1068 445.5 1081 c 128,-1,116
+ 460 1094 460 1094 478 1094 c 0,117,118
+ 497 1094 497 1094 510.5 1080 c 128,-1,119
+ 524 1066 524 1066 524 1047 c 0,108,109
+393 778 m 0,120,121
+ 413 778 413 778 426.5 765 c 128,-1,122
+ 440 752 440 752 440 732 c 256,123,124
+ 440 712 440 712 426.5 699 c 128,-1,125
+ 413 686 413 686 393 686 c 0,126,127
+ 374 686 374 686 360.5 699 c 128,-1,128
+ 347 712 347 712 347 732 c 256,129,130
+ 347 752 347 752 360.5 765 c 128,-1,131
+ 374 778 374 778 393 778 c 0,120,121
+478 463 m 0,132,133
+ 496 463 496 463 510 450 c 128,-1,134
+ 524 437 524 437 524 417 c 0,135,136
+ 524 400 524 400 511.5 385 c 128,-1,137
+ 499 370 499 370 479 370 c 0,138,139
+ 460 370 460 370 445.5 383.5 c 128,-1,140
+ 431 397 431 397 431 417 c 0,141,142
+ 431 436 431 436 444.5 449.5 c 128,-1,143
+ 458 463 458 463 478 463 c 0,132,133
+755 186 m 0,144,145
+ 755 166 755 166 740.5 153 c 128,-1,146
+ 726 140 726 140 708 140 c 0,147,148
+ 688 140 688 140 675 154.5 c 128,-1,149
+ 662 169 662 169 662 186 c 0,150,151
+ 662 206 662 206 676 219 c 128,-1,152
+ 690 232 690 232 708 232 c 0,153,154
+ 729 232 729 232 742 218.5 c 128,-1,155
+ 755 205 755 205 755 186 c 0,144,145
+1024 148 m 256,156,157
+ 1044 148 1044 148 1057 134.5 c 128,-1,158
+ 1070 121 1070 121 1070 102 c 0,159,160
+ 1070 82 1070 82 1057 69 c 128,-1,161
+ 1044 56 1044 56 1024 56 c 256,162,163
+ 1004 56 1004 56 990.5 69 c 128,-1,164
+ 977 82 977 82 977 102 c 0,165,166
+ 977 121 977 121 990.5 134.5 c 128,-1,167
+ 1004 148 1004 148 1024 148 c 256,156,157
+1340 232 m 0,168,169
+ 1357 232 1357 232 1371 219.5 c 128,-1,170
+ 1385 207 1385 207 1385 186 c 0,171,172
+ 1385 169 1385 169 1372 154.5 c 128,-1,173
+ 1359 140 1359 140 1339 140 c 0,174,175
+ 1322 140 1322 140 1307 153 c 128,-1,176
+ 1292 166 1292 166 1292 187 c 0,177,178
+ 1292 207 1292 207 1307 219.5 c 128,-1,179
+ 1322 232 1322 232 1340 232 c 0,168,169
+1616 417 m 0,180,181
+ 1616 396 1616 396 1601.5 383 c 128,-1,182
+ 1587 370 1587 370 1568 370 c 0,183,184
+ 1547 370 1547 370 1535 385 c 128,-1,185
+ 1523 400 1523 400 1523 417 c 0,186,187
+ 1523 437 1523 437 1537.5 450 c 128,-1,188
+ 1552 463 1552 463 1569 463 c 0,189,190
+ 1590 463 1590 463 1603 449.5 c 128,-1,191
+ 1616 436 1616 436 1616 417 c 0,180,181
+EndSplineSet
+EndChar
+
+StartChar: carriagereturn
+Encoding: 191 8629 46
+Width: 2048
+Flags: W
+LayerCount: 2
+Fore
+SplineSet
+1024 1538 m 0,0,1
+ 1240 1538 1240 1538 1427.5 1429 c 128,-1,2
+ 1615 1320 1615 1320 1722.5 1132.5 c 128,-1,3
+ 1830 945 1830 945 1830 731 c 0,4,5
+ 1830 515 1830 515 1722 328 c 128,-1,6
+ 1614 141 1614 141 1427 33 c 128,-1,7
+ 1240 -75 1240 -75 1024 -75 c 0,8,9
+ 810 -75 810 -75 622.5 32.5 c 128,-1,10
+ 435 140 435 140 326 327.5 c 128,-1,11
+ 217 515 217 515 217 731 c 0,12,13
+ 217 946 217 946 325 1134 c 128,-1,14
+ 433 1322 433 1322 621.5 1430 c 128,-1,15
+ 810 1538 810 1538 1024 1538 c 0,0,1
+1024 3 m 256,16,17
+ 1220 3 1220 3 1389 101 c 128,-1,18
+ 1558 199 1558 199 1655.5 367.5 c 128,-1,19
+ 1753 536 1753 536 1753 731 c 0,20,21
+ 1753 927 1753 927 1655 1096 c 128,-1,22
+ 1557 1265 1557 1265 1388.5 1362.5 c 128,-1,23
+ 1220 1460 1220 1460 1024 1460 c 256,24,25
+ 828 1460 828 1460 659 1362 c 128,-1,26
+ 490 1264 490 1264 392.5 1095.5 c 128,-1,27
+ 295 927 295 927 295 731 c 256,28,29
+ 295 535 295 535 393 366.5 c 128,-1,30
+ 491 198 491 198 659.5 100.5 c 128,-1,31
+ 828 3 828 3 1024 3 c 256,16,17
+1082 840 m 1,32,33
+ 1111 824 1111 824 1129 795.5 c 128,-1,34
+ 1147 767 1147 767 1147 732 c 0,35,36
+ 1147 679 1147 679 1110 643.5 c 128,-1,37
+ 1073 608 1073 608 1024 608 c 0,38,39
+ 988 608 988 608 959.5 626.5 c 128,-1,40
+ 931 645 931 645 916 674 c 1,41,-1
+ 604 674 l 1,42,-1
+ 604 790 l 1,43,-1
+ 916 790 l 1,44,45
+ 933 822 933 822 966 840 c 1,46,-1
+ 966 1396 l 1,47,-1
+ 1082 1396 l 1,48,-1
+ 1082 840 l 1,32,33
+1024 685 m 0,49,50
+ 1041 685 1041 685 1056 698.5 c 128,-1,51
+ 1071 712 1071 712 1071 731 c 256,52,53
+ 1071 750 1071 750 1057 764 c 128,-1,54
+ 1043 778 1043 778 1024 778 c 0,55,56
+ 1004 778 1004 778 990.5 764.5 c 128,-1,57
+ 977 751 977 751 977 731 c 256,58,59
+ 977 711 977 711 991 698 c 128,-1,60
+ 1005 685 1005 685 1024 685 c 0,49,50
+1654 778 m 256,61,62
+ 1674 778 1674 778 1687.5 764.5 c 128,-1,63
+ 1701 751 1701 751 1701 731 c 0,64,65
+ 1701 712 1701 712 1687.5 698.5 c 128,-1,66
+ 1674 685 1674 685 1654 685 c 256,67,68
+ 1634 685 1634 685 1620.5 698.5 c 128,-1,69
+ 1607 712 1607 712 1607 731 c 0,70,71
+ 1607 751 1607 751 1620.5 764.5 c 128,-1,72
+ 1634 778 1634 778 1654 778 c 256,61,62
+1569 1000 m 0,73,74
+ 1552 1000 1552 1000 1537.5 1013 c 128,-1,75
+ 1523 1026 1523 1026 1523 1046 c 0,76,77
+ 1523 1064 1523 1064 1536 1078.5 c 128,-1,78
+ 1549 1093 1549 1093 1569 1093 c 0,79,80
+ 1587 1093 1587 1093 1601.5 1080 c 128,-1,81
+ 1616 1067 1616 1067 1616 1047 c 0,82,83
+ 1616 1021 1616 1021 1593 1006 c 1,84,85
+ 1581 1000 1581 1000 1569 1000 c 0,73,74
+1385 1278 m 256,86,87
+ 1385 1258 1385 1258 1370.5 1244.5 c 128,-1,88
+ 1356 1231 1356 1231 1339 1231 c 0,89,90
+ 1318 1231 1318 1231 1305 1245.5 c 128,-1,91
+ 1292 1260 1292 1260 1292 1277 c 0,92,93
+ 1292 1297 1292 1297 1306.5 1310.5 c 128,-1,94
+ 1321 1324 1321 1324 1339 1324 c 0,95,96
+ 1358 1324 1358 1324 1371.5 1311 c 128,-1,97
+ 1385 1298 1385 1298 1385 1278 c 256,86,87
+709 1231 m 0,98,99
+ 690 1231 690 1231 676 1244.5 c 128,-1,100
+ 662 1258 662 1258 662 1278 c 0,101,102
+ 662 1295 662 1295 675 1309.5 c 128,-1,103
+ 688 1324 688 1324 708 1324 c 0,104,105
+ 726 1324 726 1324 740.5 1311 c 128,-1,106
+ 755 1298 755 1298 755 1277 c 0,107,108
+ 755 1257 755 1257 741 1244 c 128,-1,109
+ 727 1231 727 1231 709 1231 c 0,98,99
+524 1046 m 0,110,111
+ 524 1026 524 1026 510 1013 c 128,-1,112
+ 496 1000 496 1000 477 1000 c 0,113,114
+ 457 1000 457 1000 444 1014.5 c 128,-1,115
+ 431 1029 431 1029 431 1046 c 0,116,117
+ 431 1066 431 1066 446 1079.5 c 128,-1,118
+ 461 1093 461 1093 478 1093 c 0,119,120
+ 497 1093 497 1093 510.5 1080 c 128,-1,121
+ 524 1067 524 1067 524 1046 c 0,110,111
+393 778 m 0,122,123
+ 413 778 413 778 426.5 764.5 c 128,-1,124
+ 440 751 440 751 440 732 c 0,125,126
+ 440 712 440 712 426.5 698.5 c 128,-1,127
+ 413 685 413 685 393 685 c 0,128,129
+ 374 685 374 685 360.5 698.5 c 128,-1,130
+ 347 712 347 712 347 732 c 0,131,132
+ 347 751 347 751 360.5 764.5 c 128,-1,133
+ 374 778 374 778 393 778 c 0,122,123
+478 463 m 0,134,135
+ 495 463 495 463 509.5 450 c 128,-1,136
+ 524 437 524 437 524 416 c 0,137,138
+ 524 399 524 399 511 384.5 c 128,-1,139
+ 498 370 498 370 478 370 c 0,140,141
+ 461 370 461 370 446 383 c 128,-1,142
+ 431 396 431 396 431 417 c 0,143,144
+ 431 437 431 437 445.5 450 c 128,-1,145
+ 460 463 460 463 478 463 c 0,134,135
+755 185 m 0,146,147
+ 755 165 755 165 740.5 152 c 128,-1,148
+ 726 139 726 139 709 139 c 0,149,150
+ 689 139 689 139 675.5 153.5 c 128,-1,151
+ 662 168 662 168 662 185 c 0,152,153
+ 662 206 662 206 676.5 219 c 128,-1,154
+ 691 232 691 232 708 232 c 0,155,156
+ 720 232 720 232 732 226 c 1,157,158
+ 755 211 755 211 755 185 c 0,146,147
+1024 148 m 256,159,160
+ 1044 148 1044 148 1057 134.5 c 128,-1,161
+ 1070 121 1070 121 1070 101 c 0,162,163
+ 1070 82 1070 82 1057 68.5 c 128,-1,164
+ 1044 55 1044 55 1024 55 c 256,165,166
+ 1004 55 1004 55 990.5 68.5 c 128,-1,167
+ 977 82 977 82 977 101 c 0,168,169
+ 977 121 977 121 990.5 134.5 c 128,-1,170
+ 1004 148 1004 148 1024 148 c 256,159,160
+1339 232 m 0,171,172
+ 1356 232 1356 232 1370.5 219 c 128,-1,173
+ 1385 206 1385 206 1385 185 c 0,174,175
+ 1385 167 1385 167 1371.5 153 c 128,-1,176
+ 1358 139 1358 139 1338 139 c 0,177,178
+ 1321 139 1321 139 1306.5 152.5 c 128,-1,179
+ 1292 166 1292 166 1292 186 c 256,180,181
+ 1292 206 1292 206 1306.5 219 c 128,-1,182
+ 1321 232 1321 232 1339 232 c 0,171,172
+1616 416 m 0,183,184
+ 1616 396 1616 396 1601.5 383 c 128,-1,185
+ 1587 370 1587 370 1569 370 c 0,186,187
+ 1549 370 1549 370 1536 384.5 c 128,-1,188
+ 1523 399 1523 399 1523 416 c 0,189,190
+ 1523 437 1523 437 1537.5 450 c 128,-1,191
+ 1552 463 1552 463 1569 463 c 0,192,193
+ 1581 463 1581 463 1593 457 c 1,194,195
+ 1616 442 1616 442 1616 416 c 0,183,184
+EndSplineSet
+EndChar
+
+StartChar: aleph
+Encoding: 192 8501 47
+Width: 2048
+Flags: W
+LayerCount: 2
+Fore
+SplineSet
+1024 1538 m 0,0,1
+ 1239 1538 1239 1538 1427 1430 c 128,-1,2
+ 1615 1322 1615 1322 1723 1133.5 c 128,-1,3
+ 1831 945 1831 945 1831 731 c 0,4,5
+ 1831 515 1831 515 1722 327.5 c 128,-1,6
+ 1613 140 1613 140 1425.5 32.5 c 128,-1,7
+ 1238 -75 1238 -75 1024 -75 c 256,8,9
+ 810 -75 810 -75 622.5 32.5 c 128,-1,10
+ 435 140 435 140 326 327.5 c 128,-1,11
+ 217 515 217 515 217 731 c 0,12,13
+ 217 946 217 946 325 1134 c 128,-1,14
+ 433 1322 433 1322 621.5 1430 c 128,-1,15
+ 810 1538 810 1538 1024 1538 c 0,0,1
+1024 3 m 256,16,17
+ 1220 3 1220 3 1389 101 c 128,-1,18
+ 1558 199 1558 199 1655.5 367.5 c 128,-1,19
+ 1753 536 1753 536 1753 731 c 0,20,21
+ 1753 927 1753 927 1655 1096 c 128,-1,22
+ 1557 1265 1557 1265 1388.5 1362.5 c 128,-1,23
+ 1220 1460 1220 1460 1024 1460 c 256,24,25
+ 828 1460 828 1460 659 1362 c 128,-1,26
+ 490 1264 490 1264 392.5 1095.5 c 128,-1,27
+ 295 927 295 927 295 731 c 256,28,29
+ 295 535 295 535 393 366.5 c 128,-1,30
+ 491 198 491 198 659.5 100.5 c 128,-1,31
+ 828 3 828 3 1024 3 c 256,16,17
+1082 839 m 1,32,33
+ 1111 824 1111 824 1129 795.5 c 128,-1,34
+ 1147 767 1147 767 1147 732 c 0,35,36
+ 1147 680 1147 680 1110.5 644 c 128,-1,37
+ 1074 608 1074 608 1024 608 c 0,38,39
+ 973 608 973 608 937 644 c 128,-1,40
+ 901 680 901 680 901 735 c 1,41,-1
+ 631 891 l 1,42,-1
+ 689 992 l 1,43,-1
+ 959 836 l 1,44,-1
+ 966 839 l 1,45,-1
+ 966 1396 l 1,46,-1
+ 1082 1396 l 1,47,-1
+ 1082 839 l 1,32,33
+1024 147 m 0,48,49
+ 1044 147 1044 147 1057.5 134 c 128,-1,50
+ 1071 121 1071 121 1071 101 c 0,51,52
+ 1071 82 1071 82 1057.5 68 c 128,-1,53
+ 1044 54 1044 54 1024 54 c 0,54,55
+ 1005 54 1005 54 991 68 c 128,-1,56
+ 977 82 977 82 977 101 c 0,57,58
+ 977 121 977 121 991 134 c 128,-1,59
+ 1005 147 1005 147 1024 147 c 0,48,49
+394 778 m 256,60,61
+ 414 778 414 778 427 764.5 c 128,-1,62
+ 440 751 440 751 440 731 c 0,63,64
+ 440 712 440 712 427 698.5 c 128,-1,65
+ 414 685 414 685 394 685 c 256,66,67
+ 374 685 374 685 360.5 698.5 c 128,-1,68
+ 347 712 347 712 347 731 c 0,69,70
+ 347 751 347 751 360.5 764.5 c 128,-1,71
+ 374 778 374 778 394 778 c 256,60,61
+525 1046 m 0,72,73
+ 525 1025 525 1025 510.5 1012.5 c 128,-1,74
+ 496 1000 496 1000 478 1000 c 0,75,76
+ 458 1000 458 1000 445 1014.5 c 128,-1,77
+ 432 1029 432 1029 432 1047 c 0,78,79
+ 432 1067 432 1067 446.5 1080 c 128,-1,80
+ 461 1093 461 1093 478 1093 c 0,81,82
+ 498 1093 498 1093 511.5 1078 c 128,-1,83
+ 525 1063 525 1063 525 1046 c 0,72,73
+478 463 m 0,84,85
+ 495 463 495 463 510 450.5 c 128,-1,86
+ 525 438 525 438 525 416 c 0,87,88
+ 525 399 525 399 512 384.5 c 128,-1,89
+ 499 370 499 370 478 370 c 0,90,91
+ 461 370 461 370 446.5 383 c 128,-1,92
+ 432 396 432 396 432 416 c 0,93,94
+ 432 435 432 435 445.5 449 c 128,-1,95
+ 459 463 459 463 478 463 c 0,84,85
+1024 685 m 0,96,97
+ 1042 685 1042 685 1056.5 698 c 128,-1,98
+ 1071 711 1071 711 1071 731 c 256,99,100
+ 1071 751 1071 751 1057.5 764 c 128,-1,101
+ 1044 777 1044 777 1024 777 c 256,102,103
+ 1004 777 1004 777 990.5 764 c 128,-1,104
+ 977 751 977 751 977 731 c 256,105,106
+ 977 711 977 711 991 698 c 128,-1,107
+ 1005 685 1005 685 1024 685 c 0,96,97
+755 186 m 0,108,109
+ 755 165 755 165 740.5 152 c 128,-1,110
+ 726 139 726 139 709 139 c 0,111,112
+ 688 139 688 139 675 153.5 c 128,-1,113
+ 662 168 662 168 662 185 c 0,114,115
+ 662 205 662 205 676.5 218.5 c 128,-1,116
+ 691 232 691 232 709 232 c 0,117,118
+ 728 232 728 232 741.5 219 c 128,-1,119
+ 755 206 755 206 755 186 c 0,108,109
+1570 1000 m 256,120,121
+ 1552 1000 1552 1000 1537.5 1013.5 c 128,-1,122
+ 1523 1027 1523 1027 1523 1047 c 0,123,124
+ 1523 1064 1523 1064 1536 1078.5 c 128,-1,125
+ 1549 1093 1549 1093 1570 1093 c 0,126,127
+ 1587 1093 1587 1093 1601.5 1079.5 c 128,-1,128
+ 1616 1066 1616 1066 1616 1046 c 256,129,130
+ 1616 1026 1616 1026 1602 1013 c 128,-1,131
+ 1588 1000 1588 1000 1570 1000 c 256,120,121
+1339 232 m 0,132,133
+ 1356 232 1356 232 1370.5 218.5 c 128,-1,134
+ 1385 205 1385 205 1385 185 c 0,135,136
+ 1385 168 1385 168 1372 153.5 c 128,-1,137
+ 1359 139 1359 139 1339 139 c 0,138,139
+ 1322 139 1322 139 1307 152 c 128,-1,140
+ 1292 165 1292 165 1292 186 c 0,141,142
+ 1292 206 1292 206 1306.5 219 c 128,-1,143
+ 1321 232 1321 232 1339 232 c 0,132,133
+708 1230 m 256,144,145
+ 691 1230 691 1230 676.5 1243.5 c 128,-1,146
+ 662 1257 662 1257 662 1277 c 0,147,148
+ 662 1294 662 1294 675.5 1308.5 c 128,-1,149
+ 689 1323 689 1323 709 1323 c 0,150,151
+ 726 1323 726 1323 740.5 1310 c 128,-1,152
+ 755 1297 755 1297 755 1276 c 0,153,154
+ 755 1256 755 1256 740 1243 c 128,-1,155
+ 725 1230 725 1230 708 1230 c 256,144,145
+1616 417 m 0,156,157
+ 1616 396 1616 396 1601.5 383 c 128,-1,158
+ 1587 370 1587 370 1570 370 c 0,159,160
+ 1549 370 1549 370 1536 384 c 128,-1,161
+ 1523 398 1523 398 1523 415 c 0,162,163
+ 1523 436 1523 436 1538 449 c 128,-1,164
+ 1553 462 1553 462 1571 462 c 0,165,166
+ 1590 462 1590 462 1603 449.5 c 128,-1,167
+ 1616 437 1616 437 1616 417 c 0,156,157
+1654 777 m 0,168,169
+ 1674 777 1674 777 1687.5 764 c 128,-1,170
+ 1701 751 1701 751 1701 731 c 0,171,172
+ 1701 712 1701 712 1687.5 698.5 c 128,-1,173
+ 1674 685 1674 685 1654 685 c 0,174,175
+ 1635 685 1635 685 1621.5 698.5 c 128,-1,176
+ 1608 712 1608 712 1608 731 c 0,177,178
+ 1608 751 1608 751 1621.5 764 c 128,-1,179
+ 1635 777 1635 777 1654 777 c 0,168,169
+1385 1277 m 256,180,181
+ 1385 1257 1385 1257 1370.5 1243.5 c 128,-1,182
+ 1356 1230 1356 1230 1339 1230 c 0,183,184
+ 1319 1230 1319 1230 1306 1245 c 128,-1,185
+ 1293 1260 1293 1260 1293 1277 c 0,186,187
+ 1293 1297 1293 1297 1307 1310 c 128,-1,188
+ 1321 1323 1321 1323 1338 1323 c 0,189,190
+ 1357 1323 1357 1323 1371 1310 c 128,-1,191
+ 1385 1297 1385 1297 1385 1277 c 256,180,181
+EndSplineSet
+EndChar
+
+StartChar: Ifraktur
+Encoding: 193 8465 48
+Width: 2048
+Flags: W
+LayerCount: 2
+Fore
+SplineSet
+1024 1538 m 256,0,1
+ 1238 1538 1238 1538 1425.5 1430.5 c 128,-1,2
+ 1613 1323 1613 1323 1722 1135.5 c 128,-1,3
+ 1831 948 1831 948 1831 732 c 256,4,5
+ 1831 516 1831 516 1722 328.5 c 128,-1,6
+ 1613 141 1613 141 1425.5 33.5 c 128,-1,7
+ 1238 -74 1238 -74 1024 -74 c 256,8,9
+ 810 -74 810 -74 622.5 33.5 c 128,-1,10
+ 435 141 435 141 326 328.5 c 128,-1,11
+ 217 516 217 516 217 732 c 256,12,13
+ 217 948 217 948 326 1135.5 c 128,-1,14
+ 435 1323 435 1323 622.5 1430.5 c 128,-1,15
+ 810 1538 810 1538 1024 1538 c 256,0,1
+1024 3 m 256,16,17
+ 1220 3 1220 3 1389 101 c 128,-1,18
+ 1558 199 1558 199 1655.5 367.5 c 128,-1,19
+ 1753 536 1753 536 1753 732 c 256,20,21
+ 1753 928 1753 928 1655 1097 c 128,-1,22
+ 1557 1266 1557 1266 1388.5 1363.5 c 128,-1,23
+ 1220 1461 1220 1461 1024 1461 c 256,24,25
+ 828 1461 828 1461 659 1363 c 128,-1,26
+ 490 1265 490 1265 392.5 1096.5 c 128,-1,27
+ 295 928 295 928 295 732 c 256,28,29
+ 295 536 295 536 393 367 c 128,-1,30
+ 491 198 491 198 659.5 100.5 c 128,-1,31
+ 828 3 828 3 1024 3 c 256,16,17
+1082 841 m 1,32,33
+ 1111 825 1111 825 1129 796 c 128,-1,34
+ 1147 767 1147 767 1147 732 c 0,35,36
+ 1147 681 1147 681 1111 645 c 128,-1,37
+ 1075 609 1075 609 1024 609 c 256,38,39
+ 973 609 973 609 937 645 c 128,-1,40
+ 901 681 901 681 901 732 c 0,41,42
+ 901 768 901 768 919 797 c 1,43,-1
+ 764 1067 l 1,44,-1
+ 865 1125 l 1,45,-1
+ 966 949 l 1,46,-1
+ 966 1397 l 1,47,-1
+ 1082 1397 l 1,48,-1
+ 1082 841 l 1,32,33
+1024 686 m 0,49,50
+ 1047 686 1047 686 1059 701 c 128,-1,51
+ 1071 716 1071 716 1071 732 c 0,52,53
+ 1071 751 1071 751 1057.5 765 c 128,-1,54
+ 1044 779 1044 779 1024 779 c 256,55,56
+ 1004 779 1004 779 990.5 765 c 128,-1,57
+ 977 751 977 751 977 732 c 0,58,59
+ 977 711 977 711 991 698.5 c 128,-1,60
+ 1005 686 1005 686 1024 686 c 0,49,50
+1654 779 m 0,61,62
+ 1674 779 1674 779 1687.5 765 c 128,-1,63
+ 1701 751 1701 751 1701 732 c 0,64,65
+ 1701 712 1701 712 1687.5 699 c 128,-1,66
+ 1674 686 1674 686 1654 686 c 0,67,68
+ 1635 686 1635 686 1621.5 699 c 128,-1,69
+ 1608 712 1608 712 1608 732 c 0,70,71
+ 1608 751 1608 751 1621.5 765 c 128,-1,72
+ 1635 779 1635 779 1654 779 c 0,61,62
+1570 1001 m 0,73,74
+ 1553 1001 1553 1001 1538 1014 c 128,-1,75
+ 1523 1027 1523 1027 1523 1048 c 0,76,77
+ 1523 1065 1523 1065 1536.5 1079 c 128,-1,78
+ 1550 1093 1550 1093 1571 1093 c 0,79,80
+ 1588 1093 1588 1093 1602 1080 c 128,-1,81
+ 1616 1067 1616 1067 1616 1047 c 256,82,83
+ 1616 1027 1616 1027 1602 1014 c 128,-1,84
+ 1588 1001 1588 1001 1570 1001 c 0,73,74
+1385 1278 m 256,85,86
+ 1385 1258 1385 1258 1371 1244.5 c 128,-1,87
+ 1357 1231 1357 1231 1338 1231 c 0,88,89
+ 1318 1231 1318 1231 1305.5 1246 c 128,-1,90
+ 1293 1261 1293 1261 1293 1278 c 0,91,92
+ 1293 1298 1293 1298 1307.5 1311 c 128,-1,93
+ 1322 1324 1322 1324 1339 1324 c 0,94,95
+ 1358 1324 1358 1324 1371.5 1311 c 128,-1,96
+ 1385 1298 1385 1298 1385 1278 c 256,85,86
+709 1324 m 0,97,98
+ 726 1324 726 1324 740.5 1310.5 c 128,-1,99
+ 755 1297 755 1297 755 1277 c 0,100,101
+ 755 1260 755 1260 743 1245.5 c 128,-1,102
+ 731 1231 731 1231 710 1231 c 0,103,104
+ 691 1231 691 1231 676.5 1244.5 c 128,-1,105
+ 662 1258 662 1258 662 1278 c 0,106,107
+ 662 1297 662 1297 675.5 1310.5 c 128,-1,108
+ 689 1324 689 1324 709 1324 c 0,97,98
+525 1047 m 0,109,110
+ 525 1026 525 1026 510.5 1013.5 c 128,-1,111
+ 496 1001 496 1001 478 1001 c 0,112,113
+ 458 1001 458 1001 445 1015.5 c 128,-1,114
+ 432 1030 432 1030 432 1047 c 0,115,116
+ 432 1068 432 1068 446 1080.5 c 128,-1,117
+ 460 1093 460 1093 477 1093 c 0,118,119
+ 497 1093 497 1093 511 1079.5 c 128,-1,120
+ 525 1066 525 1066 525 1047 c 0,109,110
+394 779 m 256,121,122
+ 414 779 414 779 427 765.5 c 128,-1,123
+ 440 752 440 752 440 732 c 256,124,125
+ 440 712 440 712 427 699 c 128,-1,126
+ 414 686 414 686 394 686 c 256,127,128
+ 374 686 374 686 360.5 699 c 128,-1,129
+ 347 712 347 712 347 732 c 256,130,131
+ 347 752 347 752 360.5 765.5 c 128,-1,132
+ 374 779 374 779 394 779 c 256,121,122
+478 463 m 256,133,134
+ 496 463 496 463 510.5 450.5 c 128,-1,135
+ 525 438 525 438 525 417 c 0,136,137
+ 525 400 525 400 512.5 385 c 128,-1,138
+ 500 370 500 370 479 370 c 0,139,140
+ 462 370 462 370 447 383 c 128,-1,141
+ 432 396 432 396 432 417 c 0,142,143
+ 432 437 432 437 446 450 c 128,-1,144
+ 460 463 460 463 478 463 c 256,133,134
+755 187 m 0,145,146
+ 755 166 755 166 740.5 153 c 128,-1,147
+ 726 140 726 140 709 140 c 0,148,149
+ 688 140 688 140 675 154 c 128,-1,150
+ 662 168 662 168 662 185 c 0,151,152
+ 662 206 662 206 676.5 219 c 128,-1,153
+ 691 232 691 232 708 232 c 0,154,155
+ 728 232 728 232 741.5 219.5 c 128,-1,156
+ 755 207 755 207 755 187 c 0,145,146
+1024 148 m 0,157,158
+ 1044 148 1044 148 1057.5 134.5 c 128,-1,159
+ 1071 121 1071 121 1071 102 c 0,160,161
+ 1071 82 1071 82 1058 69 c 128,-1,162
+ 1045 56 1045 56 1026 56 c 0,163,164
+ 1006 56 1006 56 991.5 69 c 128,-1,165
+ 977 82 977 82 977 102 c 0,166,167
+ 977 121 977 121 991 134.5 c 128,-1,168
+ 1005 148 1005 148 1024 148 c 0,157,158
+1339 232 m 0,169,170
+ 1356 232 1356 232 1370.5 219 c 128,-1,171
+ 1385 206 1385 206 1385 185 c 0,172,173
+ 1385 168 1385 168 1372 154 c 128,-1,174
+ 1359 140 1359 140 1339 140 c 0,175,176
+ 1322 140 1322 140 1307 153 c 128,-1,177
+ 1292 166 1292 166 1292 186 c 256,178,179
+ 1292 206 1292 206 1306.5 219 c 128,-1,180
+ 1321 232 1321 232 1339 232 c 0,169,170
+1616 417 m 256,181,182
+ 1616 397 1616 397 1601 383.5 c 128,-1,183
+ 1586 370 1586 370 1569 370 c 0,184,185
+ 1548 370 1548 370 1535.5 384.5 c 128,-1,186
+ 1523 399 1523 399 1523 416 c 0,187,188
+ 1523 436 1523 436 1538 449.5 c 128,-1,189
+ 1553 463 1553 463 1570 463 c 0,190,191
+ 1589 463 1589 463 1602.5 450 c 128,-1,192
+ 1616 437 1616 437 1616 417 c 256,181,182
+EndSplineSet
+EndChar
+
+StartChar: Rfraktur
+Encoding: 194 8476 49
+Width: 2048
+Flags: W
+LayerCount: 2
+Fore
+SplineSet
+1024 1538 m 0,0,1
+ 1239 1538 1239 1538 1427 1430 c 128,-1,2
+ 1615 1322 1615 1322 1723 1133.5 c 128,-1,3
+ 1831 945 1831 945 1831 731 c 0,4,5
+ 1831 516 1831 516 1723 328 c 128,-1,6
+ 1615 140 1615 140 1426.5 32 c 128,-1,7
+ 1238 -76 1238 -76 1024 -76 c 0,8,9
+ 809 -76 809 -76 621 32 c 128,-1,10
+ 433 140 433 140 325 328.5 c 128,-1,11
+ 217 517 217 517 217 731 c 0,12,13
+ 217 946 217 946 325 1134 c 128,-1,14
+ 433 1322 433 1322 621.5 1430 c 128,-1,15
+ 810 1538 810 1538 1024 1538 c 0,0,1
+1024 2 m 256,16,17
+ 1220 2 1220 2 1389 100 c 128,-1,18
+ 1558 198 1558 198 1655.5 366.5 c 128,-1,19
+ 1753 535 1753 535 1753 731 c 256,20,21
+ 1753 927 1753 927 1655 1096 c 128,-1,22
+ 1557 1265 1557 1265 1388.5 1362.5 c 128,-1,23
+ 1220 1460 1220 1460 1024 1460 c 256,24,25
+ 828 1460 828 1460 659 1362 c 128,-1,26
+ 490 1264 490 1264 392.5 1095.5 c 128,-1,27
+ 295 927 295 927 295 731 c 256,28,29
+ 295 535 295 535 393 366 c 128,-1,30
+ 491 197 491 197 659.5 99.5 c 128,-1,31
+ 828 2 828 2 1024 2 c 256,16,17
+1099 828 m 1,32,33
+ 1147 793 1147 793 1147 731 c 0,34,35
+ 1147 680 1147 680 1111 644 c 128,-1,36
+ 1075 608 1075 608 1024 608 c 256,37,38
+ 973 608 973 608 937 644 c 128,-1,39
+ 901 680 901 680 901 731 c 0,40,41
+ 901 791 901 791 949 828 c 1,42,-1
+ 949 1162 l 1,43,-1
+ 966 1162 l 1,44,-1
+ 966 1396 l 1,45,-1
+ 1082 1396 l 1,46,-1
+ 1082 1162 l 1,47,-1
+ 1099 1162 l 1,48,-1
+ 1099 828 l 1,32,33
+977 731 m 0,49,50
+ 977 713 977 713 991 698.5 c 128,-1,51
+ 1005 684 1005 684 1024 684 c 256,52,53
+ 1043 684 1043 684 1057 697 c 128,-1,54
+ 1071 710 1071 710 1071 731 c 0,55,56
+ 1071 750 1071 750 1057.5 763.5 c 128,-1,57
+ 1044 777 1044 777 1024 777 c 0,58,59
+ 1005 777 1005 777 991 764 c 128,-1,60
+ 977 751 977 751 977 731 c 0,49,50
+1654 777 m 0,61,62
+ 1674 777 1674 777 1687.5 764 c 128,-1,63
+ 1701 751 1701 751 1701 731 c 256,64,65
+ 1701 711 1701 711 1687.5 697.5 c 128,-1,66
+ 1674 684 1674 684 1654 684 c 0,67,68
+ 1635 684 1635 684 1621.5 697.5 c 128,-1,69
+ 1608 711 1608 711 1608 731 c 256,70,71
+ 1608 751 1608 751 1621.5 764 c 128,-1,72
+ 1635 777 1635 777 1654 777 c 0,61,62
+1569 999 m 256,73,74
+ 1552 999 1552 999 1537.5 1012.5 c 128,-1,75
+ 1523 1026 1523 1026 1523 1046 c 0,76,77
+ 1523 1063 1523 1063 1536.5 1077.5 c 128,-1,78
+ 1550 1092 1550 1092 1570 1092 c 0,79,80
+ 1587 1092 1587 1092 1601.5 1079 c 128,-1,81
+ 1616 1066 1616 1066 1616 1045 c 0,82,83
+ 1616 1025 1616 1025 1601 1012 c 128,-1,84
+ 1586 999 1586 999 1569 999 c 256,73,74
+1385 1277 m 0,85,86
+ 1385 1256 1385 1256 1370.5 1243 c 128,-1,87
+ 1356 1230 1356 1230 1339 1230 c 0,88,89
+ 1319 1230 1319 1230 1306 1244 c 128,-1,90
+ 1293 1258 1293 1258 1293 1276 c 0,91,92
+ 1293 1297 1293 1297 1307 1310 c 128,-1,93
+ 1321 1323 1321 1323 1338 1323 c 0,94,95
+ 1357 1323 1357 1323 1371 1310 c 128,-1,96
+ 1385 1297 1385 1297 1385 1277 c 0,85,86
+709 1323 m 0,97,98
+ 726 1323 726 1323 740.5 1310 c 128,-1,99
+ 755 1297 755 1297 755 1276 c 0,100,101
+ 755 1259 755 1259 741.5 1244.5 c 128,-1,102
+ 728 1230 728 1230 708 1230 c 0,103,104
+ 691 1230 691 1230 676.5 1243 c 128,-1,105
+ 662 1256 662 1256 662 1277 c 0,106,107
+ 662 1297 662 1297 676.5 1310 c 128,-1,108
+ 691 1323 691 1323 709 1323 c 0,97,98
+525 1045 m 0,109,110
+ 525 1024 525 1024 510.5 1011.5 c 128,-1,111
+ 496 999 496 999 479 999 c 0,112,113
+ 459 999 459 999 445.5 1013.5 c 128,-1,114
+ 432 1028 432 1028 432 1046 c 0,115,116
+ 432 1066 432 1066 446 1079 c 128,-1,117
+ 460 1092 460 1092 477 1092 c 0,118,119
+ 489 1092 489 1092 501 1086 c 1,120,121
+ 525 1071 525 1071 525 1045 c 0,109,110
+394 777 m 256,122,123
+ 414 777 414 777 427 764 c 128,-1,124
+ 440 751 440 751 440 731 c 256,125,126
+ 440 711 440 711 427 697.5 c 128,-1,127
+ 414 684 414 684 394 684 c 256,128,129
+ 374 684 374 684 360.5 697.5 c 128,-1,130
+ 347 711 347 711 347 731 c 256,131,132
+ 347 751 347 751 360.5 764 c 128,-1,133
+ 374 777 374 777 394 777 c 256,122,123
+478 462 m 256,134,135
+ 496 462 496 462 510.5 449.5 c 128,-1,136
+ 525 437 525 437 525 416 c 0,137,138
+ 525 399 525 399 511.5 384 c 128,-1,139
+ 498 369 498 369 477 369 c 0,140,141
+ 460 369 460 369 446 382 c 128,-1,142
+ 432 395 432 395 432 416 c 0,143,144
+ 432 436 432 436 446 449 c 128,-1,145
+ 460 462 460 462 478 462 c 256,134,135
+755 186 m 0,146,147
+ 755 165 755 165 740.5 151.5 c 128,-1,148
+ 726 138 726 138 709 138 c 0,149,150
+ 689 138 689 138 675.5 152.5 c 128,-1,151
+ 662 167 662 167 662 184 c 0,152,153
+ 662 205 662 205 676.5 218 c 128,-1,154
+ 691 231 691 231 708 231 c 0,155,156
+ 728 231 728 231 741.5 218.5 c 128,-1,157
+ 755 206 755 206 755 186 c 0,146,147
+1024 147 m 0,158,159
+ 1044 147 1044 147 1057.5 134 c 128,-1,160
+ 1071 121 1071 121 1071 101 c 256,161,162
+ 1071 81 1071 81 1057.5 67.5 c 128,-1,163
+ 1044 54 1044 54 1024 54 c 0,164,165
+ 1005 54 1005 54 991 67.5 c 128,-1,166
+ 977 81 977 81 977 101 c 256,167,168
+ 977 121 977 121 991 134 c 128,-1,169
+ 1005 147 1005 147 1024 147 c 0,158,159
+1339 231 m 256,170,171
+ 1356 231 1356 231 1370.5 217.5 c 128,-1,172
+ 1385 204 1385 204 1385 184 c 0,173,174
+ 1385 167 1385 167 1372 152.5 c 128,-1,175
+ 1359 138 1359 138 1338 138 c 0,176,177
+ 1321 138 1321 138 1306.5 151.5 c 128,-1,178
+ 1292 165 1292 165 1292 186 c 0,179,180
+ 1292 206 1292 206 1307 218.5 c 128,-1,181
+ 1322 231 1322 231 1339 231 c 256,170,171
+1616 416 m 256,182,183
+ 1616 396 1616 396 1601.5 382.5 c 128,-1,184
+ 1587 369 1587 369 1570 369 c 0,185,186
+ 1550 369 1550 369 1536.5 383.5 c 128,-1,187
+ 1523 398 1523 398 1523 415 c 0,188,189
+ 1523 435 1523 435 1538 448.5 c 128,-1,190
+ 1553 462 1553 462 1570 462 c 0,191,192
+ 1589 462 1589 462 1602.5 449 c 128,-1,193
+ 1616 436 1616 436 1616 416 c 256,182,183
+EndSplineSet
+EndChar
EndChars
EndSplineFont
--
2.16.3
2
3
June 22, 2018
This test was based on an implementation of K32EnumProcessModules() which was later rewritten.
Signed-off-by: Zebediah Figura <zfigura(a)codeweavers.com>
---
dlls/psapi/tests/psapi_main.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/dlls/psapi/tests/psapi_main.c b/dlls/psapi/tests/psapi_main.c
index 0ff212c..ec74716 100644
--- a/dlls/psapi/tests/psapi_main.c
+++ b/dlls/psapi/tests/psapi_main.c
@@ -229,6 +229,7 @@ todo_wine
SetLastError(0xdeadbeef);
ret = pEnumProcessModules(pi.hProcess, &hMod, sizeof(HMODULE), &cbNeeded);
ok(!ret, "got %d\n", ret);
+todo_wine
ok(GetLastError() == ERROR_PARTIAL_COPY, "got error %u\n", GetLastError());
TerminateProcess(pi.hProcess, 0);
--
2.7.4
1
0
[PATCH] testbot: Avoid scalar(%hash) for compatibility with Perl 5.20.
by Francois Gouget June 22, 2018
by Francois Gouget June 22, 2018
June 22, 2018
Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com>
---
This is probably needed on the official TestBot!
I'm surprised we did not have the Engine or a script die already.
testbot/lib/WineTestBot/PatchUtils.pm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/testbot/lib/WineTestBot/PatchUtils.pm b/testbot/lib/WineTestBot/PatchUtils.pm
index f83df6087..b6ea54bcb 100644
--- a/testbot/lib/WineTestBot/PatchUtils.pm
+++ b/testbot/lib/WineTestBot/PatchUtils.pm
@@ -298,7 +298,7 @@ sub GetPatchImpact($;$$)
}
}
- $TestInfo->{UnitCount} = scalar(%{$TestInfo->{Units}});
+ $TestInfo->{UnitCount} = scalar(keys %{$TestInfo->{Units}});
if ($TestInfo->{UnitCount})
{
$Impacts->{ModuleCount}++;
--
2.17.1
1
0
[PATCH] testbot/WineRunTask: Show the Wine report filename in error messages.
by Francois Gouget June 22, 2018
by Francois Gouget June 22, 2018
June 22, 2018
Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com>
---
testbot/bin/WineRunTask.pl | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/testbot/bin/WineRunTask.pl b/testbot/bin/WineRunTask.pl
index 3f5a3ee8d..37c63b4b5 100755
--- a/testbot/bin/WineRunTask.pl
+++ b/testbot/bin/WineRunTask.pl
@@ -789,12 +789,12 @@ if ($TA->GetFile($RptFileName, "$TaskDir/$RptFileName"))
{
$NewStatus = 'boterror';
Error "Unable to open '$RptFileName' for reading: $!\n";
- LogTaskError("Unable to open the log file for reading: $!\n");
+ LogTaskError("Unable to open '$RptFileName' for reading: $!\n");
}
}
elsif (!defined $TAError)
{
- $TAError = "An error occurred while retrieving the test report: ". $TA->GetLastError();
+ $TAError = "An error occurred while retrieving $RptFileName: ". $TA->GetLastError();
}
$TA->Disconnect();
--
2.17.1
1
0
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
dlls/crypt32/tests/oid.c | 73 +++++++++++++++-------------------------
1 file changed, 27 insertions(+), 46 deletions(-)
diff --git a/dlls/crypt32/tests/oid.c b/dlls/crypt32/tests/oid.c
index 8fc67b3353..0e1442334f 100644
--- a/dlls/crypt32/tests/oid.c
+++ b/dlls/crypt32/tests/oid.c
@@ -547,58 +547,39 @@ static void test_findOIDInfo(void)
static CHAR oid_rsa_md5[] = szOID_RSA_MD5, oid_sha256[] = szOID_NIST_sha256;
ALG_ID alg = CALG_SHA1;
ALG_ID algs[2] = { CALG_MD5, CALG_RSA_SIGN };
+ const struct oid_info
+ {
+ DWORD key_type;
+ void *key;
+ const char *oid;
+ ALG_ID algid;
+ ALG_ID broken_algid;
+ } oid_test_info [] =
+ {
+ { CRYPT_OID_INFO_OID_KEY, oid_rsa_md5, szOID_RSA_MD5, CALG_MD5 },
+ { CRYPT_OID_INFO_NAME_KEY, sha1, szOID_OIWSEC_sha1, CALG_SHA1 },
+ { CRYPT_OID_INFO_ALGID_KEY, &alg, szOID_OIWSEC_sha1, CALG_SHA1 },
+ { CRYPT_OID_INFO_SIGN_KEY, algs, szOID_RSA_MD5RSA, CALG_MD5 },
+ { CRYPT_OID_INFO_OID_KEY, oid_sha256, szOID_NIST_sha256, CALG_SHA_256, -1 },
+ };
PCCRYPT_OID_INFO info;
-
- static const WCHAR sha256W[] = {'s','h','a','2','5','6',0};
+ int i;
info = CryptFindOIDInfo(0, NULL, 0);
ok(info == NULL, "Expected NULL\n");
- info = CryptFindOIDInfo(CRYPT_OID_INFO_OID_KEY, oid_rsa_md5, 0);
- ok(info != NULL, "Expected to find szOID_RSA_MD5\n");
- if (info)
- {
- ok(!strcmp(info->pszOID, szOID_RSA_MD5), "Expected %s, got %s\n",
- szOID_RSA_MD5, info->pszOID);
- ok(U(*info).Algid == CALG_MD5, "Expected CALG_MD5, got %d\n",
- U(*info).Algid);
- }
- info = CryptFindOIDInfo(CRYPT_OID_INFO_NAME_KEY, sha1, 0);
- ok(info != NULL, "Expected to find sha1\n");
- if (info)
- {
- ok(!strcmp(info->pszOID, szOID_OIWSEC_sha1), "Expected %s, got %s\n",
- szOID_OIWSEC_sha1, info->pszOID);
- ok(U(*info).Algid == CALG_SHA1, "Expected CALG_SHA1, got %d\n",
- U(*info).Algid);
- }
- info = CryptFindOIDInfo(CRYPT_OID_INFO_ALGID_KEY, &alg, 0);
- ok(info != NULL, "Expected to find sha1\n");
- if (info)
- {
- ok(!strcmp(info->pszOID, szOID_OIWSEC_sha1), "Expected %s, got %s\n",
- szOID_OIWSEC_sha1, info->pszOID);
- ok(U(*info).Algid == CALG_SHA1, "Expected CALG_SHA1, got %d\n",
- U(*info).Algid);
- }
- info = CryptFindOIDInfo(CRYPT_OID_INFO_SIGN_KEY, algs, 0);
- ok(info != NULL, "Expected to find md5RSA\n");
- if (info)
- {
- ok(!strcmp(info->pszOID, szOID_RSA_MD5RSA), "Expected %s, got %s\n",
- szOID_RSA_MD5RSA, info->pszOID);
- ok(U(*info).Algid == CALG_MD5, "Expected CALG_MD5, got %d\n",
- U(*info).Algid);
- }
- info = CryptFindOIDInfo(CRYPT_OID_INFO_OID_KEY, oid_sha256, 0);
- ok(info != NULL, "Expected to find szOID_RSA_MD5\n");
- if (info)
+ for (i = 0; i < ARRAY_SIZE(oid_test_info); i++)
{
- ok(!strcmp(info->pszOID, szOID_NIST_sha256), "Expected %s, got %s\n",
- szOID_NIST_sha256, info->pszOID);
- ok(!lstrcmpW(info->pwszName, sha256W), "pwszName = %s\n", wine_dbgstr_w(info->pwszName));
- ok(U(*info).Algid == CALG_SHA_256 || U(*info).Algid == -1,
- "Expected CALG_MD5 or -1, got %d\n", U(*info).Algid);
+ const struct oid_info *test = &oid_test_info[i];
+
+ info = CryptFindOIDInfo(test->key_type, test->key, 0);
+ ok(info != NULL, "Failed to find %s.\n", test->oid);
+ if (info)
+ {
+ ok(!strcmp(info->pszOID, test->oid), "Unexpected OID %s, expected %s\n", info->pszOID, test->oid);
+ ok(U(*info).Algid == test->algid || broken(U(*info).Algid == test->broken_algid),
+ "Unexpected Algid %d, expected %d\n", U(*info).Algid, test->algid);
+ }
}
}
--
2.17.1
1
2
June 22, 2018
Signed-off-by: Józef Kucia <jkucia(a)codeweavers.com>
---
dlls/shell32/tests/shellpath.c | 17 ++++++-----------
1 file changed, 6 insertions(+), 11 deletions(-)
diff --git a/dlls/shell32/tests/shellpath.c b/dlls/shell32/tests/shellpath.c
index a5784237b162..bac64e57a7b9 100644
--- a/dlls/shell32/tests/shellpath.c
+++ b/dlls/shell32/tests/shellpath.c
@@ -1306,10 +1306,9 @@ static const struct knownFolderDef known_folders[] = {
NULL,
0,
0),
- { 0 }
};
#undef KNOWN_FOLDER
-BOOL known_folder_found[ARRAY_SIZE(known_folders)-1];
+BOOL known_folder_found[ARRAY_SIZE(known_folders)];
static void test_parameters(void)
{
@@ -1873,9 +1872,6 @@ if (0) { /* crashes */
{
const KNOWNFOLDERID *folder_id = known_folders[i].folderId;
- if (!folder_id)
- continue;
-
path = NULL;
hr = pSHGetKnownFolderPath(folder_id, KF_FLAG_DEFAULT, NULL, &path);
if (FAILED(hr))
@@ -1968,19 +1964,20 @@ static BOOL is_in_strarray(const WCHAR *needle, const char *hay)
static void check_known_folder(IKnownFolderManager *mgr, KNOWNFOLDERID *folderId)
{
HRESULT hr;
- const struct knownFolderDef *known_folder = &known_folders[0];
int csidl, expectedCsidl, ret;
KNOWNFOLDER_DEFINITION kfd;
IKnownFolder *folder;
WCHAR sName[1024];
- BOOL *current_known_folder_found = &known_folder_found[0];
BOOL found = FALSE;
+ unsigned int i;
- while(known_folder->folderId != NULL)
+ for (i = 0; i < ARRAY_SIZE(known_folders); ++i)
{
+ const struct knownFolderDef *known_folder = &known_folders[i];
+
if(IsEqualGUID(known_folder->folderId, folderId))
{
- *current_known_folder_found = TRUE;
+ known_folder_found[i] = TRUE;
found = TRUE;
/* verify CSIDL */
if(!(known_folder->csidl & NO_CSIDL))
@@ -2032,8 +2029,6 @@ static void check_known_folder(IKnownFolderManager *mgr, KNOWNFOLDERID *folderId
break;
}
- known_folder++;
- current_known_folder_found++;
}
if(!found)
--
2.16.4
1
0
June 22, 2018
To use it in other tests.
Signed-off-by: Józef Kucia <jkucia(a)codeweavers.com>
---
dlls/shell32/tests/shellpath.c | 1170 ++++++++++++++++++++--------------------
1 file changed, 585 insertions(+), 585 deletions(-)
diff --git a/dlls/shell32/tests/shellpath.c b/dlls/shell32/tests/shellpath.c
index 505da2778e26..736cd3b8caa3 100644
--- a/dlls/shell32/tests/shellpath.c
+++ b/dlls/shell32/tests/shellpath.c
@@ -304,591 +304,6 @@ static const char *getFolderName(int folder)
}
}
-static void test_parameters(void)
-{
- LPITEMIDLIST pidl = NULL;
- char path[MAX_PATH];
- HRESULT hr;
-
- if (pSHGetFolderLocation)
- {
- /* check a bogus CSIDL: */
- pidl = NULL;
- hr = pSHGetFolderLocation(NULL, 0xeeee, NULL, 0, &pidl);
- ok(hr == E_INVALIDARG, "got 0x%08x, expected E_INVALIDARG\n", hr);
- if (hr == S_OK) IMalloc_Free(pMalloc, pidl);
-
- /* check a bogus user token: */
- pidl = NULL;
- hr = pSHGetFolderLocation(NULL, CSIDL_FAVORITES, (HANDLE)2, 0, &pidl);
- ok(hr == E_FAIL || hr == E_HANDLE, "got 0x%08x, expected E_FAIL or E_HANDLE\n", hr);
- if (hr == S_OK) IMalloc_Free(pMalloc, pidl);
-
- /* a NULL pidl pointer crashes, so don't test it */
- }
-
- if (pSHGetSpecialFolderLocation)
- {
- if (0)
- /* crashes */
- SHGetSpecialFolderLocation(NULL, 0, NULL);
-
- hr = pSHGetSpecialFolderLocation(NULL, 0xeeee, &pidl);
- ok(hr == E_INVALIDARG, "got returned 0x%08x\n", hr);
- }
-
- if (pSHGetFolderPathA)
- {
- /* expect 2's a bogus handle, especially since we didn't open it */
- hr = pSHGetFolderPathA(NULL, CSIDL_DESKTOP, (HANDLE)2, SHGFP_TYPE_DEFAULT, path);
- ok(hr == E_FAIL || hr == E_HANDLE || /* Vista and 2k8 */
- broken(hr == S_OK), /* W2k and Me */ "got 0x%08x, expected E_FAIL\n", hr);
-
- hr = pSHGetFolderPathA(NULL, 0xeeee, NULL, SHGFP_TYPE_DEFAULT, path);
- ok(hr == E_INVALIDARG, "got 0x%08x, expected E_INVALIDARG\n", hr);
- }
-
- if (pSHGetSpecialFolderPathA)
- {
- BOOL ret;
-
- if (0)
- pSHGetSpecialFolderPathA(NULL, NULL, CSIDL_BITBUCKET, FALSE);
-
- /* odd but true: calling with a NULL path still succeeds if it's a real
- * dir (on some windows platform). on winME it generates exception.
- */
- ret = pSHGetSpecialFolderPathA(NULL, path, CSIDL_PROGRAMS, FALSE);
- ok(ret, "got %d\n", ret);
-
- ret = pSHGetSpecialFolderPathA(NULL, path, 0xeeee, FALSE);
- ok(!ret, "got %d\n", ret);
- }
-}
-
-/* Returns the folder's PIDL type, or 0xff if one can't be found. */
-static BYTE testSHGetFolderLocation(int folder)
-{
- LPITEMIDLIST pidl;
- HRESULT hr;
- BYTE ret = 0xff;
-
- /* treat absence of function as success */
- if (!pSHGetFolderLocation) return TRUE;
-
- pidl = NULL;
- hr = pSHGetFolderLocation(NULL, folder, NULL, 0, &pidl);
- if (hr == S_OK)
- {
- if (pidl)
- {
- LPITEMIDLIST pidlLast = pILFindLastID(pidl);
-
- ok(pidlLast != NULL, "%s: ILFindLastID failed\n",
- getFolderName(folder));
- if (pidlLast)
- ret = pidlLast->mkid.abID[0];
- IMalloc_Free(pMalloc, pidl);
- }
- }
- return ret;
-}
-
-/* Returns the folder's PIDL type, or 0xff if one can't be found. */
-static BYTE testSHGetSpecialFolderLocation(int folder)
-{
- LPITEMIDLIST pidl;
- HRESULT hr;
- BYTE ret = 0xff;
-
- /* treat absence of function as success */
- if (!pSHGetSpecialFolderLocation) return TRUE;
-
- pidl = NULL;
- hr = pSHGetSpecialFolderLocation(NULL, folder, &pidl);
- if (hr == S_OK)
- {
- if (pidl)
- {
- LPITEMIDLIST pidlLast = pILFindLastID(pidl);
-
- ok(pidlLast != NULL,
- "%s: ILFindLastID failed\n", getFolderName(folder));
- if (pidlLast)
- ret = pidlLast->mkid.abID[0];
- IMalloc_Free(pMalloc, pidl);
- }
- }
- return ret;
-}
-
-static void test_SHGetFolderPath(BOOL optional, int folder)
-{
- char path[MAX_PATH];
- HRESULT hr;
-
- if (!pSHGetFolderPathA) return;
-
- hr = pSHGetFolderPathA(NULL, folder, NULL, SHGFP_TYPE_CURRENT, path);
- ok(hr == S_OK || optional,
- "SHGetFolderPathA(NULL, %s, NULL, SHGFP_TYPE_CURRENT, path) failed: 0x%08x\n", getFolderName(folder), hr);
-}
-
-static void test_SHGetSpecialFolderPath(BOOL optional, int folder)
-{
- char path[MAX_PATH];
- BOOL ret;
-
- if (!pSHGetSpecialFolderPathA) return;
-
- ret = pSHGetSpecialFolderPathA(NULL, path, folder, FALSE);
- if (ret && winetest_interactive)
- printf("%s: %s\n", getFolderName(folder), path);
- ok(ret || optional,
- "SHGetSpecialFolderPathA(NULL, path, %s, FALSE) failed\n",
- getFolderName(folder));
-}
-
-static void test_ShellValues(const struct shellExpectedValues testEntries[],
- int numEntries, BOOL optional)
-{
- int i;
-
- for (i = 0; i < numEntries; i++)
- {
- BYTE type;
- int j;
- BOOL foundTypeMatch = FALSE;
-
- if (pSHGetFolderLocation)
- {
- type = testSHGetFolderLocation(testEntries[i].folder);
- for (j = 0; !foundTypeMatch && j < testEntries[i].numTypes; j++)
- if (testEntries[i].types[j] == type)
- foundTypeMatch = TRUE;
- ok(foundTypeMatch || optional || broken(type == 0xff) /* Win9x */,
- "%s has unexpected type %d (0x%02x)\n",
- getFolderName(testEntries[i].folder), type, type);
- }
- type = testSHGetSpecialFolderLocation(testEntries[i].folder);
- for (j = 0, foundTypeMatch = FALSE; !foundTypeMatch &&
- j < testEntries[i].numTypes; j++)
- if (testEntries[i].types[j] == type)
- foundTypeMatch = TRUE;
- ok(foundTypeMatch || optional || broken(type == 0xff) /* Win9x */,
- "%s has unexpected type %d (0x%02x)\n",
- getFolderName(testEntries[i].folder), type, type);
- switch (type)
- {
- case PT_FOLDER:
- case PT_DRIVE:
- case PT_DRIVE2:
- case PT_IESPECIAL2:
- test_SHGetFolderPath(optional, testEntries[i].folder);
- test_SHGetSpecialFolderPath(optional, testEntries[i].folder);
- break;
- }
- }
-}
-
-/* Attempts to verify that the folder path corresponding to the folder CSIDL
- * value has the same value as the environment variable with name envVar.
- * Doesn't mind if SHGetSpecialFolderPath fails for folder or if envVar isn't
- * set in this environment; different OS and shell version behave differently.
- * However, if both are present, fails if envVar's value is not the same
- * (byte-for-byte) as what SHGetSpecialFolderPath returns.
- */
-static void matchSpecialFolderPathToEnv(int folder, const char *envVar)
-{
- char path[MAX_PATH];
-
- if (!pSHGetSpecialFolderPathA) return;
-
- if (pSHGetSpecialFolderPathA(NULL, path, folder, FALSE))
- {
- char *envVal = getenv(envVar);
-
- ok(!envVal || !lstrcmpiA(envVal, path),
- "%%%s%% does not match SHGetSpecialFolderPath:\n"
- "%%%s%% is %s\nSHGetSpecialFolderPath returns %s\n",
- envVar, envVar, envVal, path);
- }
-}
-
-/* Attempts to match the GUID returned by SHGetFolderLocation for folder with
- * GUID. Assumes the type of the returned PIDL is in fact a GUID, but doesn't
- * fail if it isn't--that check should already have been done.
- * Fails if the returned PIDL is a GUID whose value does not match guid.
- */
-static void matchGUID(int folder, const GUID *guid, const GUID *guid_alt)
-{
- LPITEMIDLIST pidl;
- HRESULT hr;
-
- if (!pSHGetFolderLocation) return;
- if (!guid) return;
-
- pidl = NULL;
- hr = pSHGetFolderLocation(NULL, folder, NULL, 0, &pidl);
- if (hr == S_OK)
- {
- LPITEMIDLIST pidlLast = pILFindLastID(pidl);
-
- if (pidlLast && (pidlLast->mkid.abID[0] == PT_SHELLEXT ||
- pidlLast->mkid.abID[0] == PT_GUID))
- {
- GUID *shellGuid = (GUID *)(pidlLast->mkid.abID + 2);
-
- if (!guid_alt)
- ok(IsEqualIID(shellGuid, guid),
- "%s: got GUID %s, expected %s\n", getFolderName(folder),
- wine_dbgstr_guid(shellGuid), wine_dbgstr_guid(guid));
- else
- ok(IsEqualIID(shellGuid, guid) ||
- IsEqualIID(shellGuid, guid_alt),
- "%s: got GUID %s, expected %s or %s\n", getFolderName(folder),
- wine_dbgstr_guid(shellGuid), wine_dbgstr_guid(guid), wine_dbgstr_guid(guid_alt));
- }
- IMalloc_Free(pMalloc, pidl);
- }
-}
-
-/* Checks the PIDL type of all the known values. */
-static void test_PidlTypes(void)
-{
- /* Desktop */
- test_SHGetFolderPath(FALSE, CSIDL_DESKTOP);
- test_SHGetSpecialFolderPath(FALSE, CSIDL_DESKTOP);
-
- test_ShellValues(requiredShellValues, ARRAY_SIZE(requiredShellValues), FALSE);
- test_ShellValues(optionalShellValues, ARRAY_SIZE(optionalShellValues), TRUE);
-}
-
-/* FIXME: Should be in shobjidl.idl */
-DEFINE_GUID(CLSID_NetworkExplorerFolder, 0xF02C1A0D, 0xBE21, 0x4350, 0x88, 0xB0, 0x73, 0x67, 0xFC, 0x96, 0xEF, 0x3C);
-DEFINE_GUID(_CLSID_Documents, 0xA8CDFF1C, 0x4878, 0x43be, 0xB5, 0xFD, 0xF8, 0x09, 0x1C, 0x1C, 0x60, 0xD0);
-
-/* Verifies various shell virtual folders have the correct well-known GUIDs. */
-static void test_GUIDs(void)
-{
- matchGUID(CSIDL_BITBUCKET, &CLSID_RecycleBin, NULL);
- matchGUID(CSIDL_CONTROLS, &CLSID_ControlPanel, NULL);
- matchGUID(CSIDL_DRIVES, &CLSID_MyComputer, NULL);
- matchGUID(CSIDL_INTERNET, &CLSID_Internet, NULL);
- matchGUID(CSIDL_NETWORK, &CLSID_NetworkPlaces, &CLSID_NetworkExplorerFolder); /* Vista and higher */
- matchGUID(CSIDL_PERSONAL, &CLSID_MyDocuments, &_CLSID_Documents /* win8 */);
- matchGUID(CSIDL_COMMON_DOCUMENTS, &CLSID_CommonDocuments, NULL);
- matchGUID(CSIDL_PRINTERS, &CLSID_Printers, NULL);
-}
-
-/* Verifies various shell paths match the environment variables to which they
- * correspond.
- */
-static void test_EnvVars(void)
-{
- matchSpecialFolderPathToEnv(CSIDL_PROGRAM_FILES, "ProgramFiles");
- matchSpecialFolderPathToEnv(CSIDL_APPDATA, "APPDATA");
- matchSpecialFolderPathToEnv(CSIDL_PROFILE, "USERPROFILE");
- matchSpecialFolderPathToEnv(CSIDL_WINDOWS, "SystemRoot");
- matchSpecialFolderPathToEnv(CSIDL_WINDOWS, "windir");
- matchSpecialFolderPathToEnv(CSIDL_PROGRAM_FILES_COMMON, "CommonProgramFiles");
- /* this is only set on Wine, but can't hurt to verify it: */
- matchSpecialFolderPathToEnv(CSIDL_SYSTEM, "winsysdir");
-}
-
-/* Loosely based on PathRemoveBackslashA from dlls/shlwapi/path.c */
-static BOOL myPathIsRootA(LPCSTR lpszPath)
-{
- if (lpszPath && *lpszPath &&
- lpszPath[1] == ':' && lpszPath[2] == '\\' && lpszPath[3] == '\0')
- return TRUE; /* X:\ */
- return FALSE;
-}
-static LPSTR myPathRemoveBackslashA( LPSTR lpszPath )
-{
- LPSTR szTemp = NULL;
-
- if(lpszPath)
- {
- szTemp = CharPrevA(lpszPath, lpszPath + strlen(lpszPath));
- if (!myPathIsRootA(lpszPath) && *szTemp == '\\')
- *szTemp = '\0';
- }
- return szTemp;
-}
-
-/* Verifies the shell path for CSIDL_WINDOWS matches the return from
- * GetWindowsDirectory. If SHGetSpecialFolderPath fails, no harm, no foul--not
- * every shell32 version supports CSIDL_WINDOWS.
- */
-static void testWinDir(void)
-{
- char windowsShellPath[MAX_PATH], windowsDir[MAX_PATH] = { 0 };
-
- if (!pSHGetSpecialFolderPathA) return;
-
- if (pSHGetSpecialFolderPathA(NULL, windowsShellPath, CSIDL_WINDOWS, FALSE))
- {
- myPathRemoveBackslashA(windowsShellPath);
- GetWindowsDirectoryA(windowsDir, sizeof(windowsDir));
- myPathRemoveBackslashA(windowsDir);
- ok(!lstrcmpiA(windowsDir, windowsShellPath),
- "GetWindowsDirectory returns %s SHGetSpecialFolderPath returns %s\n",
- windowsDir, windowsShellPath);
- }
-}
-
-/* Verifies the shell path for CSIDL_SYSTEM matches the return from
- * GetSystemDirectory. If SHGetSpecialFolderPath fails, no harm,
- * no foul--not every shell32 version supports CSIDL_SYSTEM.
- */
-static void testSystemDir(void)
-{
- char systemShellPath[MAX_PATH], systemDir[MAX_PATH], systemDirx86[MAX_PATH];
-
- if (!pSHGetSpecialFolderPathA) return;
-
- GetSystemDirectoryA(systemDir, sizeof(systemDir));
- myPathRemoveBackslashA(systemDir);
- if (pSHGetSpecialFolderPathA(NULL, systemShellPath, CSIDL_SYSTEM, FALSE))
- {
- myPathRemoveBackslashA(systemShellPath);
- ok(!lstrcmpiA(systemDir, systemShellPath),
- "GetSystemDirectory returns %s SHGetSpecialFolderPath returns %s\n",
- systemDir, systemShellPath);
- }
-
- if (!pGetSystemWow64DirectoryA || !pGetSystemWow64DirectoryA(systemDirx86, sizeof(systemDirx86)))
- GetSystemDirectoryA(systemDirx86, sizeof(systemDirx86));
- myPathRemoveBackslashA(systemDirx86);
- if (pSHGetSpecialFolderPathA(NULL, systemShellPath, CSIDL_SYSTEMX86, FALSE))
- {
- myPathRemoveBackslashA(systemShellPath);
- ok(!lstrcmpiA(systemDirx86, systemShellPath) || broken(!lstrcmpiA(systemDir, systemShellPath)),
- "GetSystemDirectory returns %s SHGetSpecialFolderPath returns %s\n",
- systemDir, systemShellPath);
- }
-}
-
-/* Globals used by subprocesses */
-static int myARGC;
-static char **myARGV;
-static char base[MAX_PATH];
-static char selfname[MAX_PATH];
-
-static BOOL init(void)
-{
- myARGC = winetest_get_mainargs(&myARGV);
- if (!GetCurrentDirectoryA(sizeof(base), base)) return FALSE;
- strcpy(selfname, myARGV[0]);
- return TRUE;
-}
-
-static void doChild(const char *arg)
-{
- char path[MAX_PATH];
- HRESULT hr;
-
- if (arg[0] == '1')
- {
- LPITEMIDLIST pidl;
- char *p;
-
- /* test what happens when CSIDL_FAVORITES is set to a nonexistent directory */
-
- /* test some failure cases first: */
- hr = pSHGetFolderPathA(NULL, CSIDL_FAVORITES, NULL, SHGFP_TYPE_CURRENT, path);
- ok(hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND),
- "SHGetFolderPath returned 0x%08x, expected 0x80070002\n", hr);
-
- pidl = NULL;
- hr = pSHGetFolderLocation(NULL, CSIDL_FAVORITES, NULL, 0, &pidl);
- ok(hr == E_FAIL || hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND),
- "SHGetFolderLocation returned 0x%08x\n", hr);
- if (hr == S_OK && pidl) IMalloc_Free(pMalloc, pidl);
-
- ok(!pSHGetSpecialFolderPathA(NULL, path, CSIDL_FAVORITES, FALSE),
- "SHGetSpecialFolderPath succeeded, expected failure\n");
-
- pidl = NULL;
- hr = pSHGetSpecialFolderLocation(NULL, CSIDL_FAVORITES, &pidl);
- ok(hr == E_FAIL || hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND),
- "SHGetFolderLocation returned 0x%08x\n", hr);
-
- if (hr == S_OK && pidl) IMalloc_Free(pMalloc, pidl);
-
- /* now test success: */
- hr = pSHGetFolderPathA(NULL, CSIDL_FAVORITES | CSIDL_FLAG_CREATE, NULL,
- SHGFP_TYPE_CURRENT, path);
- ok (hr == S_OK, "got 0x%08x\n", hr);
- if (hr == S_OK)
- {
- BOOL ret;
-
- trace("CSIDL_FAVORITES was changed to %s\n", path);
- ret = CreateDirectoryA(path, NULL);
- ok(!ret, "expected failure with ERROR_ALREADY_EXISTS\n");
- if (!ret)
- ok(GetLastError() == ERROR_ALREADY_EXISTS,
- "got %d, expected ERROR_ALREADY_EXISTS\n", GetLastError());
-
- p = path + strlen(path);
- strcpy(p, "\\desktop.ini");
- DeleteFileA(path);
- *p = 0;
- SetFileAttributesA( path, FILE_ATTRIBUTE_NORMAL );
- ret = RemoveDirectoryA(path);
- ok( ret, "failed to remove %s error %u\n", path, GetLastError() );
- }
- }
- else if (arg[0] == '2')
- {
- /* make sure SHGetFolderPath still succeeds when the
- original value of CSIDL_FAVORITES is restored. */
- hr = pSHGetFolderPathA(NULL, CSIDL_FAVORITES | CSIDL_FLAG_CREATE, NULL,
- SHGFP_TYPE_CURRENT, path);
- ok(hr == S_OK, "SHGetFolderPath failed: 0x%08x\n", hr);
- }
-}
-
-/* Tests the return values from the various shell functions both with and
- * without the use of the CSIDL_FLAG_CREATE flag. This flag only appeared in
- * version 5 of the shell, so don't test unless it's at least version 5.
- * The test reads a value from the registry, modifies it, calls
- * SHGetFolderPath once with the CSIDL_FLAG_CREATE flag, and immediately
- * afterward without it. Then it restores the registry and deletes the folder
- * that was created.
- * One oddity with respect to restoration: shell32 caches somehow, so it needs
- * to be reloaded in order to see the correct (restored) value.
- * Some APIs unrelated to the ones under test may fail, but I expect they're
- * covered by other unit tests; I just print out something about failure to
- * help trace what's going on.
- */
-static void test_NonExistentPath(void)
-{
- static const char userShellFolders[] =
- "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders";
- char originalPath[MAX_PATH], modifiedPath[MAX_PATH];
- HKEY key;
-
- if (!pSHGetFolderPathA) return;
- if (!pSHGetFolderLocation) return;
- if (!pSHGetSpecialFolderPathA) return;
- if (!pSHGetSpecialFolderLocation) return;
- if (!pSHFileOperationA) return;
- if (shellVersion.dwMajorVersion < 5) return;
-
- if (!RegOpenKeyExA(HKEY_CURRENT_USER, userShellFolders, 0, KEY_ALL_ACCESS,
- &key))
- {
- DWORD len, type;
-
- len = sizeof(originalPath);
- if (!RegQueryValueExA(key, "Favorites", NULL, &type,
- (LPBYTE)&originalPath, &len))
- {
- size_t len = strlen(originalPath);
-
- memcpy(modifiedPath, originalPath, len);
- modifiedPath[len++] = '2';
- modifiedPath[len++] = '\0';
- trace("Changing CSIDL_FAVORITES to %s\n", modifiedPath);
- if (!RegSetValueExA(key, "Favorites", 0, type,
- (LPBYTE)modifiedPath, len))
- {
- char buffer[MAX_PATH+20];
- STARTUPINFOA startup;
- PROCESS_INFORMATION info;
-
- sprintf(buffer, "%s tests/shellpath.c 1", selfname);
- memset(&startup, 0, sizeof(startup));
- startup.cb = sizeof(startup);
- startup.dwFlags = STARTF_USESHOWWINDOW;
- startup.wShowWindow = SW_SHOWNORMAL;
- CreateProcessA(NULL, buffer, NULL, NULL, FALSE, 0L, NULL, NULL,
- &startup, &info);
- winetest_wait_child_process( info.hProcess );
-
- /* restore original values: */
- trace("Restoring CSIDL_FAVORITES to %s\n", originalPath);
- RegSetValueExA(key, "Favorites", 0, type, (LPBYTE) originalPath,
- strlen(originalPath) + 1);
- RegFlushKey(key);
-
- sprintf(buffer, "%s tests/shellpath.c 2", selfname);
- memset(&startup, 0, sizeof(startup));
- startup.cb = sizeof(startup);
- startup.dwFlags = STARTF_USESHOWWINDOW;
- startup.wShowWindow = SW_SHOWNORMAL;
- CreateProcessA(NULL, buffer, NULL, NULL, FALSE, 0L, NULL, NULL,
- &startup, &info);
- ok(WaitForSingleObject(info.hProcess, 30000) == WAIT_OBJECT_0,
- "child process termination\n");
- }
- }
- else skip("RegQueryValueExA(key, Favorites, ...) failed\n");
- if (key)
- RegCloseKey(key);
- }
- else skip("RegOpenKeyExA(HKEY_CURRENT_USER, %s, ...) failed\n", userShellFolders);
-}
-
-static void test_SHGetFolderPathEx(void)
-{
- HRESULT hr;
- WCHAR buffer[MAX_PATH], *path;
- DWORD len;
-
- if (!pSHGetKnownFolderPath || !pSHGetFolderPathEx)
- {
- win_skip("SHGetKnownFolderPath or SHGetFolderPathEx not available\n");
- return;
- }
-
-if (0) { /* crashes */
- hr = pSHGetKnownFolderPath(&FOLDERID_Desktop, 0, NULL, NULL);
- ok(hr == E_INVALIDARG, "expected E_INVALIDARG, got 0x%08x\n", hr);
-}
- /* non-existent folder id */
- path = (void *)0xdeadbeef;
- hr = pSHGetKnownFolderPath(&IID_IOleObject, 0, NULL, &path);
- ok(hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), "got 0x%08x\n", hr);
- ok(path == NULL, "got %p\n", path);
-
- path = NULL;
- hr = pSHGetKnownFolderPath(&FOLDERID_Desktop, KF_FLAG_DEFAULT_PATH, NULL, &path);
- ok(hr == S_OK, "expected S_OK, got 0x%08x\n", hr);
- ok(path != NULL, "expected path != NULL\n");
- CoTaskMemFree(path);
-
- path = NULL;
- hr = pSHGetKnownFolderPath(&FOLDERID_Desktop, 0, NULL, &path);
- ok(hr == S_OK, "expected S_OK, got 0x%08x\n", hr);
- ok(path != NULL, "expected path != NULL\n");
-
- hr = pSHGetFolderPathEx(&FOLDERID_Desktop, 0, NULL, buffer, MAX_PATH);
- ok(hr == S_OK, "expected S_OK, got 0x%08x\n", hr);
- ok(!lstrcmpiW(path, buffer), "expected equal paths\n");
- len = lstrlenW(buffer);
- CoTaskMemFree(path);
-
- hr = pSHGetFolderPathEx(&FOLDERID_Desktop, 0, NULL, buffer, 0);
- ok(hr == E_INVALIDARG, "expected E_INVALIDARG, got 0x%08x\n", hr);
-
-if (0) { /* crashes */
- hr = pSHGetFolderPathEx(&FOLDERID_Desktop, 0, NULL, NULL, len + 1);
- ok(hr == E_INVALIDARG, "expected E_INVALIDARG, got 0x%08x\n", hr);
-
- hr = pSHGetFolderPathEx(NULL, 0, NULL, buffer, MAX_PATH);
- ok(hr == E_INVALIDARG, "expected E_INVALIDARG, got 0x%08x\n", hr);
-}
- hr = pSHGetFolderPathEx(&FOLDERID_Desktop, 0, NULL, buffer, len);
- ok(hr == E_NOT_SUFFICIENT_BUFFER, "expected E_NOT_SUFFICIENT_BUFFER, got 0x%08x\n", hr);
-
- hr = pSHGetFolderPathEx(&FOLDERID_Desktop, 0, NULL, buffer, len + 1);
- ok(hr == S_OK, "expected S_OK, got 0x%08x\n", hr);
-}
-
/* Standard CSIDL values (and their flags) uses only two less-significant bytes */
#define NO_CSIDL 0x10000
#define WINE_ATTRIBUTES_OPTIONAL 0x20000
@@ -1896,6 +1311,591 @@ static const struct knownFolderDef known_folders[] = {
#undef KNOWN_FOLDER
BOOL known_folder_found[ARRAY_SIZE(known_folders)-1];
+static void test_parameters(void)
+{
+ LPITEMIDLIST pidl = NULL;
+ char path[MAX_PATH];
+ HRESULT hr;
+
+ if (pSHGetFolderLocation)
+ {
+ /* check a bogus CSIDL: */
+ pidl = NULL;
+ hr = pSHGetFolderLocation(NULL, 0xeeee, NULL, 0, &pidl);
+ ok(hr == E_INVALIDARG, "got 0x%08x, expected E_INVALIDARG\n", hr);
+ if (hr == S_OK) IMalloc_Free(pMalloc, pidl);
+
+ /* check a bogus user token: */
+ pidl = NULL;
+ hr = pSHGetFolderLocation(NULL, CSIDL_FAVORITES, (HANDLE)2, 0, &pidl);
+ ok(hr == E_FAIL || hr == E_HANDLE, "got 0x%08x, expected E_FAIL or E_HANDLE\n", hr);
+ if (hr == S_OK) IMalloc_Free(pMalloc, pidl);
+
+ /* a NULL pidl pointer crashes, so don't test it */
+ }
+
+ if (pSHGetSpecialFolderLocation)
+ {
+ if (0)
+ /* crashes */
+ SHGetSpecialFolderLocation(NULL, 0, NULL);
+
+ hr = pSHGetSpecialFolderLocation(NULL, 0xeeee, &pidl);
+ ok(hr == E_INVALIDARG, "got returned 0x%08x\n", hr);
+ }
+
+ if (pSHGetFolderPathA)
+ {
+ /* expect 2's a bogus handle, especially since we didn't open it */
+ hr = pSHGetFolderPathA(NULL, CSIDL_DESKTOP, (HANDLE)2, SHGFP_TYPE_DEFAULT, path);
+ ok(hr == E_FAIL || hr == E_HANDLE || /* Vista and 2k8 */
+ broken(hr == S_OK), /* W2k and Me */ "got 0x%08x, expected E_FAIL\n", hr);
+
+ hr = pSHGetFolderPathA(NULL, 0xeeee, NULL, SHGFP_TYPE_DEFAULT, path);
+ ok(hr == E_INVALIDARG, "got 0x%08x, expected E_INVALIDARG\n", hr);
+ }
+
+ if (pSHGetSpecialFolderPathA)
+ {
+ BOOL ret;
+
+ if (0)
+ pSHGetSpecialFolderPathA(NULL, NULL, CSIDL_BITBUCKET, FALSE);
+
+ /* odd but true: calling with a NULL path still succeeds if it's a real
+ * dir (on some windows platform). on winME it generates exception.
+ */
+ ret = pSHGetSpecialFolderPathA(NULL, path, CSIDL_PROGRAMS, FALSE);
+ ok(ret, "got %d\n", ret);
+
+ ret = pSHGetSpecialFolderPathA(NULL, path, 0xeeee, FALSE);
+ ok(!ret, "got %d\n", ret);
+ }
+}
+
+/* Returns the folder's PIDL type, or 0xff if one can't be found. */
+static BYTE testSHGetFolderLocation(int folder)
+{
+ LPITEMIDLIST pidl;
+ HRESULT hr;
+ BYTE ret = 0xff;
+
+ /* treat absence of function as success */
+ if (!pSHGetFolderLocation) return TRUE;
+
+ pidl = NULL;
+ hr = pSHGetFolderLocation(NULL, folder, NULL, 0, &pidl);
+ if (hr == S_OK)
+ {
+ if (pidl)
+ {
+ LPITEMIDLIST pidlLast = pILFindLastID(pidl);
+
+ ok(pidlLast != NULL, "%s: ILFindLastID failed\n",
+ getFolderName(folder));
+ if (pidlLast)
+ ret = pidlLast->mkid.abID[0];
+ IMalloc_Free(pMalloc, pidl);
+ }
+ }
+ return ret;
+}
+
+/* Returns the folder's PIDL type, or 0xff if one can't be found. */
+static BYTE testSHGetSpecialFolderLocation(int folder)
+{
+ LPITEMIDLIST pidl;
+ HRESULT hr;
+ BYTE ret = 0xff;
+
+ /* treat absence of function as success */
+ if (!pSHGetSpecialFolderLocation) return TRUE;
+
+ pidl = NULL;
+ hr = pSHGetSpecialFolderLocation(NULL, folder, &pidl);
+ if (hr == S_OK)
+ {
+ if (pidl)
+ {
+ LPITEMIDLIST pidlLast = pILFindLastID(pidl);
+
+ ok(pidlLast != NULL,
+ "%s: ILFindLastID failed\n", getFolderName(folder));
+ if (pidlLast)
+ ret = pidlLast->mkid.abID[0];
+ IMalloc_Free(pMalloc, pidl);
+ }
+ }
+ return ret;
+}
+
+static void test_SHGetFolderPath(BOOL optional, int folder)
+{
+ char path[MAX_PATH];
+ HRESULT hr;
+
+ if (!pSHGetFolderPathA) return;
+
+ hr = pSHGetFolderPathA(NULL, folder, NULL, SHGFP_TYPE_CURRENT, path);
+ ok(hr == S_OK || optional,
+ "SHGetFolderPathA(NULL, %s, NULL, SHGFP_TYPE_CURRENT, path) failed: 0x%08x\n", getFolderName(folder), hr);
+}
+
+static void test_SHGetSpecialFolderPath(BOOL optional, int folder)
+{
+ char path[MAX_PATH];
+ BOOL ret;
+
+ if (!pSHGetSpecialFolderPathA) return;
+
+ ret = pSHGetSpecialFolderPathA(NULL, path, folder, FALSE);
+ if (ret && winetest_interactive)
+ printf("%s: %s\n", getFolderName(folder), path);
+ ok(ret || optional,
+ "SHGetSpecialFolderPathA(NULL, path, %s, FALSE) failed\n",
+ getFolderName(folder));
+}
+
+static void test_ShellValues(const struct shellExpectedValues testEntries[],
+ int numEntries, BOOL optional)
+{
+ int i;
+
+ for (i = 0; i < numEntries; i++)
+ {
+ BYTE type;
+ int j;
+ BOOL foundTypeMatch = FALSE;
+
+ if (pSHGetFolderLocation)
+ {
+ type = testSHGetFolderLocation(testEntries[i].folder);
+ for (j = 0; !foundTypeMatch && j < testEntries[i].numTypes; j++)
+ if (testEntries[i].types[j] == type)
+ foundTypeMatch = TRUE;
+ ok(foundTypeMatch || optional || broken(type == 0xff) /* Win9x */,
+ "%s has unexpected type %d (0x%02x)\n",
+ getFolderName(testEntries[i].folder), type, type);
+ }
+ type = testSHGetSpecialFolderLocation(testEntries[i].folder);
+ for (j = 0, foundTypeMatch = FALSE; !foundTypeMatch &&
+ j < testEntries[i].numTypes; j++)
+ if (testEntries[i].types[j] == type)
+ foundTypeMatch = TRUE;
+ ok(foundTypeMatch || optional || broken(type == 0xff) /* Win9x */,
+ "%s has unexpected type %d (0x%02x)\n",
+ getFolderName(testEntries[i].folder), type, type);
+ switch (type)
+ {
+ case PT_FOLDER:
+ case PT_DRIVE:
+ case PT_DRIVE2:
+ case PT_IESPECIAL2:
+ test_SHGetFolderPath(optional, testEntries[i].folder);
+ test_SHGetSpecialFolderPath(optional, testEntries[i].folder);
+ break;
+ }
+ }
+}
+
+/* Attempts to verify that the folder path corresponding to the folder CSIDL
+ * value has the same value as the environment variable with name envVar.
+ * Doesn't mind if SHGetSpecialFolderPath fails for folder or if envVar isn't
+ * set in this environment; different OS and shell version behave differently.
+ * However, if both are present, fails if envVar's value is not the same
+ * (byte-for-byte) as what SHGetSpecialFolderPath returns.
+ */
+static void matchSpecialFolderPathToEnv(int folder, const char *envVar)
+{
+ char path[MAX_PATH];
+
+ if (!pSHGetSpecialFolderPathA) return;
+
+ if (pSHGetSpecialFolderPathA(NULL, path, folder, FALSE))
+ {
+ char *envVal = getenv(envVar);
+
+ ok(!envVal || !lstrcmpiA(envVal, path),
+ "%%%s%% does not match SHGetSpecialFolderPath:\n"
+ "%%%s%% is %s\nSHGetSpecialFolderPath returns %s\n",
+ envVar, envVar, envVal, path);
+ }
+}
+
+/* Attempts to match the GUID returned by SHGetFolderLocation for folder with
+ * GUID. Assumes the type of the returned PIDL is in fact a GUID, but doesn't
+ * fail if it isn't--that check should already have been done.
+ * Fails if the returned PIDL is a GUID whose value does not match guid.
+ */
+static void matchGUID(int folder, const GUID *guid, const GUID *guid_alt)
+{
+ LPITEMIDLIST pidl;
+ HRESULT hr;
+
+ if (!pSHGetFolderLocation) return;
+ if (!guid) return;
+
+ pidl = NULL;
+ hr = pSHGetFolderLocation(NULL, folder, NULL, 0, &pidl);
+ if (hr == S_OK)
+ {
+ LPITEMIDLIST pidlLast = pILFindLastID(pidl);
+
+ if (pidlLast && (pidlLast->mkid.abID[0] == PT_SHELLEXT ||
+ pidlLast->mkid.abID[0] == PT_GUID))
+ {
+ GUID *shellGuid = (GUID *)(pidlLast->mkid.abID + 2);
+
+ if (!guid_alt)
+ ok(IsEqualIID(shellGuid, guid),
+ "%s: got GUID %s, expected %s\n", getFolderName(folder),
+ wine_dbgstr_guid(shellGuid), wine_dbgstr_guid(guid));
+ else
+ ok(IsEqualIID(shellGuid, guid) ||
+ IsEqualIID(shellGuid, guid_alt),
+ "%s: got GUID %s, expected %s or %s\n", getFolderName(folder),
+ wine_dbgstr_guid(shellGuid), wine_dbgstr_guid(guid), wine_dbgstr_guid(guid_alt));
+ }
+ IMalloc_Free(pMalloc, pidl);
+ }
+}
+
+/* Checks the PIDL type of all the known values. */
+static void test_PidlTypes(void)
+{
+ /* Desktop */
+ test_SHGetFolderPath(FALSE, CSIDL_DESKTOP);
+ test_SHGetSpecialFolderPath(FALSE, CSIDL_DESKTOP);
+
+ test_ShellValues(requiredShellValues, ARRAY_SIZE(requiredShellValues), FALSE);
+ test_ShellValues(optionalShellValues, ARRAY_SIZE(optionalShellValues), TRUE);
+}
+
+/* FIXME: Should be in shobjidl.idl */
+DEFINE_GUID(CLSID_NetworkExplorerFolder, 0xF02C1A0D, 0xBE21, 0x4350, 0x88, 0xB0, 0x73, 0x67, 0xFC, 0x96, 0xEF, 0x3C);
+DEFINE_GUID(_CLSID_Documents, 0xA8CDFF1C, 0x4878, 0x43be, 0xB5, 0xFD, 0xF8, 0x09, 0x1C, 0x1C, 0x60, 0xD0);
+
+/* Verifies various shell virtual folders have the correct well-known GUIDs. */
+static void test_GUIDs(void)
+{
+ matchGUID(CSIDL_BITBUCKET, &CLSID_RecycleBin, NULL);
+ matchGUID(CSIDL_CONTROLS, &CLSID_ControlPanel, NULL);
+ matchGUID(CSIDL_DRIVES, &CLSID_MyComputer, NULL);
+ matchGUID(CSIDL_INTERNET, &CLSID_Internet, NULL);
+ matchGUID(CSIDL_NETWORK, &CLSID_NetworkPlaces, &CLSID_NetworkExplorerFolder); /* Vista and higher */
+ matchGUID(CSIDL_PERSONAL, &CLSID_MyDocuments, &_CLSID_Documents /* win8 */);
+ matchGUID(CSIDL_COMMON_DOCUMENTS, &CLSID_CommonDocuments, NULL);
+ matchGUID(CSIDL_PRINTERS, &CLSID_Printers, NULL);
+}
+
+/* Verifies various shell paths match the environment variables to which they
+ * correspond.
+ */
+static void test_EnvVars(void)
+{
+ matchSpecialFolderPathToEnv(CSIDL_PROGRAM_FILES, "ProgramFiles");
+ matchSpecialFolderPathToEnv(CSIDL_APPDATA, "APPDATA");
+ matchSpecialFolderPathToEnv(CSIDL_PROFILE, "USERPROFILE");
+ matchSpecialFolderPathToEnv(CSIDL_WINDOWS, "SystemRoot");
+ matchSpecialFolderPathToEnv(CSIDL_WINDOWS, "windir");
+ matchSpecialFolderPathToEnv(CSIDL_PROGRAM_FILES_COMMON, "CommonProgramFiles");
+ /* this is only set on Wine, but can't hurt to verify it: */
+ matchSpecialFolderPathToEnv(CSIDL_SYSTEM, "winsysdir");
+}
+
+/* Loosely based on PathRemoveBackslashA from dlls/shlwapi/path.c */
+static BOOL myPathIsRootA(LPCSTR lpszPath)
+{
+ if (lpszPath && *lpszPath &&
+ lpszPath[1] == ':' && lpszPath[2] == '\\' && lpszPath[3] == '\0')
+ return TRUE; /* X:\ */
+ return FALSE;
+}
+static LPSTR myPathRemoveBackslashA( LPSTR lpszPath )
+{
+ LPSTR szTemp = NULL;
+
+ if(lpszPath)
+ {
+ szTemp = CharPrevA(lpszPath, lpszPath + strlen(lpszPath));
+ if (!myPathIsRootA(lpszPath) && *szTemp == '\\')
+ *szTemp = '\0';
+ }
+ return szTemp;
+}
+
+/* Verifies the shell path for CSIDL_WINDOWS matches the return from
+ * GetWindowsDirectory. If SHGetSpecialFolderPath fails, no harm, no foul--not
+ * every shell32 version supports CSIDL_WINDOWS.
+ */
+static void testWinDir(void)
+{
+ char windowsShellPath[MAX_PATH], windowsDir[MAX_PATH] = { 0 };
+
+ if (!pSHGetSpecialFolderPathA) return;
+
+ if (pSHGetSpecialFolderPathA(NULL, windowsShellPath, CSIDL_WINDOWS, FALSE))
+ {
+ myPathRemoveBackslashA(windowsShellPath);
+ GetWindowsDirectoryA(windowsDir, sizeof(windowsDir));
+ myPathRemoveBackslashA(windowsDir);
+ ok(!lstrcmpiA(windowsDir, windowsShellPath),
+ "GetWindowsDirectory returns %s SHGetSpecialFolderPath returns %s\n",
+ windowsDir, windowsShellPath);
+ }
+}
+
+/* Verifies the shell path for CSIDL_SYSTEM matches the return from
+ * GetSystemDirectory. If SHGetSpecialFolderPath fails, no harm,
+ * no foul--not every shell32 version supports CSIDL_SYSTEM.
+ */
+static void testSystemDir(void)
+{
+ char systemShellPath[MAX_PATH], systemDir[MAX_PATH], systemDirx86[MAX_PATH];
+
+ if (!pSHGetSpecialFolderPathA) return;
+
+ GetSystemDirectoryA(systemDir, sizeof(systemDir));
+ myPathRemoveBackslashA(systemDir);
+ if (pSHGetSpecialFolderPathA(NULL, systemShellPath, CSIDL_SYSTEM, FALSE))
+ {
+ myPathRemoveBackslashA(systemShellPath);
+ ok(!lstrcmpiA(systemDir, systemShellPath),
+ "GetSystemDirectory returns %s SHGetSpecialFolderPath returns %s\n",
+ systemDir, systemShellPath);
+ }
+
+ if (!pGetSystemWow64DirectoryA || !pGetSystemWow64DirectoryA(systemDirx86, sizeof(systemDirx86)))
+ GetSystemDirectoryA(systemDirx86, sizeof(systemDirx86));
+ myPathRemoveBackslashA(systemDirx86);
+ if (pSHGetSpecialFolderPathA(NULL, systemShellPath, CSIDL_SYSTEMX86, FALSE))
+ {
+ myPathRemoveBackslashA(systemShellPath);
+ ok(!lstrcmpiA(systemDirx86, systemShellPath) || broken(!lstrcmpiA(systemDir, systemShellPath)),
+ "GetSystemDirectory returns %s SHGetSpecialFolderPath returns %s\n",
+ systemDir, systemShellPath);
+ }
+}
+
+/* Globals used by subprocesses */
+static int myARGC;
+static char **myARGV;
+static char base[MAX_PATH];
+static char selfname[MAX_PATH];
+
+static BOOL init(void)
+{
+ myARGC = winetest_get_mainargs(&myARGV);
+ if (!GetCurrentDirectoryA(sizeof(base), base)) return FALSE;
+ strcpy(selfname, myARGV[0]);
+ return TRUE;
+}
+
+static void doChild(const char *arg)
+{
+ char path[MAX_PATH];
+ HRESULT hr;
+
+ if (arg[0] == '1')
+ {
+ LPITEMIDLIST pidl;
+ char *p;
+
+ /* test what happens when CSIDL_FAVORITES is set to a nonexistent directory */
+
+ /* test some failure cases first: */
+ hr = pSHGetFolderPathA(NULL, CSIDL_FAVORITES, NULL, SHGFP_TYPE_CURRENT, path);
+ ok(hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND),
+ "SHGetFolderPath returned 0x%08x, expected 0x80070002\n", hr);
+
+ pidl = NULL;
+ hr = pSHGetFolderLocation(NULL, CSIDL_FAVORITES, NULL, 0, &pidl);
+ ok(hr == E_FAIL || hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND),
+ "SHGetFolderLocation returned 0x%08x\n", hr);
+ if (hr == S_OK && pidl) IMalloc_Free(pMalloc, pidl);
+
+ ok(!pSHGetSpecialFolderPathA(NULL, path, CSIDL_FAVORITES, FALSE),
+ "SHGetSpecialFolderPath succeeded, expected failure\n");
+
+ pidl = NULL;
+ hr = pSHGetSpecialFolderLocation(NULL, CSIDL_FAVORITES, &pidl);
+ ok(hr == E_FAIL || hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND),
+ "SHGetFolderLocation returned 0x%08x\n", hr);
+
+ if (hr == S_OK && pidl) IMalloc_Free(pMalloc, pidl);
+
+ /* now test success: */
+ hr = pSHGetFolderPathA(NULL, CSIDL_FAVORITES | CSIDL_FLAG_CREATE, NULL,
+ SHGFP_TYPE_CURRENT, path);
+ ok (hr == S_OK, "got 0x%08x\n", hr);
+ if (hr == S_OK)
+ {
+ BOOL ret;
+
+ trace("CSIDL_FAVORITES was changed to %s\n", path);
+ ret = CreateDirectoryA(path, NULL);
+ ok(!ret, "expected failure with ERROR_ALREADY_EXISTS\n");
+ if (!ret)
+ ok(GetLastError() == ERROR_ALREADY_EXISTS,
+ "got %d, expected ERROR_ALREADY_EXISTS\n", GetLastError());
+
+ p = path + strlen(path);
+ strcpy(p, "\\desktop.ini");
+ DeleteFileA(path);
+ *p = 0;
+ SetFileAttributesA( path, FILE_ATTRIBUTE_NORMAL );
+ ret = RemoveDirectoryA(path);
+ ok( ret, "failed to remove %s error %u\n", path, GetLastError() );
+ }
+ }
+ else if (arg[0] == '2')
+ {
+ /* make sure SHGetFolderPath still succeeds when the
+ original value of CSIDL_FAVORITES is restored. */
+ hr = pSHGetFolderPathA(NULL, CSIDL_FAVORITES | CSIDL_FLAG_CREATE, NULL,
+ SHGFP_TYPE_CURRENT, path);
+ ok(hr == S_OK, "SHGetFolderPath failed: 0x%08x\n", hr);
+ }
+}
+
+/* Tests the return values from the various shell functions both with and
+ * without the use of the CSIDL_FLAG_CREATE flag. This flag only appeared in
+ * version 5 of the shell, so don't test unless it's at least version 5.
+ * The test reads a value from the registry, modifies it, calls
+ * SHGetFolderPath once with the CSIDL_FLAG_CREATE flag, and immediately
+ * afterward without it. Then it restores the registry and deletes the folder
+ * that was created.
+ * One oddity with respect to restoration: shell32 caches somehow, so it needs
+ * to be reloaded in order to see the correct (restored) value.
+ * Some APIs unrelated to the ones under test may fail, but I expect they're
+ * covered by other unit tests; I just print out something about failure to
+ * help trace what's going on.
+ */
+static void test_NonExistentPath(void)
+{
+ static const char userShellFolders[] =
+ "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders";
+ char originalPath[MAX_PATH], modifiedPath[MAX_PATH];
+ HKEY key;
+
+ if (!pSHGetFolderPathA) return;
+ if (!pSHGetFolderLocation) return;
+ if (!pSHGetSpecialFolderPathA) return;
+ if (!pSHGetSpecialFolderLocation) return;
+ if (!pSHFileOperationA) return;
+ if (shellVersion.dwMajorVersion < 5) return;
+
+ if (!RegOpenKeyExA(HKEY_CURRENT_USER, userShellFolders, 0, KEY_ALL_ACCESS,
+ &key))
+ {
+ DWORD len, type;
+
+ len = sizeof(originalPath);
+ if (!RegQueryValueExA(key, "Favorites", NULL, &type,
+ (LPBYTE)&originalPath, &len))
+ {
+ size_t len = strlen(originalPath);
+
+ memcpy(modifiedPath, originalPath, len);
+ modifiedPath[len++] = '2';
+ modifiedPath[len++] = '\0';
+ trace("Changing CSIDL_FAVORITES to %s\n", modifiedPath);
+ if (!RegSetValueExA(key, "Favorites", 0, type,
+ (LPBYTE)modifiedPath, len))
+ {
+ char buffer[MAX_PATH+20];
+ STARTUPINFOA startup;
+ PROCESS_INFORMATION info;
+
+ sprintf(buffer, "%s tests/shellpath.c 1", selfname);
+ memset(&startup, 0, sizeof(startup));
+ startup.cb = sizeof(startup);
+ startup.dwFlags = STARTF_USESHOWWINDOW;
+ startup.wShowWindow = SW_SHOWNORMAL;
+ CreateProcessA(NULL, buffer, NULL, NULL, FALSE, 0L, NULL, NULL,
+ &startup, &info);
+ winetest_wait_child_process( info.hProcess );
+
+ /* restore original values: */
+ trace("Restoring CSIDL_FAVORITES to %s\n", originalPath);
+ RegSetValueExA(key, "Favorites", 0, type, (LPBYTE) originalPath,
+ strlen(originalPath) + 1);
+ RegFlushKey(key);
+
+ sprintf(buffer, "%s tests/shellpath.c 2", selfname);
+ memset(&startup, 0, sizeof(startup));
+ startup.cb = sizeof(startup);
+ startup.dwFlags = STARTF_USESHOWWINDOW;
+ startup.wShowWindow = SW_SHOWNORMAL;
+ CreateProcessA(NULL, buffer, NULL, NULL, FALSE, 0L, NULL, NULL,
+ &startup, &info);
+ ok(WaitForSingleObject(info.hProcess, 30000) == WAIT_OBJECT_0,
+ "child process termination\n");
+ }
+ }
+ else skip("RegQueryValueExA(key, Favorites, ...) failed\n");
+ if (key)
+ RegCloseKey(key);
+ }
+ else skip("RegOpenKeyExA(HKEY_CURRENT_USER, %s, ...) failed\n", userShellFolders);
+}
+
+static void test_SHGetFolderPathEx(void)
+{
+ HRESULT hr;
+ WCHAR buffer[MAX_PATH], *path;
+ DWORD len;
+
+ if (!pSHGetKnownFolderPath || !pSHGetFolderPathEx)
+ {
+ win_skip("SHGetKnownFolderPath or SHGetFolderPathEx not available\n");
+ return;
+ }
+
+if (0) { /* crashes */
+ hr = pSHGetKnownFolderPath(&FOLDERID_Desktop, 0, NULL, NULL);
+ ok(hr == E_INVALIDARG, "expected E_INVALIDARG, got 0x%08x\n", hr);
+}
+ /* non-existent folder id */
+ path = (void *)0xdeadbeef;
+ hr = pSHGetKnownFolderPath(&IID_IOleObject, 0, NULL, &path);
+ ok(hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), "got 0x%08x\n", hr);
+ ok(path == NULL, "got %p\n", path);
+
+ path = NULL;
+ hr = pSHGetKnownFolderPath(&FOLDERID_Desktop, KF_FLAG_DEFAULT_PATH, NULL, &path);
+ ok(hr == S_OK, "expected S_OK, got 0x%08x\n", hr);
+ ok(path != NULL, "expected path != NULL\n");
+ CoTaskMemFree(path);
+
+ path = NULL;
+ hr = pSHGetKnownFolderPath(&FOLDERID_Desktop, 0, NULL, &path);
+ ok(hr == S_OK, "expected S_OK, got 0x%08x\n", hr);
+ ok(path != NULL, "expected path != NULL\n");
+
+ hr = pSHGetFolderPathEx(&FOLDERID_Desktop, 0, NULL, buffer, MAX_PATH);
+ ok(hr == S_OK, "expected S_OK, got 0x%08x\n", hr);
+ ok(!lstrcmpiW(path, buffer), "expected equal paths\n");
+ len = lstrlenW(buffer);
+ CoTaskMemFree(path);
+
+ hr = pSHGetFolderPathEx(&FOLDERID_Desktop, 0, NULL, buffer, 0);
+ ok(hr == E_INVALIDARG, "expected E_INVALIDARG, got 0x%08x\n", hr);
+
+if (0) { /* crashes */
+ hr = pSHGetFolderPathEx(&FOLDERID_Desktop, 0, NULL, NULL, len + 1);
+ ok(hr == E_INVALIDARG, "expected E_INVALIDARG, got 0x%08x\n", hr);
+
+ hr = pSHGetFolderPathEx(NULL, 0, NULL, buffer, MAX_PATH);
+ ok(hr == E_INVALIDARG, "expected E_INVALIDARG, got 0x%08x\n", hr);
+}
+ hr = pSHGetFolderPathEx(&FOLDERID_Desktop, 0, NULL, buffer, len);
+ ok(hr == E_NOT_SUFFICIENT_BUFFER, "expected E_NOT_SUFFICIENT_BUFFER, got 0x%08x\n", hr);
+
+ hr = pSHGetFolderPathEx(&FOLDERID_Desktop, 0, NULL, buffer, len + 1);
+ ok(hr == S_OK, "expected S_OK, got 0x%08x\n", hr);
+}
+
static BOOL is_in_strarray(const WCHAR *needle, const char *hay)
{
WCHAR wstr[MAX_PATH];
--
2.16.4
1
0