ReactOS  0.4.14-dev-55-g2da92ac
varformat.c File Reference
#include <stdarg.h>
#include <stdio.h>
#include <math.h>
#include <float.h>
#include "windef.h"
#include "winbase.h"
#include "winsock2.h"
#include "wine/test.h"
#include "winuser.h"
#include "wingdi.h"
#include "winnls.h"
#include "winerror.h"
#include "winnt.h"
#include "wtypes.h"
#include "oleauto.h"
Include dependency graph for varformat.c:

Go to the source code of this file.

Classes

struct  tagFMTRES
 
struct  tagFMTDATERES
 

Macros

#define CHECKPTR(func)
 
#define FMT_NUMBER(vt, val)
 
#define SIGNED_VTBITS   (VTBIT_I1|VTBIT_I2|VTBIT_I4|VTBIT_I8|VTBIT_R4|VTBIT_R8)
 
#define VARFMT(vt, v, val, fmt, ret, str)
 
#define VNUMFMT(vt, v)
 
#define VARWDN(iWeekday, fAbbrev, iFirstDay, dwFlags, ret, buff, out, freeOut)
 
#define VARWDN_F(iWeekday, fAbbrev, iFirstDay, dwFlags, ret)   VARWDN(iWeekday, fAbbrev, iFirstDay, dwFlags, ret, buff, out, 1)
 
#define VARWDN_O(iWeekday, fAbbrev, iFirstDay, dwFlags)   VARWDN(iWeekday, fAbbrev, iFirstDay, dwFlags, S_OK, buff, out, 0)
 

Typedefs

typedef struct tagFMTRES FMTRES
 
typedef struct tagFMTDATERES FMTDATERES
 

Functions

static HRESULT (WINAPI *pVarBstrCmp)(BSTR
 
static int strcmpW (const WCHAR *str1, const WCHAR *str2)
 
static void test_VarFormatNumber (void)
 
static void test_VarFormat (void)
 
static void test_VarWeekdayName (void)
 
static void test_VarFormatFromTokens (void)
 
static void test_GetAltMonthNames (void)
 
 START_TEST (varformat)
 

Variables

static HMODULE hOleaut32
 
static BSTR
 
static LCID
 
static ULONG
 
static int
 
static BSTR *static LPOLESTR
 
static BSTR *static BSTR *static BSTR *static BOOL has_i8
 
static const charszVarFmtFail = "VT %d|0x%04x Format %s: expected 0x%08x, '%s', got 0x%08x, '%s'\n"
 
static const FMTRES VarFormat_results []
 
static const FMTDATERES VarFormat_date_results []
 
static const FMTDATERES VarFormat_namedtime_results []
 
static const charszVarWdnFail
 

Macro Definition Documentation

◆ CHECKPTR

#define CHECKPTR (   func)
Value:
if (!p##func) { win_skip("function " # func " not available, not testing it\n"); return; }
GLenum func
Definition: glext.h:6028
static HMODULE hOleaut32
Definition: varformat.c:40
#define GetProcAddress(x, y)
Definition: compat.h:410
GLfloat GLfloat p
Definition: glext.h:8902
#define win_skip
Definition: test.h:141

Definition at line 51 of file varformat.c.

◆ FMT_NUMBER

#define FMT_NUMBER (   vt,
  val 
)
Value:
VariantInit(&v); V_VT(&v) = vt; val(&v) = 1; \
hres = pVarFormatNumber(&v,2,0,0,0,0,&str); \
ok(hres == S_OK, "VarFormatNumber (vt %d): returned %8x\n", vt, hres); \
if (hres == S_OK) { \
ok(str && strcmpW(str,szResult1) == 0, \
"VarFormatNumber (vt %d): string different\n", vt); \
SysFreeString(str); \
}
void WINAPI VariantInit(VARIANTARG *pVarg)
Definition: variant.c:571
const WCHAR * str
GLuint GLfloat * val
Definition: glext.h:7180
HRESULT hres
Definition: protocol.c:465
static REFPROPVARIANT PROPVAR_CHANGE_FLAGS VARTYPE vt
Definition: suminfo.c:85
#define V_VT(A)
Definition: oleauto.h:211
#define S_OK
Definition: intsafe.h:59
const GLdouble * v
Definition: gl.h:2040
static int strcmpW(const WCHAR *str1, const WCHAR *str2)
Definition: varformat.c:54

Definition at line 60 of file varformat.c.

◆ SIGNED_VTBITS

Definition at line 124 of file varformat.c.

◆ VARFMT

#define VARFMT (   vt,
  v,
  val,
  fmt,
  ret,
  str 
)
Value:
do { \
out = NULL; \
V_VT(&in) = (vt); v(&in) = val; \
if (fmt) MultiByteToWideChar(CP_ACP, 0, fmt, -1, buffW, ARRAY_SIZE(buffW)); \
hres = pVarFormat(&in,fmt ? buffW : NULL,fd,fw,flags,&out); \
if (SUCCEEDED(hres)) WideCharToMultiByte(CP_ACP, 0, out, -1, buff, sizeof(buff),0,0); \
else buff[0] = '\0'; \
ok(hres == ret && (FAILED(ret) || !strcmp(buff, str)), \
SysFreeString(out); \
} while(0)
#define WideCharToMultiByte
Definition: compat.h:101
#define CP_ACP
Definition: compat.h:99
static int fd
Definition: io.c:51
static const char * szVarFmtFail
Definition: varformat.c:126
const WCHAR * str
smooth NULL
Definition: ftsmooth.c:416
GLuint GLfloat * val
Definition: glext.h:7180
HRESULT hres
Definition: protocol.c:465
static FILE * out
Definition: regtests2xml.c:44
static REFPROPVARIANT PROPVAR_CHANGE_FLAGS VARTYPE vt
Definition: suminfo.c:85
GLbitfield flags
Definition: glext.h:7161
int ret
const GLdouble * v
Definition: gl.h:2040
GLuint in
Definition: glext.h:9616
#define ARRAY_SIZE(a)
Definition: main.h:24
#define MultiByteToWideChar
Definition: compat.h:100
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
static unsigned char buff[32768]
Definition: fatten.c:17
Definition: dsound.c:943
#define SUCCEEDED(hr)
Definition: intsafe.h:57

Definition at line 127 of file varformat.c.

◆ VARWDN

#define VARWDN (   iWeekday,
  fAbbrev,
  iFirstDay,
  dwFlags,
  ret,
  buff,
  out,
  freeOut 
)
Value:
do { \
hres = pVarWeekdayName(iWeekday, fAbbrev, iFirstDay, dwFlags, &out); \
if (SUCCEEDED(hres)) { \
WideCharToMultiByte(CP_ACP, 0, out, -1, buff, sizeof(buff), 0, 0); \
if (freeOut) SysFreeString(out); \
} else { \
buff[0] = '\0'; \
} \
ok(hres == ret, \
iWeekday, fAbbrev, iFirstDay, dwFlags, &out, hres, ret \
); \
} while(0)
#define CP_ACP
Definition: compat.h:99
static const char * szVarWdnFail
Definition: varformat.c:450
HRESULT hres
Definition: protocol.c:465
static FILE * out
Definition: regtests2xml.c:44
int ret
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:274
static unsigned char buff[32768]
Definition: fatten.c:17
#define SUCCEEDED(hr)
Definition: intsafe.h:57

