riched20/tests: Add tests for ITextDocument_Save. (try 2)
Jactry Zeng
jactry92 at gmail.com
Wed Sep 11 07:39:10 CDT 2013
Update: Add todo_wine
-------------- next part --------------
From 8f464b1ffa384ffba25af5041065c23d21ede041 Mon Sep 17 00:00:00 2001
From: Jactry Zeng <jactry92 at gmail.com>
Date: Wed, 11 Sep 2013 18:06:02 +0800
Subject: riched20/tests: Add tests for ITextDocument_Save.
To: wine-patches <wine-patches at winehq.org>
Reply-To: wine-devel <wine-devel at winehq.org>
---
dlls/riched20/tests/richole.c | 102 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 102 insertions(+)
diff --git a/dlls/riched20/tests/richole.c b/dlls/riched20/tests/richole.c
index 1bd0be9..71e456e 100644
--- a/dlls/riched20/tests/richole.c
+++ b/dlls/riched20/tests/richole.c
@@ -93,6 +93,22 @@ static void release_interfaces(HWND *w, IRichEditOle **reOle, ITextDocument **tx
ITextSelection_Release(*txtSel);
}
+static BOOL compare_text_with_file(LPWSTR filename, const CHAR *str, LPSTR *chBuffer)
+{
+ int size;
+ HANDLE hFile;
+ DWORD dwReadSize;
+
+ hFile = CreateFileW(filename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING,
+ FILE_ATTRIBUTE_NORMAL, NULL);
+ size = GetFileSize(hFile, NULL);
+ *chBuffer = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size+2);
+ ReadFile(hFile, *chBuffer, size+2, &dwReadSize, NULL);
+ CloseHandle(hFile);
+
+ return strcmp(*chBuffer, str);
+}
+
static void test_Interfaces(void)
{
IRichEditOle *reOle = NULL;
@@ -331,6 +347,91 @@ static void test_ITextDocument_Open(void)
DeleteFileW(filename);
}
+static void test_ITextDocument_Save(void)
+{
+ IRichEditOle *reOle = NULL;
+ ITextDocument *txtDoc = NULL;
+ ITextSelection *txtSel = NULL;
+ HRESULT hres;
+ HWND w;
+ VARIANT testfile;
+ SETTEXTEX setText;
+ LPSTR chBuffer;
+ int result = 0;
+ WCHAR filename[] = {'t', 'e', 's', 't','.','t','x','t', 0};
+
+ static const int tomConstantsSingle[] =
+ {
+ tomCreateAlways, tomOpenExisting, tomOpenAlways,
+ tomTruncateExisting
+ };
+
+ int tomNumSingle = sizeof(tomConstantsSingle)/sizeof(tomConstantsSingle[0]);
+ int i;
+ VariantInit(&testfile);
+ V_VT(&testfile) = VT_BSTR;
+ V_BSTR(&testfile) = SysAllocString(filename);
+
+ for(i=0; i < tomNumSingle; i++)
+ {
+ touch_file(filename);
+ create_interfaces(&w, &reOle, &txtDoc, &txtSel);
+ hres = ITextDocument_Save(txtDoc, &testfile, tomConstantsSingle[i], CP_ACP);
+ todo_wine ok(hres == S_OK, "ITextDocument_Save: Filename:test.txt Flags:0x%x Codepage:CP_ACP hres:0x%x\n",
+ tomConstantsSingle[i], hres);
+ release_interfaces(&w, &reOle, &txtDoc, &txtSel);
+ DeleteFileW(filename);
+
+ touch_file(filename);
+ create_interfaces(&w, &reOle, &txtDoc, &txtSel);
+ hres = ITextDocument_Save(txtDoc, &testfile, tomConstantsSingle[i], CP_UTF8);
+ todo_wine ok(hres == S_OK, "ITextDocument_Save: Filename:test.txt Flags:0x%x Codepage:CP_UTF8 hres:0x%x\n",
+ tomConstantsSingle[i], hres);
+ release_interfaces(&w, &reOle, &txtDoc, &txtSel);
+ DeleteFileW(filename);
+ }
+
+ create_interfaces(&w, &reOle, &txtDoc, &txtSel);
+ setText.flags = 0;
+ setText.codepage = CP_UTF8;
+ SendMessage(w, EM_SETTEXTEX, (WPARAM)&setText, (LPARAM)"\xef\xbb\xbfTestUTF8WithBOM");
+ ITextDocument_Save(txtDoc, &testfile, tomCreateAlways, CP_ACP);
+ release_interfaces(&w, &reOle, &txtDoc, &txtSel);
+ result = compare_text_with_file(filename, "TestUTF8WithBOM", &chBuffer);
+ todo_wine ok(result == 0, "ITextDocument_Save: Save UTF8 with BOM as ASCII got wrong text: %s\n", chBuffer);
+ DeleteFileW(filename);
+
+ create_interfaces(&w, &reOle, &txtDoc, &txtSel);
+ setText.flags = 0;
+ setText.codepage = CP_UTF8;
+ SendMessage(w, EM_SETTEXTEX, (WPARAM)&setText, (LPARAM)"\xef\xbb\xbfTestUTF8WithBOM");
+ ITextDocument_Save(txtDoc, &testfile, tomCreateAlways, CP_UTF8);
+ release_interfaces(&w, &reOle, &txtDoc, &txtSel);
+ result = compare_text_with_file(filename, "\xef\xbb\xbfTestUTF8WithBOM", &chBuffer);
+ todo_wine ok(result == 0, "ITextDocument_Save: Save UTF8 with BOM as UTF8 with BOM got wrong text: %s\n", chBuffer);
+ DeleteFileW(filename);
+
+ create_interfaces(&w, &reOle, &txtDoc, &txtSel);
+ setText.flags = 0;
+ setText.codepage = CP_ACP;
+ SendMessage(w, EM_SETTEXTEX, (WPARAM)&setText, (LPARAM)"TestUTF8WithBOM");
+ ITextDocument_Save(txtDoc, &testfile, tomCreateAlways, CP_ACP);
+ release_interfaces(&w, &reOle, &txtDoc, &txtSel);
+ result = compare_text_with_file(filename, "TestUTF8WithBOM", &chBuffer);
+ todo_wine ok(result == 0, "ITextDocument_Save: Save ASCII as ASCII got wrong text: %s\n", chBuffer);
+ DeleteFileW(filename);
+
+ create_interfaces(&w, &reOle, &txtDoc, &txtSel);
+ setText.flags = 0;
+ setText.codepage = CP_ACP;
+ SendMessage(w, EM_SETTEXTEX, (WPARAM)&setText, (LPARAM)"TestUTF8WithBOM");
+ ITextDocument_Save(txtDoc, &testfile, tomCreateAlways, CP_UTF8);
+ release_interfaces(&w, &reOle, &txtDoc, &txtSel);
+ result = compare_text_with_file(filename, "\xef\xbb\xbfTestUTF8WithBOM", &chBuffer);
+ todo_wine ok(result == 0, "ITextDocument_Save: Save ASCII as UTF8 with BOM got wrong text: %s\n", chBuffer);
+ DeleteFileW(filename);
+}
+
START_TEST(richole)
{
/* Must explicitly LoadLibrary(). The test has no references to functions in
@@ -340,4 +441,5 @@ START_TEST(richole)
test_Interfaces();
test_ITextDocument_Open();
+ test_ITextDocument_Save();
}
--
1.7.10.4
More information about the wine-patches
mailing list