kernel32: Make the locale test pass without errors under XP SP2

Dmitry Timoshkov dmitry at codeweavers.com
Sun Dec 31 07:11:50 CST 2006


Hello,

this patch
- removes usage of LOCALE_NOUSEROVERRIDE in some places that results in
  errors under XP SP2
- removes tests for last error being set to 0, and replaces that by testing
  the actual API return value instead
- sets last error value to 0xdeadbeef if we are going to test last error
  being set by the API

Changelog:
    kernel32: Make the locale test pass without errors under XP SP2.

--- a/dlls/kernel32/tests/locale.c
+++ b/dlls/kernel32/tests/locale.c
@@ -116,8 +116,9 @@ static void InitFunctionPointers(void)
 #define EXPECT_INVALIDFLAGS ok(GetLastError() == ERROR_INVALID_FLAGS || \
   GetLastError() == ERROR_INVALID_PARAMETER, \
  "Expected ERROR_INVALID_FLAGS, got %d\n", GetLastError())
-#define EXPECT_VALID    ok(GetLastError() == 0, \
+#define EXPECT_LASTERROR_0 ok(GetLastError() == 0, \
  "Expected GetLastError() == 0, got %d\n", GetLastError())
+#define EXPECT_VALID ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError())
 
 #define STRINGSA(x,y) strcpy(input, x); strcpy(Expected, y); SetLastError(0); buffer[0] = '\0'
 #define EXPECT_LENA EXPECT_LEN((int)strlen(Expected)+1)
@@ -169,6 +170,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));
   EXPECT_INVALID; EXPECT_LEN(0); EXPECT_EQA;
 
@@ -177,15 +179,18 @@ static void test_GetTimeFormatA(void)
   curtime.wSecond = 13;
   curtime.wMilliseconds = 22;
   STRINGSA("tt HH':'mm'@'ss", "AM 08:56 at 13"); /* Valid time */
+  SetLastError(0xdeadbeef);
   ret = GetTimeFormatA(lcid, NUO|TIME_FORCE24HOURFORMAT, &curtime, input, buffer, COUNTOF(buffer));
+  ret = GetTimeFormatA(lcid, TIME_FORCE24HOURFORMAT, &curtime, input, buffer, COUNTOF(buffer));
   EXPECT_VALID; EXPECT_LENA; EXPECT_EQA;
 
   STRINGSA("tt HH':'mm'@'ss", "A"); /* Insufficent buffer */
-  ret = GetTimeFormatA(lcid, NUO|TIME_FORCE24HOURFORMAT, &curtime, input, buffer, 2);
+  SetLastError(0xdeadbeef); 
+  ret = GetTimeFormatA(lcid, TIME_FORCE24HOURFORMAT, &curtime, input, buffer, 2);
   EXPECT_BUFFER; EXPECT_LEN(0); EXPECT_EQA;
 
   STRINGSA("tt HH':'mm'@'ss", "AM 08:56 at 13"); /* Calculate length only */
-  ret = GetTimeFormatA(lcid, NUO|TIME_FORCE24HOURFORMAT, &curtime, input, NULL, 0);
+  ret = GetTimeFormatA(lcid, TIME_FORCE24HOURFORMAT, &curtime, input, NULL, 0);
   EXPECT_VALID; EXPECT_LENA;
 
   STRINGSA("", "8 AM"); /* TIME_NOMINUTESORSECONDS, default format */
@@ -202,11 +207,11 @@ static void test_GetTimeFormatA(void)
 
   STRINGSA("h:m:s tt", "8:56 AM"); /* TIME_NOSECONDS */
   strcpy(Expected, "8:56 AM");
-  ret = GetTimeFormatA(lcid, NUO|TIME_NOSECONDS, &curtime, input, buffer, COUNTOF(buffer));
+  ret = GetTimeFormatA(lcid, TIME_NOSECONDS, &curtime, input, buffer, COUNTOF(buffer));
   EXPECT_VALID; EXPECT_LENA; EXPECT_EQA;
 
   STRINGSA("h.@:m.@:s.@:tt", "8.@:56AM"); /* Multiple delimiters */
-  ret = GetTimeFormatA(lcid, NUO|TIME_NOSECONDS, &curtime, input, buffer, COUNTOF(buffer));
+  ret = GetTimeFormatA(lcid, TIME_NOSECONDS, &curtime, input, buffer, COUNTOF(buffer));
   EXPECT_VALID; EXPECT_LENA; EXPECT_EQA;
 
   STRINGSA("s1s2s3", ""); /* Duplicate tokens */
@@ -214,12 +219,12 @@ static void test_GetTimeFormatA(void)
   EXPECT_VALID; EXPECT_LENA; EXPECT_EQA;
 
   STRINGSA("t/tt", "A/AM"); /* AM time marker */
-  ret = GetTimeFormatA(lcid, NUO, &curtime, input, buffer, COUNTOF(buffer));
+  ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, COUNTOF(buffer));
   EXPECT_VALID; EXPECT_LENA; EXPECT_EQA;
 
   curtime.wHour = 13;
   STRINGSA("t/tt", "P/PM"); /* PM time marker */
