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