riched20/tests: Add tests for ITextDocument::Open about dealing with rtf.

Jactry Zeng jactry92 at gmail.com
Fri Mar 14 11:50:32 CDT 2014


-------------- next part --------------
From 4b124d86198a9ed553a5f6cfd924584769495a1f Mon Sep 17 00:00:00 2001
From: Jactry Zeng <jactry92 at gmail.com>
Date: Sat, 15 Mar 2014 00:39:57 +0800
Subject: riched20/tests: Add tests for ITextDocument::Open about dealing with
 rtf.

---
 dlls/riched20/tests/richole.c | 70 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 70 insertions(+)

diff --git a/dlls/riched20/tests/richole.c b/dlls/riched20/tests/richole.c
index 5bfb999..eccc1fb 100644
--- a/dlls/riched20/tests/richole.c
+++ b/dlls/riched20/tests/richole.c
@@ -159,12 +159,16 @@ static void test_ITextDocument_Open(void)
   HANDLE hFile;
   VARIANT testfile;
   WCHAR filename[] = {'t', 'e', 's', 't','.','t','x','t', 0};
+  WCHAR rtffile[] = {'t', 'e', 's', 't', '.', 'r', 't', 'f', 0};
   int result;
   DWORD dw;
   static const CHAR chACP[] = "TestSomeText";
   static const CHAR chUTF8[] = "\xef\xbb\xbfTextWithUTF8BOM";
   static const WCHAR chUTF16[] = {0xfeff, 'T', 'e', 's', 't', 'S', 'o', 'm',
                                   'e', 'T', 'e', 'x', 't', 0};
+  const char rtftext[] = "{\\rtf TestSomeText}";
+  const char urtftext[] = "{\\urtf TestSomeText}";
+  const char badrtftext[] = "{\\rtf TestSomeText";
 
 #define MAX_BUF_LEN 1024
   CHAR bufACP[MAX_BUF_LEN];
@@ -379,6 +383,72 @@ static void test_ITextDocument_Open(void)
   release_interfaces(&w, &reOle, &txtDoc, &txtSel);
   DeleteFileW(filename);
 
+  /* tests for rtf */
+  hFile = CreateFileW(filename, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS,
+                      FILE_ATTRIBUTE_NORMAL, NULL);
+  WriteFile(hFile, chACP, sizeof(chACP), &dw, NULL);
+  CloseHandle(hFile);
+  create_interfaces(&w, &reOle, &txtDoc, &txtSel);
+  ITextDocument_Open(txtDoc, &testfile, tomReadOnly|tomRTF, CP_ACP);
+  result = SendMessageA(w, WM_GETTEXT, 1024, (LPARAM)bufACP);
+  todo_wine ok(result == 13, "ITextDocument_Open: Test txt with tomRTF returned %d, expected 13\n", result);
+  todo_wine ok(!strcmp(bufACP, chACP), "TextDocument_Open: Test txt with tomRTF set wrong text: %s\n", bufACP);
+  release_interfaces(&w, &reOle, &txtDoc, &txtSel);
+  DeleteFileW(filename);
+
+  V_BSTR(&testfile) = SysAllocString(rtffile);
+
+  hFile = CreateFileW(rtffile, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS,
+                      FILE_ATTRIBUTE_NORMAL, NULL);
+  WriteFile(hFile, rtftext, sizeof(rtftext), &dw, NULL);
+  CloseHandle(hFile);
+  create_interfaces(&w, &reOle, &txtDoc, &txtSel);
+  ITextDocument_Open(txtDoc, &testfile, tomReadOnly, CP_ACP);
+  result = SendMessageA(w, WM_GETTEXT, 1024, (LPARAM)bufACP);
+  todo_wine ok(result == 12, "ITextDocument_Open: Test rtf returned %d, expected 12\n", result);
+  todo_wine ok(!strcmp(bufACP, chACP), "TextDocument_Open: Test rtf set wrong text: %s\n", bufACP);
+  release_interfaces(&w, &reOle, &txtDoc, &txtSel);
+  DeleteFileW(rtffile);
+
+  hFile = CreateFileW(rtffile, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS,
+                      FILE_ATTRIBUTE_NORMAL, NULL);
+  WriteFile(hFile, urtftext, sizeof(urtftext), &dw, NULL);
+  CloseHandle(hFile);
+  create_interfaces(&w, &reOle, &txtDoc, &txtSel);
+  ITextDocument_Open(txtDoc, &testfile, tomReadOnly, CP_ACP);
+  result = SendMessageA(w, WM_GETTEXT, 1024, (LPARAM)bufACP);
+  todo_wine ok(result == 12, "ITextDocument_Open: Test urtf returned %d, expected 12\n", result);
+  todo_wine ok(!strcmp(bufACP, chACP), "TextDocument_Open: Test urtf set wrong text: %s\n", bufACP);
+  release_interfaces(&w, &reOle, &txtDoc, &txtSel);
+  DeleteFileW(rtffile);
+
+  hFile = CreateFileW(rtffile, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS,
+                      FILE_ATTRIBUTE_NORMAL, NULL);
+  WriteFile(hFile, rtftext, sizeof(rtftext), &dw, NULL);
+  CloseHandle(hFile);
+  create_interfaces(&w, &reOle, &txtDoc, &txtSel);
+  ITextDocument_Open(txtDoc, &testfile, tomText, CP_ACP);
+  result = SendMessageA(w, WM_GETTEXT, 1024, (LPARAM)bufACP);
+  todo_wine ok(result == 20, "ITextDocument_Open: Test rtf with tomText returned %d, expected 20\n", result);
+  todo_wine ok(!strcmp(bufACP, rtftext), "TextDocument_Open: Test rtf with tomText set wrong text: %s\n", bufACP);
+  release_interfaces(&w, &reOle, &txtDoc, &txtSel);
+  DeleteFileW(rtffile);
+
+  hFile = CreateFileW(rtffile, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS,
+                      FILE_ATTRIBUTE_NORMAL, NULL);
+  WriteFile(hFile, badrtftext, sizeof(badrtftext), &dw, NULL);
+  CloseHandle(hFile);
+  create_interfaces(&w, &reOle, &txtDoc, &txtSel);
+  /* open a rtf without } in the end */
+  result = ITextDocument_Open(txtDoc, &testfile, tomReadOnly, CP_ACP);
+  /* 0x80070026 is HRESUILT_FROM_WIN32(ERROR_HANDLE_EOF) */
+  ok(result == 0x80070026, "ITextDocument_Open: Should return an ERROR_HANDLE_EOF error.\n");
+  result = SendMessageA(w, WM_GETTEXT, 1024, (LPARAM)bufACP);
+  todo_wine ok(result == 13, "ITextDocument_Open: Test bad rtf returned %d, expected 13\n", result);
+  todo_wine ok(!strcmp(bufACP, "TestSomeText "), "TextDocument_Open: Test bad rtf set wrong text: %s\n", bufACP);
+  release_interfaces(&w, &reOle, &txtDoc, &txtSel);
+  DeleteFileW(rtffile);
+
   VariantClear(&testfile);
 }
 
-- 
1.8.3.2



More information about the wine-patches mailing list