Module: wine Branch: master Commit: 18f7f637b01e5b0ea0a27ce398aefbf851cf1304 URL: http://source.winehq.org/git/wine.git/?a=commit;h=18f7f637b01e5b0ea0a27ce398...
Author: Piotr Caban piotr@codeweavers.com Date: Sat Nov 16 16:31:13 2013 +0100
kernel32/tests: Fix IdnToNameprepUnicode tests.
---
dlls/kernel32/tests/locale.c | 55 ++++++++++++++++++++++++----------------- 1 files changed, 32 insertions(+), 23 deletions(-)
diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c index 60dea78..62e9f01 100644 --- a/dlls/kernel32/tests/locale.c +++ b/dlls/kernel32/tests/locale.c @@ -3107,6 +3107,7 @@ static void test_IdnToNameprepUnicode(void) DWORD in_len; const WCHAR in[64]; DWORD ret; + DWORD broken_ret; const WCHAR out[64]; DWORD flags; DWORD err; @@ -3114,77 +3115,77 @@ static void test_IdnToNameprepUnicode(void) } test_data[] = { { 5, {'t','e','s','t',0}, - 5, {'t','e','s','t',0}, + 5, 5, {'t','e','s','t',0}, 0, 0xdeadbeef }, { 3, {'a',0xe111,'b'}, - 0, {0}, + 0, 0, {0}, 0, ERROR_INVALID_NAME }, { 4, {'t',0,'e',0}, - 0, {0}, + 0, 0, {0}, 0, ERROR_INVALID_NAME }, { 1, {'T',0}, - 1, {'T',0}, + 1, 1, {'T',0}, 0, 0xdeadbeef }, { 1, {0}, - 0, {0}, + 0, 0, {0}, 0, ERROR_INVALID_NAME }, { 6, {' ','-','/','[',']',0}, - 6, {' ','-','/','[',']',0}, + 6, 6, {' ','-','/','[',']',0}, 0, 0xdeadbeef }, { 3, {'a','-','a'}, - 3, {'a','-','a'}, + 3, 3, {'a','-','a'}, IDN_USE_STD3_ASCII_RULES, 0xdeadbeef }, { 3, {'a','a','-'}, - 0, {0}, + 0, 0, {0}, IDN_USE_STD3_ASCII_RULES, ERROR_INVALID_NAME }, { /* FoldString is not working as expected when MAP_FOLDCZONE is specified (composition+compatibility) */ 10, {'T',0xdf,0x130,0x143,0x37a,0x6a,0x30c,' ',0xaa,0}, - 12, {'t','s','s','i',0x307,0x144,' ',0x3b9,0x1f0,' ','a',0}, + 12, 12, {'t','s','s','i',0x307,0x144,' ',0x3b9,0x1f0,' ','a',0}, 0, 0xdeadbeef, TRUE }, { 11, {'t',0xad,0x34f,0x1806,0x180b,0x180c,0x180d,0x200b,0x200c,0x200d,0}, - 2, {'t',0}, + 2, 0, {'t',0}, 0, 0xdeadbeef }, { /* Another example of incorrectly working FoldString (composition) */ 2, {0x3b0, 0}, - 2, {0x3b0, 0}, + 2, 2, {0x3b0, 0}, 0, 0xdeadbeef, TRUE }, { 2, {0x221, 0}, - 0, {0}, + 0, 2, {0}, 0, ERROR_NO_UNICODE_TRANSLATION }, { 2, {0x221, 0}, - 2, {0x221, 0}, + 2, 2, {0x221, 0}, IDN_ALLOW_UNASSIGNED, 0xdeadbeef }, { 5, {'a','.','.','a',0}, - 0, {0}, + 0, 0, {0}, 0, ERROR_INVALID_NAME }, { 3, {'a','.',0}, - 3, {'a','.',0}, + 3, 3, {'a','.',0}, 0, 0xdeadbeef }, }; @@ -3253,15 +3254,23 @@ static void test_IdnToNameprepUnicode(void) ret = pIdnToNameprepUnicode(test_data[i].flags, test_data[i].in, test_data[i].in_len, buf, sizeof(buf)/sizeof(WCHAR)); err = GetLastError(); - if(!test_data[i].todo) { - ok(ret == test_data[i].ret, "%d) ret = %d\n", i, ret); - ok(err == test_data[i].err, "%d) err = %d\n", i, err); - ok(!memcmp(test_data[i].out, buf, ret*sizeof(WCHAR)), - "%d) buf = %s\n", i, wine_dbgstr_wn(buf, ret)); - }else { - todo_wine ok(!memcmp(test_data[i].out, buf, ret*sizeof(WCHAR)), - "%d) buf = %s\n", i, wine_dbgstr_wn(buf, ret)); + + if (!test_data[i].todo) + { + ok(ret == test_data[i].ret || + broken(ret == test_data[i].broken_ret), "%d) ret = %d\n", i, ret); } + else + { + todo_wine ok(ret == test_data[i].ret || + broken(ret == test_data[i].broken_ret), "%d) ret = %d\n", i, ret); + } + if(ret != test_data[i].ret) + continue; + + ok(err == test_data[i].err, "%d) err = %d\n", i, err); + ok(!memcmp(test_data[i].out, buf, ret*sizeof(WCHAR)), + "%d) buf = %s\n", i, wine_dbgstr_wn(buf, ret)); } }