Alex Villacís Lasso : richedit: EM_STREAMIN tests for richedit 1.0 emulation.
Alexandre Julliard
julliard at winehq.org
Tue Apr 22 06:47:23 CDT 2008
Module: wine
Branch: master
Commit: 54bc660d954ab2021e08de8c7b651c7c0134f3bb
URL: http://source.winehq.org/git/wine.git/?a=commit;h=54bc660d954ab2021e08de8c7b651c7c0134f3bb
Author: Alex Villacís Lasso <a_villacis at palosanto.com>
Date: Mon Apr 21 17:29:29 2008 -0500
richedit: EM_STREAMIN tests for richedit 1.0 emulation.
---
dlls/riched32/tests/editor.c | 95 ++++++++++++++++++++++++++++++++++++++++++
1 files changed, 95 insertions(+), 0 deletions(-)
diff --git a/dlls/riched32/tests/editor.c b/dlls/riched32/tests/editor.c
index 906623f..ac53572 100644
--- a/dlls/riched32/tests/editor.c
+++ b/dlls/riched32/tests/editor.c
@@ -153,6 +153,100 @@ static void test_WM_GETTEXTLENGTH(void)
DestroyWindow(hwndRichEdit);
}
+static DWORD CALLBACK test_EM_STREAMIN_esCallback(DWORD_PTR dwCookie,
+ LPBYTE pbBuff,
+ LONG cb,
+ LONG *pcb)
+{
+ const char** str = (const char**)dwCookie;
+ int size = strlen(*str);
+ *pcb = cb;
+ if (*pcb > size) {
+ *pcb = size;
+ }
+ if (*pcb > 0) {
+ memcpy(pbBuff, *str, *pcb);
+ *str += *pcb;
+ }
+ return 0;
+}
+
+
+static void test_EM_STREAMIN(void)
+{
+ HWND hwndRichEdit = new_richedit(NULL);
+ LRESULT result;
+ EDITSTREAM es;
+ char buffer[1024] = {0};
+
+ const char * streamText1 =
+ "{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang12298{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 System;}}\r\n" \
+ "\\viewkind4\\uc1\\pard\\f0\\fs17 TestSomeText\\par\r\n" \
+ "}\r\n";
+
+ /* This should be accepted in richedit 1.0 emulation. See bug #8326 */
+ const char * streamText2 =
+ "{{\\colortbl;\\red0\\green255\\blue102;\\red255\\green255\\blue255;" \
+ "\\red170\\green255\\blue255;\\red255\\green238\\blue0;\\red51\\green255" \
+ "\\blue221;\\red238\\green238\\blue238;}\\tx0 \\tx424 \\tx848 \\tx1272 " \
+ "\\tx1696 \\tx2120 \\tx2544 \\tx2968 \\tx3392 \\tx3816 \\tx4240 \\tx4664 " \
+ "\\tx5088 \\tx5512 \\tx5936 \\tx6360 \\tx6784 \\tx7208 \\tx7632 \\tx8056 " \
+ "\\tx8480 \\tx8904 \\tx9328 \\tx9752 \\tx10176 \\tx10600 \\tx11024 " \
+ "\\tx11448 \\tx11872 \\tx12296 \\tx12720 \\tx13144 \\cf2 RichEdit1\\line }";
+
+ const char * streamText3 = "RichEdit1";
+
+ es.dwCookie = (DWORD_PTR)&streamText1;
+ es.dwError = 0;
+ es.pfnCallback = test_EM_STREAMIN_esCallback;
+ SendMessage(hwndRichEdit, EM_STREAMIN,
+ (WPARAM)(SF_RTF), (LPARAM)&es);
+
+ result = SendMessage(hwndRichEdit, WM_GETTEXT, 1024, (LPARAM) buffer);
+ todo_wine {
+ ok (result == 12,
+ "EM_STREAMIN: Test 1 returned %ld, expected 12\n", result);
+ }
+ result = strcmp (buffer,"TestSomeText");
+ todo_wine {
+ ok (result == 0,
+ "EM_STREAMIN: Test 1 set wrong text: Result: %s\n",buffer);
+ }
+
+
+ es.dwCookie = (DWORD_PTR)&streamText2;
+ SendMessage(hwndRichEdit, EM_STREAMIN,
+ (WPARAM)(SF_RTF), (LPARAM)&es);
+
+ result = SendMessage(hwndRichEdit, WM_GETTEXT, 1024, (LPARAM) buffer);
+ todo_wine {
+ ok (result == 9,
+ "EM_STREAMIN: Test 2 returned %ld, expected 9\n", result);
+ }
+ result = strcmp (buffer,"RichEdit1");
+ todo_wine {
+ ok (result == 0,
+ "EM_STREAMIN: Test 2 set wrong text: Result: %s\n",buffer);
+ }
+
+ es.dwCookie = (DWORD_PTR)&streamText3;
+ SendMessage(hwndRichEdit, EM_STREAMIN,
+ (WPARAM)(SF_RTF), (LPARAM)&es);
+
+ result = SendMessage(hwndRichEdit, WM_GETTEXT, 1024, (LPARAM) buffer);
+ todo_wine {
+ ok (result == 0,
+ "EM_STREAMIN: Test 3 returned %ld, expected 9\n", result);
+ }
+ todo_wine {
+ ok (strlen(buffer) == 0,
+ "EM_STREAMIN: Test 3 set wrong text: Result: %s\n",buffer);
+ }
+
+ DestroyWindow(hwndRichEdit);
+}
+
+
START_TEST( editor )
{
MSG msg;
@@ -165,6 +259,7 @@ START_TEST( editor )
test_WM_SETTEXT();
test_WM_GETTEXTLENGTH();
+ test_EM_STREAMIN();
/* Set the environment variable WINETEST_RICHED32 to keep windows
* responsive and open for 30 seconds. This is useful for debugging.
More information about the wine-cvs
mailing list