-  ret = GetTimeFormatA(lcid, NUO, &curtime, input, buffer, COUNTOF(buffer));
+  ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, COUNTOF(buffer));
   EXPECT_VALID; EXPECT_LENA; EXPECT_EQA;
 
   STRINGSA("h1t2tt3m", "156"); /* TIME_NOTIMEMARKER: removes text around time marker token */
@@ -227,7 +232,7 @@ static void test_GetTimeFormatA(void)
   EXPECT_VALID; EXPECT_LENA; EXPECT_EQA;
 
   STRINGSA("h:m:s tt", "13:56:13 PM"); /* TIME_FORCE24HOURFORMAT */
-  ret = GetTimeFormatA(lcid, NUO|TIME_FORCE24HOURFORMAT, &curtime, input, buffer, COUNTOF(buffer));
+  ret = GetTimeFormatA(lcid, TIME_FORCE24HOURFORMAT, &curtime, input, buffer, COUNTOF(buffer));
   EXPECT_VALID; EXPECT_LENA; EXPECT_EQA;
 
   STRINGSA("h:m:s", "13:56:13"); /* TIME_FORCE24HOURFORMAT doesn't add time marker */
@@ -238,7 +243,7 @@ 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, NUO, &curtime, input, buffer, COUNTOF(buffer));
+  ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, COUNTOF(buffer));
   EXPECT_VALID; EXPECT_LENA; EXPECT_EQA;
 
   curtime.wHour = 0;
@@ -247,7 +252,7 @@ static void test_GetTimeFormatA(void)
   EXPECT_VALID; 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, NUO, &curtime, input, buffer, COUNTOF(buffer));
+  ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, COUNTOF(buffer));
   EXPECT_VALID; EXPECT_LENA; EXPECT_EQA;
 
   /* try to convert formatting strings with more than two letters
@@ -272,7 +277,7 @@ 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, NUO, &curtime, input, buffer, COUNTOF(buffer));
+  ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, COUNTOF(buffer));
   EXPECT_VALID; EXPECT_LENA; EXPECT_EQA;
 
   STRINGSA("'''", "'"); /* invalid quoted string */
@@ -303,6 +308,7 @@ static void test_GetTimeFormatA(void)
 
   curtime.wHour = 25;
   STRINGSA("'123'tt", ""); /* Invalid time */
+  SetLastError(0xdeadbeef); 
   ret = GetTimeFormatA(lcid, 0, &curtime, input, buffer, COUNTOF(buffer));
   EXPECT_INVALID; EXPECT_LEN(0); EXPECT_EQA;
 
@@ -322,6 +328,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));
   EXPECT_INVALID; EXPECT_LEN(0); EXPECT_EQA;
 
@@ -347,6 +354,7 @@ static void test_GetDateFormatA(void)
   EXPECT_VALID; EXPECT_LEN(16); EXPECT_EQA;
 
   STRINGSA("ddd',' MMM dd ''''yy",""); /* Buffer too small */
+  SetLastError(0xdeadbeef); 
   ret = GetDateFormatA(lcid, 0, &curtime, input, buffer, 2);
   EXPECT_BUFFER; EXPECT_LEN(0); EXPECT_EQA;
 
@@ -389,6 +397,7 @@ static void test_GetDateFormatW(void)
   EXPECT_FLAGS; EXPECT_LEN(0); EXPECT_EQW;
 
   STRINGSW("",""); /* NULL buffer, len > 0 */
+  SetLastError(0xdeadbeef); 
   ret = GetDateFormatW (lcid, 0, NULL, input, NULL, COUNTOF(buffer));
   EXPECT_INVALID; EXPECT_LEN(0); EXPECT_EQW;
 