Definition at line 452 of file varformat.c.

◆ VARWDN_F

#define VARWDN_F (   iWeekday,
  fAbbrev,
  iFirstDay,
  dwFlags,
  ret 
)    VARWDN(iWeekday, fAbbrev, iFirstDay, dwFlags, ret, buff, out, 1)

Definition at line 467 of file varformat.c.

◆ VARWDN_O

#define VARWDN_O (   iWeekday,
  fAbbrev,
  iFirstDay,
  dwFlags 
)    VARWDN(iWeekday, fAbbrev, iFirstDay, dwFlags, S_OK, buff, out, 0)

Definition at line 470 of file varformat.c.

◆ VNUMFMT

#define VNUMFMT (   vt,
  v 
)
Value:
for (i = 0; i < ARRAY_SIZE(VarFormat_results); i++) \
{ \
VARFMT(vt,v,1,VarFormat_results[i].fmt,S_OK,VarFormat_results[i].one_res); \
VARFMT(vt,v,0,VarFormat_results[i].fmt,S_OK,VarFormat_results[i].zero_res); \
} \
if ((1 << vt) & SIGNED_VTBITS) \
{ \
VARFMT(vt,v,-1,"\"pos\";\"neg\"",S_OK,"neg"); \
VARFMT(vt,v,-1,"\"pos\";\"neg\";\"zero\"",S_OK,"neg"); \
}
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
static REFPROPVARIANT PROPVAR_CHANGE_FLAGS VARTYPE vt
Definition: suminfo.c:85
static const FMTRES VarFormat_results[]
Definition: varformat.c:147
#define S_OK
Definition: intsafe.h:59
#define SIGNED_VTBITS
Definition: varformat.c:124
const GLdouble * v
Definition: gl.h:2040
#define ARRAY_SIZE(a)
Definition: main.h:24
Definition: dsound.c:943

Definition at line 226 of file varformat.c.

Typedef Documentation

◆ FMTDATERES

◆ FMTRES

Function Documentation

◆ HRESULT()

static HRESULT ( WINAPI pVarBstrCmp)
static

◆ START_TEST()

START_TEST ( varformat  )

Definition at line 679 of file varformat.c.

680 {
681  hOleaut32 = GetModuleHandleA("oleaut32.dll");
682 
683  has_i8 = GetProcAddress(hOleaut32, "VarI8FromI1") != NULL;
684 
686  test_VarFormat();
690 }
static BSTR *static BSTR *static BSTR *static BOOL has_i8
Definition: varformat.c:45
static HMODULE hOleaut32
Definition: varformat.c:40
static void test_VarFormatNumber(void)
Definition: varformat.c:70
static void test_VarFormatFromTokens(void)
Definition: varformat.c:561
static void test_VarWeekdayName(void)
Definition: varformat.c:473
smooth NULL
Definition: ftsmooth.c:416
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
Definition: loader.c:821
static void test_VarFormat(void)
Definition: varformat.c:238
#define GetProcAddress(x, y)
Definition: compat.h:410
static void test_GetAltMonthNames(void)
Definition: varformat.c:643

◆ strcmpW()

static int strcmpW ( const WCHAR str1,
const WCHAR str2 
)
inlinestatic

Definition at line 54 of file varformat.c.

55 {
56  while (*str1 && (*str1 == *str2)) { str1++; str2++; }
57  return *str1 - *str2;
58 }

Referenced by test_VarFormatFromTokens(), and test_VarFormatNumber().

◆ test_GetAltMonthNames()

static void test_GetAltMonthNames ( void  )
static

Definition at line 643 of file varformat.c.

644 {
645  LPOLESTR *str, *str2;
646  HRESULT hr;
647 
648  str = (void *)0xdeadbeef;
649  hr = GetAltMonthNames(0, &str);
650  ok(hr == S_OK, "Unexpected return value %08x\n", hr);
651  ok(str == NULL, "Got %p\n", str);
652 
653  str = (void *)0xdeadbeef;
655  ok(hr == S_OK, "Unexpected return value %08x\n", hr);
656  ok(str == NULL, "Got %p\n", str);
657 
658  str = NULL;
660  ok(hr == S_OK, "Unexpected return value %08x\n", hr);
661  ok(str != NULL, "Got %p\n", str);
662 
663  str2 = NULL;
665  ok(hr == S_OK, "Unexpected return value %08x\n", hr);
666  ok(str2 == str, "Got %p\n", str2);
667 
668  str = NULL;
670  ok(hr == S_OK, "Unexpected return value %08x\n", hr);
671  ok(str != NULL, "Got %p\n", str);
672 
673  str = NULL;
675  ok(hr == S_OK, "Unexpected return value %08x\n", hr);
676  ok(str != NULL, "Got %p\n", str);
677 }
#define MAKELCID(lgid, srtid)
HRESULT hr
Definition: shlfolder.c:183
#define SUBLANG_DEFAULT
Definition: nls.h:168
static BSTR *static LPOLESTR
Definition: varformat.c:44
#define LANG_ARABIC
Definition: nls.h:29
#define SUBLANG_ENGLISH_US
Definition: nls.h:222
HRESULT WINAPI GetAltMonthNames(LCID lcid, LPOLESTR **str)
Definition: oleaut.c:1170
const WCHAR * str
smooth NULL
Definition: ftsmooth.c:416
#define SORT_DEFAULT
LONG HRESULT
Definition: typedefs.h:77
#define LANG_RUSSIAN
Definition: nls.h:113
#define LANG_ENGLISH
Definition: nls.h:52
#define S_OK
Definition: intsafe.h:59
#define ok(value,...)
Definition: atltest.h:57
#define MAKELANGID(p, s)
Definition: nls.h:15
#define LANG_POLISH
Definition: nls.h:107
#define SUBLANG_ARABIC_EGYPT
Definition: nls.h:180

