Alex Villacís Lasso : riched20: Tests show WM_GETTEXT change \r to \r\n.

Alexandre Julliard julliard at winehq.org
Mon Sep 24 08:07:56 CDT 2007


Module: wine
Branch: master
Commit: 47316d62bb82b7f46c5f759ceea159c47992f864
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=47316d62bb82b7f46c5f759ceea159c47992f864

Author: Alex Villacís Lasso <a_villacis at palosanto.com>
Date:   Sun Sep 23 00:59:33 2007 -0500

riched20: Tests show WM_GETTEXT change \r to \r\n.

---

 dlls/riched20/tests/editor.c |   92 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 92 insertions(+), 0 deletions(-)

diff --git a/dlls/riched20/tests/editor.c b/dlls/riched20/tests/editor.c
index 5c00586..a0b04e0 100644
--- a/dlls/riched20/tests/editor.c
+++ b/dlls/riched20/tests/editor.c
@@ -910,6 +910,71 @@ static void test_ES_PASSWORD(void)
   DestroyWindow(hwndRichEdit);
 }
 
+static void test_WM_SETTEXT()
+{
+  HWND hwndRichEdit = new_richedit(NULL);
+  const char * TestItem1 = "TestSomeText";
+  const char * TestItem2 = "TestSomeText\r";
+  const char * TestItem2_after = "TestSomeText\r\n";
+  const char * TestItem3 = "TestSomeText\rSomeMoreText\r";
+  const char * TestItem3_after = "TestSomeText\r\nSomeMoreText\r\n";
+  char buf[1024] = {0};
+  LRESULT result;
+
+  /* This test attempts to show that WM_SETTEXT on a riched20 control causes
+     any solitary \r to be converted to \r\n on return. Properly paired
+     \r\n are not affected.
+   */
+
+  result = SendMessage(hwndRichEdit, WM_SETTEXT, 0, (LPARAM) TestItem1);
+  ok (result == 1, "WM_SETTEXT returned %ld instead of 1\n", result);
+  result = SendMessage(hwndRichEdit, WM_GETTEXT, 1024, (LPARAM) buf);
+  ok (result == strlen(buf),
+	"WM_GETTEXT returned %ld instead of expected %u\n",
+	result, strlen(buf));
+  result = strcmp(TestItem1, buf);
+  ok(result == 0,
+        "WM_SETTEXT round trip: strcmp = %ld\n", result);
+
+  result = SendMessage(hwndRichEdit, WM_SETTEXT, 0, (LPARAM) TestItem2);
+  ok (result == 1, "WM_SETTEXT returned %ld instead of 1\n", result);
+  result = SendMessage(hwndRichEdit, WM_GETTEXT, 1024, (LPARAM) buf);
+  ok (result == strlen(buf),
+	"WM_GETTEXT returned %ld instead of expected %u\n",
+	result, strlen(buf));
+  result = strcmp(TestItem2_after, buf);
+  todo_wine {
+  ok(result == 0,
+        "WM_SETTEXT round trip: strcmp = %ld\n", result);
+  }
+
+  result = SendMessage(hwndRichEdit, WM_SETTEXT, 0, (LPARAM) TestItem3);
+  ok (result == 1, "WM_SETTEXT returned %ld instead of 1\n", result);
+  result = SendMessage(hwndRichEdit, WM_GETTEXT, 1024, (LPARAM) buf);
+  ok (result == strlen(buf),
+	"WM_GETTEXT returned %ld instead of expected %u\n",
+	result, strlen(buf));
+  result = strcmp(TestItem3_after, buf);
+  todo_wine {
+  ok(result == 0,
+        "WM_SETTEXT round trip: strcmp = %ld\n", result);
+  }
+
+  result = SendMessage(hwndRichEdit, WM_SETTEXT, 0, (LPARAM) TestItem3_after);
+  ok (result == 1, "WM_SETTEXT returned %ld instead of 1\n", result);
+  result = SendMessage(hwndRichEdit, WM_GETTEXT, 1024, (LPARAM) buf);
+  ok (result == strlen(buf),
+	"WM_GETTEXT returned %ld instead of expected %u\n",
+	result, strlen(buf));
+  result = strcmp(TestItem3_after, buf);
+  todo_wine {
+  ok(result == 0,
+        "WM_SETTEXT round trip: strcmp = %ld\n", result);
+  }
+
+  DestroyWindow(hwndRichEdit);
+}
+
 static void test_EM_SETTEXTEX(void)
 {
   HWND hwndRichEdit = new_richedit(NULL);
@@ -918,6 +983,11 @@ static void test_EM_SETTEXTEX(void)
   WCHAR TestItem1[] = {'T', 'e', 's', 't', 
                        'S', 'o', 'm', 'e', 
                        'T', 'e', 'x', 't', 0}; 
+  WCHAR TestItem2[] = {'T', 'e', 's', 't',
+                       'S', 'o', 'm', 'e',
+                       'T', 'e', 'x', 't',
+		       '\r', 0};
+  const char * TestItem2_after = "TestSomeText\r\n";
 #define MAX_BUF_LEN 1024
   WCHAR buf[MAX_BUF_LEN];
   int result;
@@ -934,6 +1004,27 @@ static void test_EM_SETTEXTEX(void)
   ok(lstrcmpW(buf, TestItem1) == 0,
       "EM_GETTEXTEX results not what was set by EM_SETTEXTEX\n");
 
+  /* Unlike WM_SETTEXT/WM_GETTEXT pair, EM_SETTEXTEX/EM_GETTEXTEX does not
+     convert \r to \r\n on return
+   */
+  setText.codepage = 1200;  /* no constant for unicode */
+  getText.codepage = 1200;  /* no constant for unicode */
+  getText.cb = MAX_BUF_LEN;
+  getText.flags = GT_DEFAULT;
+
+  setText.flags = 0;
+  SendMessage(hwndRichEdit, EM_SETTEXTEX, (WPARAM)&setText, (LPARAM) TestItem2);
+  SendMessage(hwndRichEdit, EM_GETTEXTEX, (WPARAM)&getText, (LPARAM) buf);
+  ok(lstrcmpW(buf, TestItem2) == 0,
+      "EM_GETTEXTEX results not what was set by EM_SETTEXTEX\n");
+
+  /* However, WM_GETTEXT *does* see \r\n where EM_GETTEXTEX would see \r */
+  SendMessage(hwndRichEdit, WM_GETTEXT, MAX_BUF_LEN, (LPARAM)buf);
+  todo_wine {
+  ok(strcmp((const char *)buf, TestItem2_after) == 0,
+      "WM_GETTEXT did *not* see \\r converted to \\r\\n pairs.\n");
+  }
+
   result = SendMessage(hwndRichEdit, EM_SETTEXTEX, 
                        (WPARAM)&setText, (LPARAM) NULL);
   SendMessage(hwndRichEdit, EM_GETTEXTEX, (WPARAM)&getText, (LPARAM) buf);
@@ -2031,6 +2122,7 @@ START_TEST( editor )
   test_EM_GETLINE();
   test_EM_SCROLLCARET();
   test_EM_SCROLL();
+  test_WM_SETTEXT();
   test_EM_SETTEXTMODE();
   test_TM_PLAINTEXT();
   test_EM_SETOPTIONS();




More information about the wine-cvs mailing list