Skip to content
Snippets Groups Projects
Commit f87d30ed authored by Mehmet Yasar's avatar Mehmet Yasar Committed by Alexandre Julliard
Browse files

Added test for locale functions.

parent 6a2ca011
No related branches found
No related tags found
No related merge requests found
......@@ -43,6 +43,7 @@ CTESTS = \
tests/alloc.c \
tests/directory.c \
tests/file.c \
tests/locale.c \
tests/path.c \
tests/process.c \
tests/thread.c
......
/*
* Very basic unit test for locale functions
* Test run on win2K (French)
*
* Copyright (c) 2002 YASAR Mehmet
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "wine/test.h"
#include "winbase.h"
#include "winerror.h"
#include "winnls.h"
#define eq(received, expected, label, type) \
ok((received) == (expected), "%s: got " type " instead of " type, (label),(received),(expected))
#define BUFFER_SIZE 50
// Buffer used by callback function
char GlobalBuffer[BUFFER_SIZE];
// TODO :
// Unicode versions
// EnumTimeFormatsA
// EnumDateFormatsA
// LCMapStringA
// GetUserDefaultLangID
// ...
void TestGetLocaleInfoA()
{
int ret, cmp;
LCID lcid;
char buffer[BUFFER_SIZE], Expected[BUFFER_SIZE];
strcpy(Expected, "Monday");
lcid = MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT );
ok (lcid == 0x409, "wrong LCID calculated");
strcpy(Expected, "xxxxx");
memset( buffer, 'x', sizeof (buffer)/sizeof(buffer[0]) );
ret = GetLocaleInfoA(lcid, LOCALE_SDAYNAME1, buffer, 0);
cmp = strncmp (buffer, Expected, strlen(Expected));
ok (cmp == 0, "GetLocaleInfoA got %s instead of %s", buffer, Expected);
eq (ret, strlen("Monday") + 1, "GetLocaleInfoA with len=0", "%d");
strcpy(Expected, "Monxx");
memset( buffer, 'x', sizeof (buffer)/sizeof(buffer[0]) );
ret = GetLocaleInfoA(lcid, LOCALE_SDAYNAME1, buffer, 3);
cmp = strncmp (buffer, Expected, strlen(Expected));
ok (cmp == 0, "GetLocaleInfoA got %s instead of %s", buffer, Expected);
eq (ret, 0, "GetLocaleInfoA with len = 3", "%d");
strcpy(Expected, "Monday");
memset( buffer, 'x', sizeof (buffer)/sizeof(buffer[0]) );
ret = GetLocaleInfoA(lcid, LOCALE_SDAYNAME1, buffer, 10);
/* We check also presence of '\0' */
cmp = strncmp (buffer, Expected, strlen(Expected) + 1);
ok (cmp == 0, "GetLocaleInfoA got %s instead of %s", buffer, Expected);
eq (ret, strlen(Expected)+1, "GetLocaleInfoA with len = 10", "%d" );
/* We check the whole buffer with strncmp */
memset( Expected, 'x', sizeof (Expected)/sizeof(Expected[0]) );
strcpy(Expected, "Monday");
memset( buffer, 'x', sizeof (buffer)/sizeof(buffer[0]) );
ret = GetLocaleInfoA(lcid, LOCALE_SDAYNAME1, buffer, BUFFER_SIZE);
cmp = strncmp (buffer, Expected, BUFFER_SIZE);
ok (cmp == 0, "GetLocaleInfoA got %s instead of %s", buffer, Expected);
eq (ret, strlen(Expected)+1, "GetLocaleInfoA with len = 10", "%d" );
}
void TestGetTimeFormatA()
{
int ret, error, cmp;
SYSTEMTIME curtime;
char buffer[BUFFER_SIZE], format[BUFFER_SIZE], Expected[BUFFER_SIZE];
LCID lcid;
lcid = MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT );
strcpy(format, "tt HH':'mm'@'ss");
/* fill curtime with dummy data */
memset(&curtime, 2, sizeof(SYSTEMTIME));
ret = GetTimeFormatA(lcid, TIME_FORCE24HOURFORMAT, &curtime, format, buffer, sizeof(buffer));
error = GetLastError ();
ok (ret == 0, "GetTimeFormat should fail on dummy data");
eq (error, ERROR_INVALID_PARAMETER, "GetTimeFormat GetLastError()", "%d");
strcpy(Expected, "AM 08:56@13");
curtime.wHour = 8; curtime.wMinute = 56;
curtime.wSecond = 13; curtime.wMilliseconds = 22;
ret = GetTimeFormatA(lcid, TIME_FORCE24HOURFORMAT, &curtime, format, buffer, sizeof(buffer));
cmp = strncmp (Expected, buffer, strlen(Expected)+1);
ok (cmp == 0, "GetTimeFormat got %s instead of %s", buffer, Expected);
eq (ret, strlen(Expected)+1, "GetTimeFormat", "%d");
/* test with too small buffers */
memset(buffer, 'x', sizeof (buffer)/sizeof(buffer[0]) );
strcpy(Expected, "xxxx");
ret = GetTimeFormatA(lcid, TIME_FORCE24HOURFORMAT, &curtime, format, buffer, 0);
cmp = strncmp (Expected, buffer, 4);
ok (cmp == 0, "GetTimeFormat with len=0 got %s instead of %s", buffer, Expected);
eq (ret, 12, "GetTimeFormat with len=0", "%d");
memset(buffer, 'x', sizeof (buffer)/sizeof(buffer[0]) );
strcpy(Expected, "AMxx");
ret = GetTimeFormatA(lcid, TIME_FORCE24HOURFORMAT, &curtime, format, buffer, 2);
cmp = strncmp (Expected, buffer, 4);
ok (cmp == 0, "GetTimeFormat with len=2 got %s instead of %s", buffer, Expected);
eq (ret, 0, "GetTimeFormat with len=0", "%d");
}
void TestGetDateFormatA()
{
int ret, error, cmp;
SYSTEMTIME curtime;
char buffer[BUFFER_SIZE], format[BUFFER_SIZE], Expected[BUFFER_SIZE];
LCID lcid;
lcid = MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT );
strcpy(format, "ddd',' MMM dd yy");
/* fill curtime with dummy data */
memset(&curtime, 2, sizeof(SYSTEMTIME));
memset(buffer, 'x', sizeof (buffer)/sizeof(buffer[0]) );
ret = GetDateFormatA(lcid, 0, &curtime, format, buffer, sizeof(buffer));
error = GetLastError ();
ok (ret== 0, "GetDateFormat should fail on dummy data");
eq (error, ERROR_INVALID_PARAMETER, "GetDateFormat", "%d");
strcpy(Expected, "Sat, May 04 02");
memset(buffer, 'x', sizeof (buffer)/sizeof(buffer[0]) );
curtime.wYear = 2002;
curtime.wMonth = 5;
curtime.wDay = 4;
curtime.wDayOfWeek = 3;
ret = GetDateFormatA(lcid, 0, &curtime, format, buffer, sizeof(buffer));
cmp = strncmp (Expected, buffer, strlen(Expected)+1);
ok (cmp == 0, "GetDateFormat got %s instead of %s", buffer, Expected);
eq (ret, strlen(Expected)+1, "GetDateFormat", "%d");
/* test format with "'" */
memset(buffer, 'x', sizeof (buffer)/sizeof(buffer[0]) );
strcpy(format, "ddd',' MMM dd ''''yy");
strcpy(Expected, "Sat, May 04 '02");
ret = GetDateFormatA(lcid, 0, &curtime, format, buffer, sizeof(buffer));
cmp = strncmp (Expected, buffer, strlen(Expected)+1);
ok (cmp == 0, "GetDateFormat got %s instead of %s", buffer, Expected);
eq (ret, (strlen(Expected)+1), "GetDateFormat", "%d");
/* test with too small buffers */
memset(buffer, 'x', sizeof (buffer)/sizeof(buffer[0]) );
strcpy(Expected, "xxxx");
ret = GetDateFormatA(lcid, 0, &curtime, format, buffer, 0);
cmp = strncmp (Expected, buffer, 4);
ok (cmp == 0, "GetDateFormat got %s instead of %s", buffer, Expected);
eq (ret, 16, "GetDateFormat with len=0", "%d");
memset(buffer, 'x', sizeof (buffer)/sizeof(buffer[0]) );
strcpy(Expected, "Saxx");
ret = GetDateFormatA(lcid, 0, &curtime, format, buffer, 2);
cmp = strncmp (Expected, buffer, 4);
ok (cmp == 0, "GetDateFormat got %s instead of %s", buffer, Expected);
eq (ret, 0, "GetDateFormat with len=2", "%d");
}
void TestGetCurrencyFormat()
{
int ret, error, cmp;
char buffer[BUFFER_SIZE], Expected[BUFFER_SIZE], format[BUFFER_SIZE];
LCID lcid;
lcid = MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT );
// lcid = MAKELCID(MAKELANGID(LANG_FRENCH, SUBLANG_DEFAULT), SORT_DEFAULT );
memset( buffer, 'x', sizeof (buffer)/sizeof(buffer[0]) );
ret = GetCurrencyFormatA(lcid, 0, "23,65", NULL, buffer, sizeof(buffer));
error = GetLastError ();
cmp = strncmp ("xxxx", buffer, 4);
ok (cmp == 0, "GetCurrencyFormat should fail with ','");
eq (ret, 0, "GetCurrencyFormat with ','", "%d");
eq (error, ERROR_INVALID_PARAMETER, "GetCurrencyFormat", "%d");
memset(Expected, 'x', sizeof (Expected)/sizeof(Expected[0]) );
strcpy (Expected, "$23.53");
strcpy (format, "23.53");
memset( buffer, 'x', sizeof (buffer)/sizeof(buffer[0]) );
ret = GetCurrencyFormatA(lcid, 0, format, NULL, buffer, 0);
cmp = strncmp ("xxx", buffer, 3);
ok (cmp == 0, "GetCurrencyFormat with 0 buffer size");
eq (ret, strlen(Expected)+1, "GetCurrencyFormat with len=0", "%d");
memset( buffer, 'x', sizeof (buffer)/sizeof(buffer[0]) );
ret = GetCurrencyFormatA(lcid, 0, format, NULL, buffer, 2);
cmp = strncmp ("$2xx", buffer, 4);
ok (cmp == 0, "GetCurrencyFormat got %s instead of %s", buffer, Expected);
eq (ret, 0, "GetCurrencyFormat with len=2", "%d");
/* We check the whole buffer with strncmp */
memset( buffer, 'x', sizeof (buffer)/sizeof(buffer[0]) );
ret = GetCurrencyFormatA(lcid, 0, format, NULL, buffer, sizeof(buffer));
cmp = strncmp (Expected, buffer, BUFFER_SIZE);
ok (cmp == 0, "GetCurrencyFormat got %s instead of %s", buffer, Expected);
eq (ret, strlen(Expected)+1, "GetCurrencyFormat","%d");
}
void TestGetNumberFormat()
{
int ret, error, cmp;
char buffer[BUFFER_SIZE], Expected[BUFFER_SIZE], input[BUFFER_SIZE];
LCID lcid;
lcid = MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT );
memset( buffer, 'x', sizeof (buffer)/sizeof(buffer[0]) );
ret = GetNumberFormatA(lcid, 0, "23,65", NULL, buffer, sizeof(buffer));
error = GetLastError ();
cmp = strncmp ("xxx", buffer, 3);
ok (cmp == 0, "GetCurrencyFormat");
ok (ret == 0, "GetNumberFormat should return 0");
eq (error, ERROR_INVALID_PARAMETER, "GetNumberFormat", "%d");
strcpy(input, "2353");
strcpy(Expected, "2,353.00");
memset( buffer, 'x', sizeof (buffer)/sizeof(buffer[0]) );
ret = GetNumberFormatA(lcid, 0, input, NULL, buffer, 0);
cmp = strncmp ("xxx", buffer, 3);
ok (cmp == 0, "GetNumberFormat with len=0 got %s instead of %s", buffer, "xxx");
eq (ret, strlen(Expected)+1, "GetNumberFormat", "%d");
strcpy(Expected, "2,xx");
memset( buffer, 'x', sizeof (buffer)/sizeof(buffer[0]) );
ret = GetNumberFormatA(lcid, 0, input, NULL, buffer, 2);
cmp = strncmp (Expected, buffer, 4);
ok (cmp == 0, "GetNumberFormat with len=2 got %s instead of %s", buffer, Expected);
eq (ret, 0, "GetNumberFormat", "%d");
/* We check the whole buffer with strncmp */
memset(Expected, 'x', sizeof (Expected)/sizeof(Expected[0]) );
strcpy(Expected, "2,353.00");
memset( buffer, 'x', sizeof (buffer)/sizeof(buffer[0]) );
ret = GetNumberFormatA(lcid, 0, input, NULL, buffer, sizeof(buffer));
cmp = strncmp (Expected, buffer, BUFFER_SIZE);
ok (cmp == 0, "GetNumberFormat got %s instead of %s", buffer, Expected);
eq (ret, strlen(Expected)+1, "GetNumberFormat", "%d");
}
/* Callback function used by TestEnumTimeFormats */
BOOL CALLBACK EnumTimeFormatsProc(char * lpTimeFormatString)
{
trace("%s\n", lpTimeFormatString);
strcpy(GlobalBuffer, lpTimeFormatString);
// return TRUE;
return FALSE;
}
void TestEnumTimeFormats()
{
int ret;
LCID lcid;
char Expected[BUFFER_SIZE];
lcid = MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT );
memset( GlobalBuffer, 'x', sizeof (GlobalBuffer)/sizeof(GlobalBuffer[0]) );
strcpy(Expected, "h:mm:ss tt");
ret = EnumTimeFormatsA(EnumTimeFormatsProc, lcid, 0);
eq (ret, 1, "EnumTimeFormats should return 1", "%d");
ok (strncmp (GlobalBuffer, Expected, strlen(Expected)) == 0,
"EnumTimeFormats failed");
ok (ret == 1, "EnumTimeFormats should return 1");
}
void TestCompareStringA()
{
int ret;
LCID lcid;
char buffer1[BUFFER_SIZE], buffer2[BUFFER_SIZE];
lcid = MAKELCID(MAKELANGID(LANG_FRENCH, SUBLANG_DEFAULT), SORT_DEFAULT );
strcpy(buffer1, "Salut"); strcpy(buffer2, "Salute");
ret = CompareStringA(lcid, NORM_IGNORECASE, buffer1, BUFFER_SIZE, buffer2, BUFFER_SIZE);
ok (ret== 1, "CompareStringA (st1=%s str2=%s) expected result=1", buffer1, buffer2);
strcpy(buffer1, "Salut"); strcpy(buffer2, "saLuT");
ret = CompareStringA(lcid, NORM_IGNORECASE, buffer1, BUFFER_SIZE, buffer2, BUFFER_SIZE);
ok (ret== 2, "CompareStringA (st1=%s str2=%s) expected result=2", buffer1, buffer2);
strcpy(buffer1, "Salut"); strcpy(buffer2, "hola");
ret = CompareStringA(lcid, NORM_IGNORECASE, buffer1, BUFFER_SIZE, buffer2, BUFFER_SIZE);
ok (ret== 3, "CompareStringA (st1=%s str2=%s) expected result=3", buffer1, buffer2);
strcpy(buffer1, "hh"); strcpy(buffer2, "hh");
ret = CompareStringA(lcid, NORM_IGNORECASE, buffer1, BUFFER_SIZE, buffer2, BUFFER_SIZE);
ok (ret== 1, "CompareStringA (st1=%s str2=%s) expected result=1", buffer1, buffer2);
lcid = MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT );
strcpy(buffer1, "hh"); strcpy(buffer2, "hh");
ret = CompareStringA(lcid, NORM_IGNORECASE, buffer1, BUFFER_SIZE, buffer2, BUFFER_SIZE);
ok (ret== 1, "CompareStringA (st1=%s str2=%s) expected result=1", buffer1, buffer2);
ret = CompareStringA(lcid, NORM_IGNORECASE, buffer1, BUFFER_SIZE, buffer2, 0);
ok (ret== 3, "CompareStringA (st1=%s str2=%s) expected result=3", buffer1, buffer2);
}
START_TEST(locale)
{
// TestEnumTimeFormats();
TestGetLocaleInfoA();
TestGetTimeFormatA();
TestGetDateFormatA();
TestGetNumberFormat();
TestGetCurrencyFormat();
TestCompareStringA();
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment