Fixed short time and medium time named formats in varformat.c. =
Peter Schellenbach
pjs at asent.com
Mon Feb 21 11:48:21 CST 2011
Added tests for named time formats.=0A=
=0A=
---=0A=
dlls/oleaut32/tests/varformat.c | 25 +++++++++++++++++++++++++=0A=
dlls/oleaut32/varformat.c | 11 +++++++++--=0A=
2 files changed, 34 insertions(+), 2 deletions(-)=0A=
=0A=
diff --git a/dlls/oleaut32/tests/varformat.c =
b/dlls/oleaut32/tests/varformat.c=0A=
index d83f218..b1fe73f 100644=0A=
--- a/dlls/oleaut32/tests/varformat.c=0A=
+++ b/dlls/oleaut32/tests/varformat.c=0A=
@@ -217,6 +217,14 @@ static const FMTDATERES VarFormat_date_results[] =3D=0A=
{ 40531.0, "ddd", "Sun" }=0A=
};=0A=
=0A=
+/* The following tests require that the time separator is a colon (:) */=0A=
+static const FMTDATERES VarFormat_namedtime_results[] =3D=0A=
+{=0A=
+ { 2.525, "short time", "12:36" },=0A=
+ { 2.525, "medium time", "12:36 PM" },=0A=
+ { 2.525, "long time", "12:36:00 PM" }=0A=
+};=0A=
+=0A=
#define VNUMFMT(vt,v) \=0A=
for (i =3D 0; i < sizeof(VarFormat_results)/sizeof(FMTRES); i++) \=0A=
{ \=0A=
@@ -301,6 +309,23 @@ static void test_VarFormat(void)=0A=
VarFormat_date_results[i].res);=0A=
}=0A=
=0A=
+ /* Named time formats */=0A=
+ GetLocaleInfoA(LOCALE_USER_DEFAULT, LOCALE_STIME, buff, =
sizeof(buff)/sizeof(char));=0A=
+ if (buff[0] !=3D ':' || buff[1])=0A=
+ {=0A=
+ skip("Skipping namedtime tests as time separator is '%s'\n", buff);=0A=
+ }=0A=
+ else=0A=
+ {=0A=
+ for (i =3D 0; i < =
sizeof(VarFormat_namedtime_results)/sizeof(FMTDATERES); i++)=0A=
+ {=0A=
+ fd =3D 0;=0A=
+ VARFMT(VT_DATE,V_DATE,VarFormat_namedtime_results[i].val,=0A=
+ VarFormat_namedtime_results[i].fmt,S_OK,=0A=
+ VarFormat_namedtime_results[i].res);=0A=
+ }=0A=
+ }=0A=
+=0A=
/* Strings */=0A=
bstrin =3D SysAllocString(szTesting);=0A=
VARFMT(VT_BSTR,V_BSTR,bstrin,"",S_OK,"testing");=0A=
diff --git a/dlls/oleaut32/varformat.c b/dlls/oleaut32/varformat.c=0A=
index 529528b..94d2278 100644=0A=
--- a/dlls/oleaut32/varformat.c=0A=
+++ b/dlls/oleaut32/varformat.c=0A=
@@ -263,7 +263,7 @@ typedef struct tagFMT_DATE_HEADER=0A=
#define FMT_DATE_HOUR_0 0x1F /* Hours with leading 0 */=0A=
#define FMT_DATE_HOUR_12 0x20 /* Hours with no leading 0, 12 hour =
clock */=0A=
#define FMT_DATE_HOUR_12_0 0x21 /* Hours with leading 0, 12 hour clock =
*/=0A=
-#define FMT_DATE_TIME_UNK2 0x23=0A=
+#define FMT_DATE_TIME_UNK2 0x23 /* same as FMT_DATE_HOUR_0, for "short =
time" format */=0A=
/* FIXME: probably missing some here */=0A=
#define FMT_DATE_AMPM_SYS1 0x2E /* AM/PM as defined by system settings =
*/=0A=
#define FMT_DATE_AMPM_UPPER 0x2F /* Upper-case AM or PM */=0A=
@@ -1660,6 +1660,13 @@ static HRESULT VARIANT_FormatDate(LPVARIANT =
pVarIn, LPOLESTR lpszFormat,=0A=
pToken +=3D 2;=0A=
break;=0A=
=0A=
+ case FMT_GEN_INLINE:=0A=
+ pToken +=3D 2;=0A=
+ TRACE("copy %s\n", debugstr_a((LPCSTR)pToken));=0A=
+ while (*pToken)=0A=
+ *pBuff++ =3D *pToken++;=0A=
+ break;=0A=
+=0A=
case FMT_DATE_TIME_SEP:=0A=
TRACE("time separator\n");=0A=
localeValue =3D LOCALE_STIME;=0A=
@@ -1835,7 +1842,7 @@ static HRESULT VARIANT_FormatDate(LPVARIANT =
pVarIn, LPOLESTR lpszFormat,=0A=
dwVal =3D udate.st.wHour;=0A=
break;=0A=
=0A=
- case FMT_DATE_HOUR_0:=0A=
+ case FMT_DATE_HOUR_0: case FMT_DATE_TIME_UNK2:=0A=
szPrintFmt =3D szPercentZeroTwo_d;=0A=
dwVal =3D udate.st.wHour;=0A=
break;=0A=
-- =0A=
1.7.2.2=0A=
=0A=
------=_NextPart_000_0326_01CBD1C1.0350A060--
More information about the wine-patches
mailing list