Referenced by START_TEST().

◆ test_VarFormat()

static void test_VarFormat ( void  )
static

Definition at line 238 of file varformat.c.

239 {
240  static const WCHAR szTesting[] = { 't','e','s','t','i','n','g','\0' };
241  static const WCHAR szNum[] = { '3','9','6','9','7','.','1','1','\0' };
242  size_t i;
243  WCHAR buffW[256];
244  char buff[256];
245  VARIANT in;
246  VARIANT_BOOL bTrue = VARIANT_TRUE, bFalse = VARIANT_FALSE;
247  int fd = 0, fw = 0;
248  ULONG flags = 0;
249  BSTR bstrin, out = NULL;
250  HRESULT hres;
251 
253 
255  {
256  skip("Skipping VarFormat tests for non English language\n");
257  return;
258  }
260  if (buff[0] != '.' || buff[1])
261  {
262  skip("Skipping VarFormat tests as decimal separator is '%s'\n", buff);
263  return;
264  }
266  if (buff[0] != '2' || buff[1])
267  {
268  skip("Skipping VarFormat tests as decimal places is '%s'\n", buff);
269  return;
270  }
271 
272  VARFMT(VT_BOOL,V_BOOL,VARIANT_TRUE,"True/False",S_OK,"True");
273  VARFMT(VT_BOOL,V_BOOL,VARIANT_FALSE,"True/False",S_OK,"False");
274 
275  VNUMFMT(VT_I1,V_I1);
276  VNUMFMT(VT_I2,V_I2);
277  VNUMFMT(VT_I4,V_I4);
278  if (has_i8)
279  {
280  VNUMFMT(VT_I8,V_I8);
281  }
286  if (has_i8)
287  {
289  }
291  VNUMFMT(VT_R4,V_R4);
292  VNUMFMT(VT_R8,V_R8);
293 
294  /* Reference types are dereferenced */
295  VARFMT(VT_BOOL|VT_BYREF,V_BOOLREF,&bTrue,"True/False",S_OK,"True");
296  VARFMT(VT_BOOL|VT_BYREF,V_BOOLREF,&bFalse,"True/False",S_OK,"False");
297 
298  /* Dates */
299  for (i = 0; i < ARRAY_SIZE(VarFormat_date_results); i++)
300  {
301  if (i < 7)
302  fd = i + 1; /* Test first day */
303  else
304  fd = 0;
308  }
309 
310  /* Named time formats */
312  if (strcmp(buff, "h:mm:ss tt"))
313  {
314  skip("Skipping named time tests as time format is '%s'\n", buff);
315  }
316  else
317  {
318  for (i = 0; i < ARRAY_SIZE(VarFormat_namedtime_results); i++)
319  {
320  fd = 0;
324  }
325  }
326 
327  /* Strings */
328  bstrin = SysAllocString(szTesting);
329  VARFMT(VT_BSTR,V_BSTR,bstrin,"",S_OK,"testing");
330  VARFMT(VT_BSTR,V_BSTR,bstrin,"@",S_OK,"testing");
331  VARFMT(VT_BSTR,V_BSTR,bstrin,"&",S_OK,"testing");
332  VARFMT(VT_BSTR,V_BSTR,bstrin,"\\x@\\x@",S_OK,"xtxesting");
333  VARFMT(VT_BSTR,V_BSTR,bstrin,"\\x&\\x&",S_OK,"xtxesting");
334  VARFMT(VT_BSTR,V_BSTR,bstrin,"@\\x",S_OK,"txesting");
335  VARFMT(VT_BSTR,V_BSTR,bstrin,"@@@@@@@@",S_OK," testing");
336  VARFMT(VT_BSTR,V_BSTR,bstrin,"@\\x@@@@@@@",S_OK," xtesting");
337  VARFMT(VT_BSTR,V_BSTR,bstrin,"&&&&&&&&",S_OK,"testing");
338  VARFMT(VT_BSTR,V_BSTR,bstrin,"!&&&&&&&",S_OK,"testing");
339  VARFMT(VT_BSTR,V_BSTR,bstrin,"&&&&&&&!",S_OK,"testing");
340  VARFMT(VT_BSTR,V_BSTR,bstrin,">&&",S_OK,"TESTING");
341  VARFMT(VT_BSTR,V_BSTR,bstrin,"<&&",S_OK,"testing");
342  VARFMT(VT_BSTR,V_BSTR,bstrin,"<&>&",S_OK,"testing");
343  SysFreeString(bstrin);
344  bstrin = SysAllocString(szNum);
345  todo_wine VARFMT(VT_BSTR,V_BSTR,bstrin,"hh:mm",S_OK,"02:38");
346  todo_wine VARFMT(VT_BSTR,V_BSTR,bstrin,"mm-dd-yy",S_OK,"09-06-08");
347  SysFreeString(bstrin);
348  /* Numeric values are converted to strings then output */
349  VARFMT(VT_I1,V_I1,1,"<&>&",S_OK,"1");
350 
351  /* Number formats */
352  VARFMT(VT_I4,V_I4,1,"#00000000",S_OK,"00000001");
353  VARFMT(VT_I4,V_I4,1,"000###",S_OK,"000001");
354  VARFMT(VT_I4,V_I4,1,"#00##00#0",S_OK,"00000001");
355  VARFMT(VT_I4,V_I4,1,"1#####0000",S_OK,"10001");
356  VARFMT(VT_I4,V_I4,1,"##abcdefghijklmnopqrstuvwxyz",S_OK,"1abcdefghijklmnopqrstuvwxyz");
357  VARFMT(VT_I4,V_I4,100000,"#,###,###,###",S_OK,"100,000");
358  VARFMT(VT_I4,V_I4,1,"0,000,000,000",S_OK,"0,000,000,001");
359  VARFMT(VT_I4,V_I4,123456789,"#,#.#",S_OK,"123,456,789.");
360  VARFMT(VT_I4,V_I4,123456789,"###, ###, ###",S_OK,"123, 456, 789");
361  VARFMT(VT_I4,V_I4,1,"#;-#",S_OK,"1");
362  VARFMT(VT_I4,V_I4,-1,"#;-#",S_OK,"-1");
363  VARFMT(VT_R8,V_R8,1.23456789,"0#.0#0#0#0#0",S_OK,"01.234567890");
364  VARFMT(VT_R8,V_R8,1.2,"0#.0#0#0#0#0",S_OK,"01.200000000");
365  VARFMT(VT_R8,V_R8,9.87654321,"#0.#0#0#0#0#",S_OK,"9.87654321");
366  VARFMT(VT_R8,V_R8,9.8,"#0.#0#0#0#0#",S_OK,"9.80000000");
367  VARFMT(VT_R8,V_R8,0.00000008,"#0.#0#0#0#0#0",S_OK,"0.0000000800");
368  VARFMT(VT_R8,V_R8,0.00010705,"#0.##########",S_OK,"0.00010705");
369  VARFMT(VT_I4,V_I4,17,"#0",S_OK,"17");
370  VARFMT(VT_I4,V_I4,4711,"#0",S_OK,"4711");
371  VARFMT(VT_I4,V_I4,17,"#00",S_OK,"17");
372  VARFMT(VT_I4,V_I4,100,"0##",S_OK,"100");
373  VARFMT(VT_I4,V_I4,17,"#000",S_OK,"017");
374  VARFMT(VT_I4,V_I4,17,"#0.00",S_OK,"17.00");
375  VARFMT(VT_I4,V_I4,17,"#0000.00",S_OK,"0017.00");
376  VARFMT(VT_I4,V_I4,17,"#.00",S_OK,"17.00");
377  VARFMT(VT_R8,V_R8,1.7,"#.00",S_OK,"1.70");
378  VARFMT(VT_R8,V_R8,.17,"#.00",S_OK,".17");
379  VARFMT(VT_I4,V_I4,17,"#3",S_OK,"173");
380  VARFMT(VT_I4,V_I4,17,"#33",S_OK,"1733");
381  VARFMT(VT_I4,V_I4,17,"#3.33",S_OK,"173.33");
382  VARFMT(VT_I4,V_I4,17,"#3333.33",S_OK,"173333.33");
383  VARFMT(VT_I4,V_I4,17,"#.33",S_OK,"17.33");
384  VARFMT(VT_R8,V_R8,.17,"#.33",S_OK,".33");
385  VARFMT(VT_R8,V_R8,1.7,"0.0000E-000",S_OK,"1.7000E000");
386  VARFMT(VT_R8,V_R8,1.7,"0.0000e-1",S_OK,"1.7000e01");
387  VARFMT(VT_R8,V_R8,86.936849,"#0.000000000000e-000",S_OK,"86.936849000000e000");
388  VARFMT(VT_R8,V_R8,1.7,"#0",S_OK,"2");
389  VARFMT(VT_R8,V_R8,1.7,"#.33",S_OK,"2.33");
390  VARFMT(VT_R8,V_R8,1.7,"#3",S_OK,"23");
391  VARFMT(VT_R8,V_R8,1.73245,"0.0000E+000",S_OK,"1.7325E+000");
392  VARFMT(VT_R8,V_R8,9.9999999,"#0.000000",S_OK,"10.000000");
393  VARFMT(VT_R8,V_R8,1.7,"0.0000e+0#",S_OK,"1.7000e+0");
394  VARFMT(VT_R8,V_R8,100.0001e+0,"0.0000E+0",S_OK,"1.0000E+2");
395  VARFMT(VT_R8,V_R8,1000001,"0.0000e+1",S_OK,"1.0000e+61");
396  VARFMT(VT_R8,V_R8,100.0001e+25,"0.0000e+0",S_OK,"1.0000e+27");
397  VARFMT(VT_R8,V_R8,450.0001e+43,"#000.0000e+0",S_OK,"4500.0010e+42");
398  VARFMT(VT_R8,V_R8,0.0001e-11,"##00.0000e-0",S_OK,"1000.0000e-18");
399  VARFMT(VT_R8,V_R8,0.0317e-11,"0000.0000e-0",S_OK,"3170.0000e-16");
400  VARFMT(VT_R8,V_R8,0.0021e-11,"00##.0000e-0",S_OK,"2100.0000e-17");
401  VARFMT(VT_R8,V_R8,1.0001e-27,"##00.0000e-0",S_OK,"1000.1000e-30");
402  VARFMT(VT_R8,V_R8,47.11,".0000E+0",S_OK,".4711E+2");
403  VARFMT(VT_R8,V_R8,3.0401e-13,"#####.####e-0%",S_OK,"30401.e-15%");
404  VARFMT(VT_R8,V_R8,1.57,"0.00",S_OK,"1.57");
405  VARFMT(VT_R8,V_R8,-1.57,"0.00",S_OK,"-1.57");
406  VARFMT(VT_R8,V_R8,-1.57,"#.##",S_OK,"-1.57");
407  VARFMT(VT_R8,V_R8,-0.1,".#",S_OK,"-.1");
408  VARFMT(VT_R8,V_R8,0.099,"#.#",S_OK,".1");
409  VARFMT(VT_R8,V_R8,0.0999,"#.##",S_OK,".1");
410  VARFMT(VT_R8,V_R8,0.099,"#.##",S_OK,".1");
411  VARFMT(VT_R8,V_R8,0.0099,"#.##",S_OK,".01");
412  VARFMT(VT_R8,V_R8,0.0049,"#.##",S_OK,".");
413  VARFMT(VT_R8,V_R8,0.0094,"#.##",S_OK,".01");
414  VARFMT(VT_R8,V_R8,0.00099,"#.##",S_OK,".");
415  VARFMT(VT_R8,V_R8,0.0995,"#.##",S_OK,".1");
416  VARFMT(VT_R8,V_R8,8.0995,"#.##",S_OK,"8.1");
417  VARFMT(VT_R8,V_R8,0.0994,"#.##",S_OK,".1");
418  VARFMT(VT_R8,V_R8,1.00,"#,##0.00",S_OK,"1.00");
419  VARFMT(VT_R8,V_R8,0.0995,"#.###",S_OK,".1");
420 
421 
422  /* 'out' is not cleared */
423  out = (BSTR)0x1;
424  hres = pVarFormat(&in,NULL,fd,fw,flags,&out); /* Would crash if out is cleared */
425  ok(hres == S_OK, "got %08x\n", hres);
427  out = NULL;
428 
429  /* VT_NULL */
430  V_VT(&in) = VT_NULL;
431  hres = pVarFormat(&in,NULL,fd,fw,0,&out);
432  ok(hres == S_OK, "VarFormat failed with 0x%08x\n", hres);
433  ok(out == NULL, "expected NULL formatted string\n");
434 
435  /* Invalid args */
436  hres = pVarFormat(&in,NULL,fd,fw,flags,NULL);
437  ok(hres == E_INVALIDARG, "Null out: expected E_INVALIDARG, got 0x%08x\n", hres);
438  hres = pVarFormat(NULL,NULL,fd,fw,flags,&out);
439  ok(hres == E_INVALIDARG, "Null in: expected E_INVALIDARG, got 0x%08x\n", hres);
440  fd = -1;
441  VARFMT(VT_BOOL,V_BOOL,VARIANT_TRUE,"",E_INVALIDARG,"");
442  fd = 8;
443  VARFMT(VT_BOOL,V_BOOL,VARIANT_TRUE,"",E_INVALIDARG,"");
444  fd = 0; fw = -1;
445  VARFMT(VT_BOOL,V_BOOL,VARIANT_TRUE,"",E_INVALIDARG,"");
446  fw = 4;
447  VARFMT(VT_BOOL,V_BOOL,VARIANT_TRUE,"",E_INVALIDARG,"");
448 }
static BSTR *static BSTR *static BSTR *static BOOL has_i8
Definition: varformat.c:45
Definition: compat.h:1939
Definition: compat.h:1955
Definition: compat.h:1951
INT WINAPI GetLocaleInfoA(LCID lcid, LCTYPE lctype, LPSTR buffer, INT len)
Definition: lang.c:1018
#define LOCALE_USER_DEFAULT
#define V_R8(A)
Definition: oleauto.h:262
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1
Definition: winddi.h:3706
#define V_I2(A)
Definition: oleauto.h:245
#define VARFMT(vt, v, val, fmt, ret, str)
Definition: varformat.c:127
static int fd
Definition: io.c:51
LCID WINAPI GetUserDefaultLCID(void)
Definition: lang.c:768
OLECHAR * BSTR
Definition: compat.h:1934
short VARIANT_BOOL
Definition: compat.h:1931
#define V_UI8(A)
Definition: oleauto.h:272
#define V_I4(A)
Definition: oleauto.h:247
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define e
Definition: ke_i.h:82
#define E_INVALIDARG
Definition: ddrawi.h:101
#define V_BOOLREF(A)
Definition: oleauto.h:225
smooth NULL
Definition: ftsmooth.c:416
#define V_UI2(A)
Definition: oleauto.h:268
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:241
#define V_I1(A)
Definition: oleauto.h:243
#define LOCALE_SDECIMAL
Definition: winnls.h:42
static const FMTDATERES VarFormat_namedtime_results[]
Definition: varformat.c:219
GLuint GLfloat * val
Definition: glext.h:7180
#define V_I8(A)
Definition: oleauto.h:249
#define CHECKPTR(func)
Definition: varformat.c:51
#define V_R4(A)
Definition: oleauto.h:260
HRESULT hres
Definition: protocol.c:465
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
#define V_UI1(A)
Definition: oleauto.h:266
HRESULT WINAPI VarFormat(LPVARIANT pVarIn, LPOLESTR lpszFormat, int nFirstDay, int nFirstWeek, ULONG dwFlags, BSTR *pbstrOut)
Definition: varformat.c:2141
#define V_BOOL(A)
Definition: oleauto.h:224
static FILE * out
Definition: regtests2xml.c:44
GLbitfield flags
Definition: glext.h:7161
#define LANG_ENGLISH
Definition: nls.h:52
static BSTR
Definition: varformat.c:42
#define V_UI4(A)
Definition: oleauto.h:270
Definition: compat.h:1940
#define todo_wine
Definition: test.h:154
static const FMTDATERES VarFormat_date_results[]
Definition: varformat.c:176
#define V_VT(A)
Definition: oleauto.h:211
#define LANGIDFROMLCID(l)
Definition: nls.h:18
#define LOCALE_IDIGITS
Definition: winnls.h:45
#define V_BSTR(A)
Definition: oleauto.h:226
#define S_OK
Definition: intsafe.h:59
GLuint in
Definition: glext.h:9616
#define ARRAY_SIZE(a)
Definition: main.h:24
#define ok(value,...)
Definition: atltest.h:57
#define V_INT(x)
Definition: webchild.h:78
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:274
#define skip(...)
Definition: atltest.h:64
GLuint res
Definition: glext.h:9613
unsigned int ULONG
Definition: retypes.h:1
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
#define VNUMFMT(vt, v)
Definition: varformat.c:226
#define V_UINT(A)
Definition: oleauto.h:264
#define LOCALE_STIMEFORMAT
Definition: winnls.h:62
static unsigned char buff[32768]
Definition: fatten.c:17
Definition: dsound.c:943
Definition: compat.h:1941
Definition: compat.h:1938
#define V_DATE(A)
Definition: oleauto.h:231
#define PRIMARYLANGID(l)
Definition: nls.h:16

Referenced by START_TEST().

◆ test_VarFormatFromTokens()

static void test_VarFormatFromTokens ( void  )
static

Definition at line 561 of file varformat.c.

562 {
563  static WCHAR number_fmt[] = {'#','#','#',',','#','#','0','.','0','0',0};
564  static const WCHAR number[] = {'6',',','9','0',0};
565  static const WCHAR number_us[] = {'6','9','0','.','0','0',0};
566 
567  static WCHAR date_fmt[] = {'d','d','-','m','m',0};
568  static const WCHAR date[] = {'1','2','-','1','1',0};
569  static const WCHAR date_us[] = {'1','1','-','1','2',0};
570 
571  static WCHAR string_fmt[] = {'@',0};
572  static const WCHAR string_de[] = {'1',',','5',0};
573  static const WCHAR string_us[] = {'1','.','5',0};
574 
575  BYTE buff[256];
576  LCID lcid;
577  VARIANT var;
578  BSTR bstr;
579  HRESULT hres;
580 
581  V_VT(&var) = VT_BSTR;
582  V_BSTR(&var) = SysAllocString(number);
583 
585  hres = VarTokenizeFormatString(number_fmt, buff, sizeof(buff), 1, 1, lcid, NULL);
586  ok(hres == S_OK, "VarTokenizeFormatString failed: %x\n", hres);
587  hres = VarFormatFromTokens(&var, number_fmt, buff, 0, &bstr, lcid);
588  ok(hres == S_OK, "VarFormatFromTokens failed: %x\n", hres);
589  ok(!strcmpW(bstr, number_us), "incorrectly formatted number: %s\n", wine_dbgstr_w(bstr));
590  SysFreeString(bstr);
591 
593  hres = VarTokenizeFormatString(number_fmt, buff, sizeof(buff), 1, 1, lcid, NULL);
594  ok(hres == S_OK, "VarTokenizeFormatString failed: %x\n", hres);
595  hres = VarFormatFromTokens(&var, number_fmt, buff, 0, &bstr, lcid);
596  ok(hres == S_OK, "VarFormatFromTokens failed: %x\n", hres);
597  ok(!strcmpW(bstr, number), "incorrectly formatted number: %s\n", wine_dbgstr_w(bstr));
598  SysFreeString(bstr);
599 
600  VariantClear(&var);
601 
602  V_VT(&var) = VT_BSTR;
603  V_BSTR(&var) = SysAllocString(date);
604 
606  hres = VarTokenizeFormatString(date_fmt, buff, sizeof(buff), 1, 1, lcid, NULL);
607  ok(hres == S_OK, "VarTokenizeFormatString failed: %x\n", hres);
608  hres = VarFormatFromTokens(&var, date_fmt, buff, 0, &bstr, lcid);
609  ok(hres == S_OK, "VarFormatFromTokens failed: %x\n", hres);
610  ok(!strcmpW(bstr, date_us), "incorrectly formatted date: %s\n", wine_dbgstr_w(bstr));
611  SysFreeString(bstr);
612 
614  hres = VarTokenizeFormatString(date_fmt, buff, sizeof(buff), 1, 1, lcid, NULL);
615  ok(hres == S_OK, "VarTokenizeFormatString failed: %x\n", hres);
616  hres = VarFormatFromTokens(&var, date_fmt, buff, 0, &bstr, lcid);
617  ok(hres == S_OK, "VarFormatFromTokens failed: %x\n", hres);
618  ok(!strcmpW(bstr, date), "incorrectly formatted date: %s\n", wine_dbgstr_w(bstr));
619  SysFreeString(bstr);
620 
621  VariantClear(&var);
622 
623  V_VT(&var) = VT_R4;
624  V_R4(&var) = 1.5;
625 
627  hres = VarTokenizeFormatString(string_fmt, buff, sizeof(buff), 1, 1, lcid, NULL);
628  ok(hres == S_OK, "VarTokenizeFormatString failed: %x\n", hres);
629  hres = VarFormatFromTokens(&var, string_fmt, buff, 0, &bstr, lcid);
630  ok(hres == S_OK, "VarFormatFromTokens failed: %x\n", hres);
631  ok(!strcmpW(bstr, string_us), "incorrectly formatted string: %s\n", wine_dbgstr_w(bstr));
632  SysFreeString(bstr);
633 
635  hres = VarTokenizeFormatString(string_fmt, buff, sizeof(buff), 1, 1, lcid, NULL);
636  ok(hres == S_OK, "VarTokenizeFormatString failed: %x\n", hres);
637  hres = VarFormatFromTokens(&var, string_fmt, buff, 0, &bstr, lcid);
638  ok(hres == S_OK, "VarFormatFromTokens failed: %x\n", hres);
639  ok(!strcmpW(bstr, string_de), "incorrectly formatted string: %s\n", wine_dbgstr_w(bstr));
640  SysFreeString(bstr);
641 }
#define MAKELCID(lgid, srtid)
HRESULT WINAPI VarTokenizeFormatString(LPOLESTR lpszFormat, LPBYTE rgbTok, int cbTok, int nFirstDay, int nFirstWeek, LCID lcid, int *pcbActual)
Definition: varformat.c:498
#define SUBLANG_GERMAN
Definition: nls.h:251
char * wine_dbgstr_w(const wchar_t *wstr)
Definition: atltest.h:87
DWORD LCID
Definition: nls.h:13
OLECHAR * BSTR
Definition: compat.h:1934
#define SUBLANG_ENGLISH_US
Definition: nls.h:222
static size_t double number
Definition: printf.c:64
smooth NULL
Definition: ftsmooth.c:416
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:241
#define V_R4(A)
Definition: oleauto.h:260
HRESULT hres
Definition: protocol.c:465
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define SORT_DEFAULT
LONG HRESULT
Definition: typedefs.h:77
#define LANG_ENGLISH
Definition: nls.h:52
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
Definition: variant.c:651
Definition: compat.h:1940
#define V_VT(A)
Definition: oleauto.h:211
unsigned char BYTE
Definition: mem.h:68
#define V_BSTR(A)
Definition: oleauto.h:226
#define LANG_GERMAN
Definition: nls.h:62
#define S_OK
Definition: intsafe.h:59
__u16 date
Definition: mkdosfs.c:366
HRESULT WINAPI VarFormatFromTokens(LPVARIANT pVarIn, LPOLESTR lpszFormat, LPBYTE rgbTok, ULONG dwFlags, BSTR *pbstrOut, LCID lcid)
Definition: varformat.c:2053
#define ok(value,...)
Definition: atltest.h:57
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:274
#define MAKELANGID(p, s)
Definition: nls.h:15
static unsigned char buff[32768]
Definition: fatten.c:17
static int strcmpW(const WCHAR *str1, const WCHAR *str2)
Definition: varformat.c:54

Referenced by START_TEST().

◆ test_VarFormatNumber()

static void test_VarFormatNumber ( void  )
static

Definition at line 70 of file varformat.c.

71 {
72  static const WCHAR szSrc1[] = { '1','\0' };
73  static const WCHAR szResult1[] = { '1','.','0','0','\0' };
74  static const WCHAR szSrc2[] = { '-','1','\0' };
75  static const WCHAR szResult2[] = { '(','1','.','0','0',')','\0' };
76  char buff[8];
77  HRESULT hres;
78  VARIANT v;
79  BSTR str = NULL;
80 
82 
84  if (buff[0] != '.' || buff[1])
85  {
86  skip("Skipping VarFormatNumber tests as decimal separator is '%s'\n", buff);
87  return;
88  }
89 
96  if (has_i8)
97  {
100  }
104 
105  V_VT(&v) = VT_BSTR;
106  V_BSTR(&v) = SysAllocString(szSrc1);
107 
108  hres = pVarFormatNumber(&v,2,0,0,0,0,&str);
109  ok(hres == S_OK, "VarFormatNumber (bstr): returned %8x\n", hres);
110  if (hres == S_OK)
111  ok(str && strcmpW(str, szResult1) == 0, "VarFormatNumber (bstr): string different\n");
114 
115  V_BSTR(&v) = SysAllocString(szSrc2);
116  hres = pVarFormatNumber(&v,2,0,-1,0,0,&str);
117  ok(hres == S_OK, "VarFormatNumber (bstr): returned %8x\n", hres);
118  if (hres == S_OK)
119  ok(str && strcmpW(str, szResult2) == 0, "VarFormatNumber (-bstr): string different\n");
122 }
static BSTR *static BSTR *static BSTR *static BOOL has_i8
Definition: varformat.c:45
Definition: compat.h:1939
Definition: compat.h:1955
Definition: compat.h:1951
INT WINAPI GetLocaleInfoA(LCID lcid, LCTYPE lctype, LPSTR buffer, INT len)
Definition: lang.c:1018
#define LOCALE_USER_DEFAULT
#define V_R8(A)
Definition: oleauto.h:262
#define V_I2(A)
Definition: oleauto.h:245
OLECHAR * BSTR
Definition: compat.h:1934
#define V_UI8(A)
Definition: oleauto.h:272
#define V_I4(A)
Definition: oleauto.h:247
#define FMT_NUMBER(vt, val)
Definition: varformat.c:60
const WCHAR * str
smooth NULL
Definition: ftsmooth.c:416
#define V_UI2(A)
Definition: oleauto.h:268
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:241
#define V_I1(A)
Definition: oleauto.h:243
#define LOCALE_SDECIMAL
Definition: winnls.h:42
#define V_I8(A)
Definition: oleauto.h:249
#define CHECKPTR(func)
Definition: varformat.c:51
#define V_R4(A)
Definition: oleauto.h:260
HRESULT hres
Definition: protocol.c:465
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
#define V_UI1(A)
Definition: oleauto.h:266
#define V_BOOL(A)
Definition: oleauto.h:224
#define V_UI4(A)
Definition: oleauto.h:270
Definition: compat.h:1940
#define V_VT(A)
Definition: oleauto.h:211
#define V_BSTR(A)
Definition: oleauto.h:226
#define S_OK
Definition: intsafe.h:59
const GLdouble * v
Definition: gl.h:2040
#define ARRAY_SIZE(a)
Definition: main.h:24
#define ok(value,...)
Definition: atltest.h:57
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:274
#define skip(...)
Definition: atltest.h:64
static unsigned char buff[32768]
Definition: fatten.c:17
Definition: compat.h:1941
Definition: compat.h:1938
HRESULT WINAPI VarFormatNumber(LPVARIANT pVarIn, INT nDigits, INT nLeading, INT nParens, INT nGrouping, ULONG dwFlags, BSTR *pbstrOut)
Definition: varformat.c:2244
static int strcmpW(const WCHAR *str1, const WCHAR *str2)
Definition: varformat.c:54

