Jacek Caban : scrrun/tests: Add ITextStream::ReadLine tests.

Alexandre Julliard julliard at winehq.org
Thu Nov 7 16:16:04 CST 2019


Module: wine
Branch: master
Commit: f2b681db7771ff275fb0d4b9e0edb5496dba620c
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=f2b681db7771ff275fb0d4b9e0edb5496dba620c

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Nov  7 17:10:36 2019 +0100

scrrun/tests: Add ITextStream::ReadLine tests.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/scrrun/tests/filesystem.c | 71 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 71 insertions(+)

diff --git a/dlls/scrrun/tests/filesystem.c b/dlls/scrrun/tests/filesystem.c
index 2d5c6e4138..3bd8634f25 100644
--- a/dlls/scrrun/tests/filesystem.c
+++ b/dlls/scrrun/tests/filesystem.c
@@ -1734,6 +1734,7 @@ static void test_ReadAll(void)
     hr = ITextStream_ReadLine(stream, &str);
     ok(hr == S_OK, "got 0x%08x\n", hr);
     ok(str != NULL, "got %p\n", str);
+    ok(!wcscmp(str, nameW), "got %s\n", wine_dbgstr_w(str));
     SysFreeString(str);
 
     lstrcpyW(buffW, secondlineW);
@@ -2036,6 +2037,75 @@ static void test_Read(void)
     SysFreeString(nameW);
 }
 
+static void test_ReadLine(void)
+{
+    WCHAR path[MAX_PATH], dir[MAX_PATH];
+    ITextStream *stream;
+    unsigned int i;
+    HANDLE file;
+    DWORD size;
+    HRESULT hr;
+    BSTR str;
+    BOOL ret;
+
+    const char data[] = "first line\r\nsecond\n\n\rt\r\re \rst\n";
+
+    get_temp_filepath(L"test.txt", path, dir);
+
+    ret = CreateDirectoryW(dir, NULL);
+    ok(ret, "got %d, %d\n", ret, GetLastError());
+
+    file = CreateFileW(path, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,
+            FILE_ATTRIBUTE_NORMAL, NULL);
+    ok(file != INVALID_HANDLE_VALUE, "CreateFile failed\n");
+
+    for (i = 0; i < 1000; i++)
+        WriteFile(file, data, strlen(data), &size, NULL);
+    CloseHandle(file);
+
+    str = SysAllocString(path);
+    hr = IFileSystem3_OpenTextFile(fs3, str, ForReading, VARIANT_FALSE, TristateFalse, &stream);
+    ok(hr == S_OK, "got 0x%08x\n", hr);
+    SysFreeString(str);
+
+    for (i = 0; i < 1000; i++)
+    {
+        hr = ITextStream_ReadLine(stream, &str);
+        ok(hr == S_OK, "ReadLine failed: %08x\n", hr);
+        ok(!wcscmp(str, L"first line"), "ReadLine returned %s\n", wine_dbgstr_w(str));
+        SysFreeString(str);
+
+        hr = ITextStream_ReadLine(stream, &str);
+        ok(hr == S_OK, "ReadLine failed: %08x\n", hr);
+        ok(!wcscmp(str, L"second"), "ReadLine returned %s\n", wine_dbgstr_w(str));
+        SysFreeString(str);
+
+        hr = ITextStream_ReadLine(stream, &str);
+        ok(hr == S_OK, "ReadLine failed: %08x\n", hr);
+        ok(!*str, "ReadLine returned %s\n", wine_dbgstr_w(str));
+        SysFreeString(str);
+
+        hr = ITextStream_ReadLine(stream, &str);
+        ok(hr == S_OK, "ReadLine failed: %08x\n", hr);
+        ok(!wcscmp(str, L"\rt\r\re \rst"), "ReadLine returned %s\n", wine_dbgstr_w(str));
+        SysFreeString(str);
+    }
+
+    str = NULL;
+    hr = ITextStream_ReadLine(stream, &str);
+    ok(hr == CTL_E_ENDOFFILE, "got 0x%08x\n", hr);
+    ok(!str, "ReadLine returned %s\n", wine_dbgstr_w(str));
+    SysFreeString(str);
+
+    ITextStream_Release(stream);
+
+    ret = DeleteFileW(path);
+    ok(ret, "DeleteFile failed: %u\n", GetLastError());
+
+    ret = RemoveDirectoryW(dir);
+    ok(ret, "RemoveDirectory failed: %u\n", GetLastError());
+}
+
 struct driveexists_test {
     const WCHAR drivespec[10];
     const INT drivetype;
@@ -2403,6 +2473,7 @@ START_TEST(filesystem)
     test_WriteLine();
     test_ReadAll();
     test_Read();
+    test_ReadLine();
     test_DriveExists();
     test_GetDriveName();
     test_GetDrive();




More information about the wine-cvs mailing list