[PATCH 1/2] oleaut32/tests: Allow testing VarParseNumFromStr() using Unicode strings.

Francois Gouget fgouget at codeweavers.com
Fri Jul 16 10:16:06 CDT 2021


Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
---
 dlls/oleaut32/tests/vartest.c | 26 ++++++++++++++++----------
 1 file changed, 16 insertions(+), 10 deletions(-)

diff --git a/dlls/oleaut32/tests/vartest.c b/dlls/oleaut32/tests/vartest.c
index 9a9ded10406..9fdd86956d8 100644
--- a/dlls/oleaut32/tests/vartest.c
+++ b/dlls/oleaut32/tests/vartest.c
@@ -1262,21 +1262,27 @@ static void test_VariantCopyInd(void)
      "CopyInd(ref->ref): expected E_INVALIDARG, got 0x%08x\n", hres);
 }
 
-static HRESULT (WINAPI *pVarParseNumFromStr)(OLECHAR*,LCID,ULONG,NUMPARSE*,BYTE*);
+static HRESULT (WINAPI *pVarParseNumFromStr)(const OLECHAR*,LCID,ULONG,NUMPARSE*,BYTE*);
 
 /* Macros for converting and testing the result of VarParseNumFromStr */
 #define FAILDIG 255
 
-static HRESULT convert_str( const char *str, INT dig, ULONG flags,
+static HRESULT wconvert_str( const OLECHAR *str, INT dig, ULONG flags,
                             NUMPARSE *np, BYTE rgb[128], LCID lcid )
 {
-    OLECHAR buff[128];
-    MultiByteToWideChar( CP_ACP,0, str, -1, buff, ARRAY_SIZE( buff ));
     memset( rgb, FAILDIG, 128 );
     memset( np, 255, sizeof(*np) );
     np->cDig = dig;
     np->dwInFlags = flags;
-    return pVarParseNumFromStr( buff, lcid, LOCALE_NOUSEROVERRIDE, np, rgb);
+    return pVarParseNumFromStr( str, lcid, LOCALE_NOUSEROVERRIDE, np, rgb);
+}
+
+static HRESULT convert_str( const char *str, INT dig, ULONG flags,
+                            NUMPARSE *np, BYTE rgb[128], LCID lcid )
+{
+    OLECHAR buff[128];
+    MultiByteToWideChar( CP_ACP,0, str, -1, buff, ARRAY_SIZE( buff ));
+    return wconvert_str(buff, dig, flags, np, rgb, lcid);
 }
 
 static void expect_NumFromStr( int line, HRESULT hres, NUMPARSE *np, INT a, ULONG b, ULONG c,
@@ -1293,6 +1299,8 @@ static void expect_NumFromStr( int line, HRESULT hres, NUMPARSE *np, INT a, ULON
     }
 }
 
+#define WCONVERTN(str,dig,flags) hres = wconvert_str( str, dig, flags, &np, rgb, lcid )
+#define WCONVERT(str,flags) WCONVERTN(str,sizeof(rgb),flags)
 #define CONVERTN(str,dig,flags) hres = convert_str( str, dig, flags, &np, rgb, lcid )
 #define CONVERT(str,flags) CONVERTN(str,sizeof(rgb),flags)
 #define EXPECT(a,b,c,d,e,f) expect_NumFromStr( __LINE__, hres, &np, a, b, c, d, e, f )
@@ -1307,7 +1315,6 @@ static void test_VarParseNumFromStr(void)
   LCID lcid = MAKELCID(MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US),SORT_DEFAULT);
   NUMPARSE np;
   BYTE rgb[128];
-  WCHAR str[128];
 
   /** No flags **/
 
@@ -1731,10 +1738,9 @@ static void test_VarParseNumFromStr(void)
   EXPECT(1,NUMPRS_STD,NUMPRS_DECIMAL,4,0,-1);
   EXPECT2(1,0);
 
-  str[0] = 0x0660;
-  str[1] = 0;
-  hres = pVarParseNumFromStr(str, lcid, LOCALE_NOUSEROVERRIDE, &np, rgb);
-  ok(hres == DISP_E_TYPEMISMATCH, "VarParseNumFromStr returned %08x\n", hres);
+  /* Arabic numerals are not allowed "0" */
+  WCONVERT(L"\x660", NUMPRS_STD);
+  EXPECTFAIL;
 }
 
 static HRESULT (WINAPI *pVarNumFromParseNum)(NUMPARSE*,BYTE*,ULONG,VARIANT*);
-- 
2.20.1




More information about the wine-devel mailing list