Referenced by START_TEST().

◆ test_VarWeekdayName()

static void test_VarWeekdayName ( void  )
static

Definition at line 473 of file varformat.c.

474 {
475  char buff[256];
476  BSTR out = NULL;
477  HRESULT hres;
478  int iWeekday, fAbbrev, iFirstDay;
479  BSTR dayNames[7][2]; /* Monday-Sunday, full/abbr */
480  DWORD defaultFirstDay;
481  int firstDay;
482  int day;
483  int size;
484  DWORD localeValue;
485 
487 
488  SetLastError(0xdeadbeef);
491  {
492  win_skip("GetLocaleInfoW is not implemented\n");
493  return;
494  }
495 
496  /* Initialize days' names */
497  for (day = 0; day <= 6; ++day)
498  {
499  for (fAbbrev = 0; fAbbrev <= 1; ++fAbbrev)
500  {
501  localeValue = fAbbrev ? LOCALE_SABBREVDAYNAME1 : LOCALE_SDAYNAME1;
502  localeValue += day;
503  size = GetLocaleInfoW(LOCALE_USER_DEFAULT, localeValue, NULL, 0);
504  dayNames[day][fAbbrev] = SysAllocStringLen(NULL, size - 1);
505  GetLocaleInfoW(LOCALE_USER_DEFAULT, localeValue,
506  dayNames[day][fAbbrev], size);
507  }
508  }
509 
510  /* Get the user's first day of week. 0=Monday, .. */
512  LOCALE_USER_DEFAULT, LOCALE_IFIRSTDAYOFWEEK | LOCALE_RETURN_NUMBER,
513  (LPWSTR)&defaultFirstDay, sizeof(defaultFirstDay) / sizeof(WCHAR));
514 
515  /* Check invalid arguments */
516  VARWDN_F(0, 0, 4, 0, E_INVALIDARG);
517  VARWDN_F(8, 0, 4, 0, E_INVALIDARG);
518  VARWDN_F(4, 0, -1, 0, E_INVALIDARG);
519  VARWDN_F(4, 0, 8, 0, E_INVALIDARG);
520 
521  hres = pVarWeekdayName(1, 0, 0, 0, NULL);
522  ok(E_INVALIDARG == hres,
523  "Null pointer: expected E_INVALIDARG, got 0x%08x\n", hres);
524 
525  /* Check all combinations */
526  pVarBstrCmp = (void*)GetProcAddress(hOleaut32, "VarBstrCmp");
527  if (pVarBstrCmp)
528  for (iWeekday = 1; iWeekday <= 7; ++iWeekday)
529  {
530  for (fAbbrev = 0; fAbbrev <= 1; ++fAbbrev)
531  {
532  /* 0 = Default, 1 = Sunday, 2 = Monday, .. */
533  for (iFirstDay = 0; iFirstDay <= 7; ++iFirstDay)
534  {
535  VARWDN_O(iWeekday, fAbbrev, iFirstDay, 0);
536  if (iFirstDay == 0)
537  firstDay = defaultFirstDay;
538  else
539  /* Translate from 0=Sunday to 0=Monday in the modulo 7 space */
540  firstDay = iFirstDay - 2;
541  day = (7 + iWeekday - 1 + firstDay) % 7;
542  ok(VARCMP_EQ == pVarBstrCmp(out, dayNames[day][fAbbrev],
544  "VarWeekdayName(%d,%d,%d): got wrong dayname: '%s'\n",
545  iWeekday, fAbbrev, iFirstDay, buff);
547  }
548  }
549  }
550 
551  /* Cleanup */
552  for (day = 0; day <= 6; ++day)
553  {
554  for (fAbbrev = 0; fAbbrev <= 1; ++fAbbrev)
555  {
556  SysFreeString(dayNames[day][fAbbrev]);
557  }
558  }
559 }
static HMODULE hOleaut32
Definition: varformat.c:40
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
Definition: oleaut.c:342
#define VARWDN_O(iWeekday, fAbbrev, iFirstDay, dwFlags)
Definition: varformat.c:470
#define LOCALE_SABBREVDAYNAME1
Definition: winnls.h:84
#define LOCALE_USER_DEFAULT
static DOUBLE day(DOUBLE time)
Definition: date.c:115
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1059
OLECHAR * BSTR
Definition: compat.h:1934
HRESULT WINAPI VarWeekdayName(INT iWeekday, INT fAbbrev, INT iFirstDay, ULONG dwFlags, BSTR *pbstrOut)
Definition: varformat.c:2571
INT WINAPI GetLocaleInfoW(LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len)
Definition: lang.c:1098
#define LOCALE_SDAYNAME1
Definition: winnls.h:77
#define VARCMP_EQ
Definition: oleauto.h:658
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
#define CHECKPTR(func)
Definition: varformat.c:51
GLsizeiptr size
Definition: glext.h:5919
HRESULT hres
Definition: protocol.c:465
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
static FILE * out
Definition: regtests2xml.c:44
unsigned long DWORD
Definition: ntddk_ex.h:95
#define SetLastError(x)
Definition: compat.h:409
#define LOCALE_IFIRSTDAYOFWEEK
Definition: winnls.h:75
#define VARWDN_F(iWeekday, fAbbrev, iFirstDay, dwFlags, ret)
Definition: varformat.c:467
#define ok(value,...)
Definition: atltest.h:57
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:274
#define ERROR_CALL_NOT_IMPLEMENTED
Definition: compat.h:92
#define GetProcAddress(x, y)
Definition: compat.h:410
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define win_skip
Definition: test.h:141
static unsigned char buff[32768]
Definition: fatten.c:17

