This first patch only improves the error reporting. When it is committed I'll send another one that makes it work on Win9x. Changelog: * dlls/kernel/tests/format_msg.c Improve error reporting Index: dlls/kernel/tests/format_msg.c =================================================================== RCS file: /home/wine/wine/dlls/kernel/tests/format_msg.c,v retrieving revision 1.1 diff -u -r1.1 format_msg.c --- dlls/kernel/tests/format_msg.c 20 Aug 2002 00:32:48 -0000 1.1 +++ dlls/kernel/tests/format_msg.c 18 Dec 2002 02:45:07 -0000 @@ -44,177 +44,177 @@ /* the basics */ r = FormatMessageA(FORMAT_MESSAGE_FROM_STRING, "test", 0, 0, out, sizeof out/sizeof (CHAR),NULL); - ok(!strcmp("test", out),"failed"); - ok(r==4,"failed"); + ok(!strcmp("test", out),"failed out=[%s]",out); + ok(r==4,"failed: r=%ld",r); /* using the format feature */ r = doit(FORMAT_MESSAGE_FROM_STRING, "%1!s!", 0, 0, out, sizeof out/sizeof (CHAR), "test"); - ok(!strcmp("test", out),"failed"); - ok(r==4,"failed"); + ok(!strcmp("test", out),"failed out=[%s]",out); + ok(r==4,"failed: r=%ld",r); /* no format */ r = doit(FORMAT_MESSAGE_FROM_STRING, "%1", 0, 0, out, sizeof out/sizeof (CHAR), "test"); - ok(!strcmp("test", out),"failed"); - ok(r==4,"failed"); + ok(!strcmp("test", out),"failed out=[%s]",out); + ok(r==4,"failed: r=%ld",r); /* two pieces */ r = doit(FORMAT_MESSAGE_FROM_STRING, "%1%2", 0, 0, out, sizeof out/sizeof (CHAR), "te","st"); - ok(!strcmp("test", out),"failed"); - ok(r==4,"failed"); + ok(!strcmp("test", out),"failed out=[%s]",out); + ok(r==4,"failed: r=%ld",r); /* three pieces */ r = doit(FORMAT_MESSAGE_FROM_STRING, "%1%3%2%1", 0, 0, out, sizeof out/sizeof (CHAR), "t","s","e"); - ok(!strcmp("test", out),"failed"); - ok(r==4,"failed"); + ok(!strcmp("test", out),"failed out=[%s]",out); + ok(r==4,"failed: r=%ld",r); /* s doesn't seem to work in format strings */ r = doit(FORMAT_MESSAGE_FROM_STRING, "%!s!", 0, 0, out, sizeof out/sizeof (CHAR), "test"); - ok(!strcmp("!s!", out),"failed"); - ok(r==3,"failed"); + ok(!strcmp("!s!", out),"failed out=[%s]",out); + ok(r==3,"failed: r=%ld",r); /* S is unicode */ r = doit(FORMAT_MESSAGE_FROM_STRING, "%1!S!", 0, 0, out, sizeof out/sizeof (CHAR), szwTest); - ok(!strcmp("test", out),"failed"); - ok(r==4,"failed"); + ok(!strcmp("test", out),"failed out=[%s]",out); + ok(r==4,"failed: r=%ld",r); /* as characters */ r = doit(FORMAT_MESSAGE_FROM_STRING, "%1!c!%2!c!%3!c!%1!c!", 0, 0, out, sizeof out/sizeof (CHAR), 't','e','s'); - ok(!strcmp("test", out),"failed"); - ok(r==4,"failed"); + ok(!strcmp("test", out),"failed out=[%s]",out); + ok(r==4,"failed: r=%ld",r); /* some numbers */ r = doit(FORMAT_MESSAGE_FROM_STRING, "%1!d!%2!d!%3!d!", 0, 0, out, sizeof out/sizeof (CHAR), 1,2,3); - ok(!strcmp("123", out),"failed"); - ok(r==3,"failed"); + ok(!strcmp("123", out),"failed out=[%s]",out); + ok(r==3,"failed: r=%ld",r); /* a single digit with some spacing */ r = doit(FORMAT_MESSAGE_FROM_STRING, "%1!4d!", 0, 0, out, sizeof out/sizeof (CHAR), 1); - ok(!strcmp(" 1", out),"failed"); - ok(r==4,"failed"); + ok(!strcmp(" 1", out),"failed out=[%s]",out); + ok(r==4,"failed: r=%ld",r); /* a single digit, left justified */ r = doit(FORMAT_MESSAGE_FROM_STRING, "%1!-4d!", 0, 0, out, sizeof out/sizeof (CHAR), 1); - ok(!strcmp("1 ", out),"failed"); - ok(r==4,"failed"); + ok(!strcmp("1 ", out),"failed out=[%s]",out); + ok(r==4,"failed: r=%ld",r); /* two digit decimal number */ r = doit(FORMAT_MESSAGE_FROM_STRING, "%1!4d!", 0, 0, out, sizeof out/sizeof (CHAR), 11); - ok(!strcmp(" 11", out),"failed"); - ok(r==4,"failed"); + ok(!strcmp(" 11", out),"failed out=[%s]",out); + ok(r==4,"failed: r=%ld",r); /* a hex number */ r = doit(FORMAT_MESSAGE_FROM_STRING, "%1!4x!", 0, 0, out, sizeof out/sizeof (CHAR), 11); - ok(!strcmp(" b", out),"failed"); - ok(r==4,"failed"); + ok(!strcmp(" b", out),"failed out=[%s]",out); + ok(r==4,"failed: r=%ld",r); /* a hex number, upper case */ r = doit(FORMAT_MESSAGE_FROM_STRING, "%1!4X!", 0, 0, out, sizeof out/sizeof (CHAR), 11); - ok(!strcmp(" B", out),"failed"); - ok(r==4,"failed"); + ok(!strcmp(" B", out),"failed out=[%s]",out); + ok(r==4,"failed: r=%ld",r); /* a hex number, upper case, left justified */ r = doit(FORMAT_MESSAGE_FROM_STRING, "%1!-4X!", 0, 0, out, sizeof out/sizeof (CHAR), 11); - ok(!strcmp("B ", out),"failed"); - ok(r==4,"failed"); + ok(!strcmp("B ", out),"failed out=[%s]",out); + ok(r==4,"failed: r=%ld",r); /* a long hex number, upper case */ r = doit(FORMAT_MESSAGE_FROM_STRING, "%1!4X!", 0, 0, out, sizeof out/sizeof (CHAR), 0x1ab); - ok(!strcmp(" 1AB", out),"failed"); - ok(r==4,"failed"); + ok(!strcmp(" 1AB", out),"failed out=[%s]",out); + ok(r==4,"failed: r=%ld",r); /* two percent... */ r = doit(FORMAT_MESSAGE_FROM_STRING, " %%%% ", 0, 0, out, sizeof out/sizeof (CHAR)); - ok(!strcmp(" %% ", out),"failed"); - ok(r==4,"failed"); + ok(!strcmp(" %% ", out),"failed out=[%s]",out); + ok(r==4,"failed: r=%ld",r); /* periods are special cases */ r = doit(FORMAT_MESSAGE_FROM_STRING, " %.%. %1!d!", 0, 0, out, sizeof out/sizeof (CHAR), 0x1ab); - ok(!strcmp(" .. 427", out),"failed"); - ok(r==7,"failed"); + ok(!strcmp(" .. 427", out),"failed out=[%s]",out); + ok(r==7,"failed: r=%ld",r); /* %0 ends the line */ r = doit(FORMAT_MESSAGE_FROM_STRING, "test%0test", 0, 0, out, sizeof out/sizeof (CHAR)); - ok(!strcmp("test", out),"failed"); - ok(r==4,"failed"); + ok(!strcmp("test", out),"failed out=[%s]",out); + ok(r==4,"failed: r=%ld",r); /* %! prints an exclaimation */ r = doit(FORMAT_MESSAGE_FROM_STRING, "yah%!%0 ", 0, 0, out, sizeof out/sizeof (CHAR)); - ok(!strcmp("yah!", out),"failed"); - ok(r==4,"failed"); + ok(!strcmp("yah!", out),"failed out=[%s]",out); + ok(r==4,"failed: r=%ld",r); /* %space */ r = doit(FORMAT_MESSAGE_FROM_STRING, "% % ", 0, 0, out, sizeof out/sizeof (CHAR)); - ok(!strcmp(" ", out),"failed"); - ok(r==4,"failed"); + ok(!strcmp(" ", out),"failed out=[%s]",out); + ok(r==4,"failed: r=%ld",r); /* line feed */ r = doit(FORMAT_MESSAGE_FROM_STRING, "hi\n", 0, 0, out, sizeof out/sizeof (CHAR)); - ok(!strcmp("hi\r\n", out),"failed"); - ok(r==4,"failed"); + ok(!strcmp("hi\r\n", out),"failed out=[%s]",out); + ok(r==4,"failed: r=%ld",r); /* carriage return line feed */ r = doit(FORMAT_MESSAGE_FROM_STRING, "hi\r\n", 0, 0, out, sizeof out/sizeof (CHAR)); - ok(!strcmp("hi\r\n", out),"failed"); - ok(r==4,"failed"); + ok(!strcmp("hi\r\n", out),"failed out=[%s]",out); + ok(r==4,"failed: r=%ld",r); /* carriage return line feed */ r = doit(FORMAT_MESSAGE_FROM_STRING, "\r", 0, 0, out, sizeof out/sizeof (CHAR)); - ok(!strcmp("\r\n", out),"failed"); - ok(r==2,"failed"); + ok(!strcmp("\r\n", out),"failed out=[%s]",out); + ok(r==2,"failed: r=%ld",r); /* carriage return line feed */ r = doit(FORMAT_MESSAGE_FROM_STRING, "\r\r\n", 0, 0, out, sizeof out/sizeof (CHAR)); - ok(!strcmp("\r\n\r\n", out),"failed"); - ok(r==4,"failed"); + ok(!strcmp("\r\n\r\n", out),"failed out=[%s]",out); + ok(r==4,"failed: r=%ld",r); /* change of pace... test the low byte of dwflags */ /* line feed */ r = doit(FORMAT_MESSAGE_FROM_STRING | FORMAT_MESSAGE_MAX_WIDTH_MASK, "hi\n", 0, 0, out, sizeof out/sizeof (CHAR)); - ok(!strcmp("hi ", out),"failed"); - ok(r==3,"failed"); + ok(!strcmp("hi ", out), out),"failed out=[%s]",out); + ok(r==3,"failed: r=%ld",r); /* carriage return line feed */ r = doit(FORMAT_MESSAGE_FROM_STRING | FORMAT_MESSAGE_MAX_WIDTH_MASK, "hi\r\n", 0, 0, out, sizeof out/sizeof (CHAR)); - ok(!strcmp("hi ", out),"failed"); - ok(r==3,"failed"); + ok(!strcmp("hi ", out),"failed out=[%s]",out); + ok(r==3,"failed: r=%ld",r); /* carriage return line feed */ r = doit(FORMAT_MESSAGE_FROM_STRING | FORMAT_MESSAGE_MAX_WIDTH_MASK, "\r", 0, 0, out, sizeof out/sizeof (CHAR)); - ok(!strcmp(" ", out),"failed"); - ok(r==1,"failed"); + ok(!strcmp(" ", out),"failed out=[%s]",out); + ok(r==1,"failed: r=%ld",r); /* carriage return line feed */ r = doit(FORMAT_MESSAGE_FROM_STRING | FORMAT_MESSAGE_MAX_WIDTH_MASK, "\r\r\n", 0, 0, out, sizeof out/sizeof (CHAR)); - ok(!strcmp(" ", out),"failed"); - ok(r==2,"failed"); + ok(!strcmp(" ", out),"failed out=[%s]",out); + ok(r==2,"failed: r=%ld",r); } START_TEST(format_msg) -- Francois Gouget fgouget@free.fr http://fgouget.free.fr/ Good judgment comes from experience, and experience comes from bad judgment -- Barry LePatner