Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/scrrun/tests/filesystem.c | 78 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+)
diff --git a/dlls/scrrun/tests/filesystem.c b/dlls/scrrun/tests/filesystem.c index d0c448c085..fd8d0bc5ad 100644 --- a/dlls/scrrun/tests/filesystem.c +++ b/dlls/scrrun/tests/filesystem.c @@ -2217,6 +2217,83 @@ static void test_GetSpecialFolder(void) IFolder_Release(folder); }
+static void test_ReadLine(void) +{ + static const WCHAR testW[] = {'a','\r','\n','b','c','\n','d','\r','e','\n','\r','f',0}; + static const WCHAR line1W[] = {'a',0}; + static const WCHAR line2W[] = {'b','c',0}; + static const WCHAR line3W[] = {'d','\r','e',0}; + static const WCHAR line4W[] = {'\r','f',0}; + WCHAR pathW[MAX_PATH], dirW[MAX_PATH]; + ITextStream *stream; + BSTR str, name; + HRESULT hr; + BOOL ret; + + get_temp_filepath(testfileW, pathW, dirW); + + ret = CreateDirectoryW(dirW, NULL); + ok(ret, "Failed to create test directory, error %d\n", GetLastError()); + + name = SysAllocString(pathW); + hr = IFileSystem3_CreateTextFile(fs3, name, VARIANT_FALSE, VARIANT_FALSE, &stream); + ok(hr == S_OK, "Failed to create file stream, hr %#x.\n", hr); + + str = SysAllocString(testW); + hr = ITextStream_Write(stream, str); + ok(hr == S_OK, "Failed to write to the stream, hr %#x.\n", hr); + SysFreeString(str); + + ITextStream_Release(stream); + + hr = IFileSystem3_OpenTextFile(fs3, name, ForReading, VARIANT_FALSE, TristateFalse, &stream); + ok(hr == S_OK, "Failed to open file stream, hr %#x.\n", hr); + +todo_wine { + str = NULL; + hr = ITextStream_ReadLine(stream, &str); + ok(hr == S_OK, "Failed to read text line, hr %#x.\n", hr); + ok(str != NULL, "got %p\n", str); + ok(!lstrcmpW(line1W, str), "Unexpected line %s.\n", wine_dbgstr_w(str)); + SysFreeString(str); + + str = NULL; + hr = ITextStream_ReadLine(stream, &str); + ok(hr == S_OK, "Failed to read text line, hr %#x.\n", hr); + ok(str != NULL, "got %p\n", str); + ok(!lstrcmpW(line2W, str), "Unexpected line %s.\n", wine_dbgstr_w(str)); + SysFreeString(str); + + str = NULL; + hr = ITextStream_ReadLine(stream, &str); + ok(hr == S_OK, "Failed to read text line, hr %#x.\n", hr); + ok(str != NULL, "got %p\n", str); + ok(!lstrcmpW(line3W, str), "Unexpected line %s.\n", wine_dbgstr_w(str)); + SysFreeString(str); + + str = NULL; + hr = ITextStream_ReadLine(stream, &str); + ok(hr == S_FALSE, "Failed to read text line, hr %#x.\n", hr); + ok(str != NULL, "got %p\n", str); + ok(!lstrcmpW(line4W, str), "Unexpected line %s.\n", wine_dbgstr_w(str)); + SysFreeString(str); +} + hr = ITextStream_ReadLine(stream, NULL); + ok(hr == E_POINTER, "Unexpected hr %#x.\n", hr); + + str = (void *)0xdeadbeef; + hr = ITextStream_ReadLine(stream, &str); +todo_wine + ok(hr == CTL_E_ENDOFFILE, "Unexpected hr %#x.\n", hr); + ok(!str, "Unexpected str %s\n", wine_dbgstr_w(str)); + + ITextStream_Release(stream); + + DeleteFileW(name); + RemoveDirectoryW(dirW); + SysFreeString(name); +} + START_TEST(filesystem) { HRESULT hr; @@ -2255,6 +2332,7 @@ START_TEST(filesystem) test_SerialNumber(); test_GetExtensionName(); test_GetSpecialFolder(); + test_ReadLine();
IFileSystem3_Release(fs3);