Referenced by START_TEST().

Variable Documentation

◆ BSTR

Definition at line 42 of file varformat.c.

Referenced by test_VarFormat().

◆ has_i8

BSTR* static BSTR* static BSTR* static BOOL has_i8
static

Definition at line 45 of file varformat.c.

Referenced by START_TEST(), test_VarFormat(), and test_VarFormatNumber().

◆ hOleaut32

HMODULE hOleaut32
static

Definition at line 40 of file varformat.c.

Referenced by START_TEST(), and test_VarWeekdayName().

◆ int

BSTR* static BSTR* static int

Definition at line 43 of file varformat.c.

◆ LCID

Definition at line 42 of file varformat.c.

◆ LPOLESTR

BSTR* static LPOLESTR

Definition at line 44 of file varformat.c.

Referenced by test_GetAltMonthNames().

◆ szVarFmtFail

const char* szVarFmtFail = "VT %d|0x%04x Format %s: expected 0x%08x, '%s', got 0x%08x, '%s'\n"
static

Definition at line 126 of file varformat.c.

◆ szVarWdnFail

const char* szVarWdnFail
static
Initial value:
=
"VarWeekdayName (%d, %d, %d, %d, %x): returned %8x, expected %8x\n"

Definition at line 450 of file varformat.c.

