Windows <= 8.1 uses an obsolete currency symbol for the Swiss Franc and Windows 8.1 incorrectly doubled the right-to-left mark in the Moroccan dirham.
Signed-off-by: Francois Gouget fgouget@codeweavers.com --- The Swiss franc is a nice easy to read example of a three-character currency symbol while the Moroccan dirham is an example of a very long currency symbol (shows that Wine's cCurrencyLocal + cCurrencyLocal2 approach is impractical). --- dlls/oleaut32/tests/vartest.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/dlls/oleaut32/tests/vartest.c b/dlls/oleaut32/tests/vartest.c index c0c20dcf10f..df018c007d4 100644 --- a/dlls/oleaut32/tests/vartest.c +++ b/dlls/oleaut32/tests/vartest.c @@ -2164,14 +2164,26 @@ static void test_VarParseNumFromStrMisc(void)
lcid = MAKELCID(MAKELANGID(LANG_FRENCH,SUBLANG_FRENCH_SWISS),SORT_DEFAULT); WCONVERT(L"3CHF", NUMPRS_CURRENCY|NUMPRS_USE_ALL); - todo_wine EXPECT(1,NUMPRS_CURRENCY|NUMPRS_USE_ALL,NUMPRS_CURRENCY,4,0,0); - EXPECT2(3,FAILDIG); + /* Windows <= 8.1 uses an old currency symbol: "fr. 5" */ + ok(hres == S_OK || broken(hres == DISP_E_TYPEMISMATCH), "returned %08x\n", hres); + if (hres == S_OK) + { + todo_wine EXPECT(1,NUMPRS_CURRENCY|NUMPRS_USE_ALL,NUMPRS_CURRENCY,4,0,0); + EXPECT2(3,FAILDIG); + }
/* 5 Moroccan dirham */ lcid = MAKELCID(MAKELANGID(LANG_ARABIC,SUBLANG_ARABIC_MOROCCO),SORT_DEFAULT); WCONVERT(L"5\x62f.\x645.\x200f", NUMPRS_CURRENCY|NUMPRS_USE_ALL); - todo_wine EXPECT(1,NUMPRS_CURRENCY|NUMPRS_USE_ALL,NUMPRS_CURRENCY,6,0,0); - EXPECT2(5,FAILDIG); + /* Windows 8.1 incorrectly doubles the right-to-left mark: + * "\x62f.\x645.\x200f\x200f 5" + */ + ok(hres == S_OK || broken(hres == DISP_E_TYPEMISMATCH), "returned %08x\n", hres); + if (hres == S_OK) + { + todo_wine EXPECT(1,NUMPRS_CURRENCY|NUMPRS_USE_ALL,NUMPRS_CURRENCY,6,0,0); + EXPECT2(5,FAILDIG); + }
/* Test Arabic numerals in an Arabic locale */
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=94333
Your paranoid android.
=== debiant2 (32 bit report) ===
oleaut32: vartest.c:2168: Test failed: returned 80020005 vartest.c:2181: Test failed: returned 80020005
=== debiant2 (32 bit Arabic:Morocco report) ===
oleaut32: vartest.c:2168: Test failed: returned 80020005 vartest.c:2181: Test failed: returned 80020005
=== debiant2 (32 bit German report) ===
oleaut32: vartest.c:2168: Test failed: returned 80020005 vartest.c:2181: Test failed: returned 80020005
=== debiant2 (32 bit French report) ===
oleaut32: vartest.c:2168: Test failed: returned 80020005 vartest.c:2181: Test failed: returned 80020005
=== debiant2 (32 bit Hebrew:Israel report) ===
oleaut32: vartest.c:2168: Test failed: returned 80020005 vartest.c:2181: Test failed: returned 80020005
=== debiant2 (32 bit Hindi:India report) ===
oleaut32: vartest.c:2168: Test failed: returned 80020005 vartest.c:2181: Test failed: returned 80020005
=== debiant2 (32 bit Japanese:Japan report) ===
oleaut32: vartest.c:2168: Test failed: returned 80020005 vartest.c:2181: Test failed: returned 80020005
=== debiant2 (32 bit Chinese:China report) ===
oleaut32: vartest.c:2168: Test failed: returned 80020005 vartest.c:2181: Test failed: returned 80020005
=== debiant2 (32 bit WoW report) ===
oleaut32: vartest.c:2168: Test failed: returned 80020005 vartest.c:2181: Test failed: returned 80020005
=== debiant2 (64 bit WoW report) ===
oleaut32: vartest.c:2168: Test failed: returned 80020005 vartest.c:2181: Test failed: returned 80020005
On Wed, 21 Jul 2021, Marvin wrote: [...]
=== debiant2 (32 bit report) ===
oleaut32: vartest.c:2168: Test failed: returned 80020005 vartest.c:2181: Test failed: returned 80020005
I forgot that the new tests would fail in Wine. I'll resend.