@@ -428,38 +437,47 @@ static void test_GetCurrencyFormatA(void
   memset(&format, 0, sizeof(format));
 
   STRINGSA("23",""); /* NULL output, length > 0 --> Error */
+  SetLastError(0xdeadbeef); 
   ret = GetCurrencyFormatA(lcid, 0, input, NULL, NULL, COUNTOF(buffer));
   EXPECT_INVALID; EXPECT_LEN(0); EXPECT_EQA;
 
   STRINGSA("23,53",""); /* Invalid character --> Error */
+  SetLastError(0xdeadbeef); 
   ret = GetCurrencyFormatA(lcid, 0, input, NULL, buffer, COUNTOF(buffer));
   EXPECT_INVALID; EXPECT_LEN(0); EXPECT_EQA;
 
   STRINGSA("--",""); /* Double '-' --> Error */
+  SetLastError(0xdeadbeef); 
   ret = GetCurrencyFormatA(lcid, 0, input, NULL, buffer, COUNTOF(buffer));
   EXPECT_INVALID; EXPECT_LEN(0); EXPECT_EQA;
 
   STRINGSA("0-",""); /* Trailing '-' --> Error */
+  SetLastError(0xdeadbeef); 
   ret = GetCurrencyFormatA(lcid, 0, input, NULL, buffer, COUNTOF(buffer));
   EXPECT_INVALID; EXPECT_LEN(0); EXPECT_EQA;
 
   STRINGSA("0..",""); /* Double '.' --> Error */
+  SetLastError(0xdeadbeef); 
   ret = GetCurrencyFormatA(lcid, 0, input, NULL, buffer, COUNTOF(buffer));
   EXPECT_INVALID; EXPECT_LEN(0); EXPECT_EQA;
 
   STRINGSA(" 0.1",""); /* Leading space --> Error */
+  SetLastError(0xdeadbeef); 
   ret = GetCurrencyFormatA(lcid, 0, input, NULL, buffer, COUNTOF(buffer));
   EXPECT_INVALID; EXPECT_LEN(0); EXPECT_EQA;
 
   STRINGSA("1234","$"); /* Length too small --> Write up to length chars */
+  SetLastError(0xdeadbeef); 
   ret = GetCurrencyFormatA(lcid, NUO, input, NULL, buffer, 2);
   EXPECT_BUFFER; EXPECT_LEN(0); EXPECT_EQA;
 
   STRINGSA("2353",""); /* Format and flags given --> Error */
+  SetLastError(0xdeadbeef); 
   ret = GetCurrencyFormatA(lcid, NUO, input, &format, buffer, COUNTOF(buffer));
   EXPECT_INVALIDFLAGS; EXPECT_LEN(0); EXPECT_EQA;
 
   STRINGSA("2353",""); /* Invalid format --> Error */
+  SetLastError(0xdeadbeef); 
   ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
   EXPECT_INVALID; EXPECT_LEN(0); EXPECT_EQA;
 
@@ -625,38 +643,47 @@ static void test_GetNumberFormatA(void)
   memset(&format, 0, sizeof(format));
 
   STRINGSA("23",""); /* NULL output, length > 0 --> Error */
+  SetLastError(0xdeadbeef); 
   ret = GetNumberFormatA(lcid, 0, input, NULL, NULL, COUNTOF(buffer));
   EXPECT_INVALID; EXPECT_LEN(0); EXPECT_EQA;
 
   STRINGSA("23,53",""); /* Invalid character --> Error */
+  SetLastError(0xdeadbeef); 
   ret = GetNumberFormatA(lcid, 0, input, NULL, buffer, COUNTOF(buffer));
   EXPECT_INVALID; EXPECT_LEN(0); EXPECT_EQA;
 
   STRINGSA("--",""); /* Double '-' --> Error */
+  SetLastError(0xdeadbeef); 
   ret = GetNumberFormatA(lcid, 0, input, NULL, buffer, COUNTOF(buffer));
   EXPECT_INVALID; EXPECT_LEN(0); EXPECT_EQA;
 
   STRINGSA("0-",""); /* Trailing '-' --> Error */
+  SetLastError(0xdeadbeef); 
   ret = GetNumberFormatA(lcid, 0, input, NULL, buffer, COUNTOF(buffer));
   EXPECT_INVALID; EXPECT_LEN(0); EXPECT_EQA;
 
   STRINGSA("0..",""); /* Double '.' --> Error */
+  SetLastError(0xdeadbeef); 
   ret = GetNumberFormatA(lcid, 0, input, NULL, buffer, COUNTOF(buffer));
   EXPECT_INVALID; EXPECT_LEN(0); EXPECT_EQA;
 
   STRINGSA(" 0.1",""); /* Leading space --> Error */
+  SetLastError(0xdeadbeef); 
   ret = GetNumberFormatA(lcid, 0, input, NULL, buffer, COUNTOF(buffer));
   EXPECT_INVALID; EXPECT_LEN(0); EXPECT_EQA;
 
   STRINGSA("1234","1"); /* Length too small --> Write up to length chars */
+  SetLastError(0xdeadbeef); 
   ret = GetNumberFormatA(lcid, NUO, input, NULL, buffer, 2);
   EXPECT_BUFFER; EXPECT_LEN(0); EXPECT_EQA;
 
   STRINGSA("2353",""); /* Format and flags given --> Error */
+  SetLastError(0xdeadbeef); 
   ret = GetNumberFormatA(lcid, NUO, input, &format, buffer, COUNTOF(buffer));
   EXPECT_INVALIDFLAGS; EXPECT_LEN(0); EXPECT_EQA;
 
   STRINGSA("2353",""); /* Invalid format --> Error */
+  SetLastError(0xdeadbeef); 
   ret = GetNumberFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));
   EXPECT_INVALID; EXPECT_LEN(0); EXPECT_EQA;
 
@@ -1973,7 +2000,7 @@ static void test_EnumSystemLanguageGroup
   /* No flags - defaults to LGRPID_INSTALLED */
   SetLastError(0);
   pEnumSystemLanguageGroupsA(langgrp_procA, 0, 1);
-  EXPECT_VALID;
+  EXPECT_LASTERROR_0;
 
   pEnumSystemLanguageGroupsA(langgrp_procA, LGRPID_INSTALLED, 0);
   pEnumSystemLanguageGroupsA(langgrp_procA, LGRPID_SUPPORTED, 0);





More information about the wine-patches mailing list