◆ ULONG

BSTR* static BSTR* static ULONG

Definition at line 42 of file varformat.c.

◆ VarFormat_date_results

const FMTDATERES VarFormat_date_results[]
static

Definition at line 176 of file varformat.c.

Referenced by test_VarFormat().

◆ VarFormat_namedtime_results

const FMTDATERES VarFormat_namedtime_results[]
static
Initial value:
=
{
{ 2.525, "short time", "12:36" },
{ 2.525, "medium time", "12:36 PM" },
{ 2.525, "long time", "12:36:00 PM" }
}

Definition at line 219 of file varformat.c.

Referenced by test_VarFormat().

◆ VarFormat_results

const FMTRES VarFormat_results[]
static
Initial value:
=
{
{ NULL, "1", "0" },
{ "", "1", "0" },
{ "General Number", "1", "0" },
{ "Percent", "100.00%", "0.00%" },
{ "Standard", "1.00", "0.00" },
{ "Scientific","1.00E+00", "0.00E+00" },
{ "True/False", "True", "False" },
{ "On/Off", "On", "Off" },
{ "Yes/No", "Yes", "No" },
{ "#", "1", "" },
{ "##", "1", "" },
{ "#.#", "1.", "." },
{ "0", "1", "0" },
{ "00", "01", "00" },
{ "0.0", "1.0", "0.0" },
{ "00\\c\\o\\p\\y", "01copy","00copy" },
{ "\"pos\";\"neg\"", "pos", "pos" },
{ "\"pos\";\"neg\";\"zero\"","pos", "zero" }
}
smooth NULL
Definition: ftsmooth.c:416

Definition at line 147 of file varformat.c.