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