Module: wine Branch: master Commit: d0e77f8a47016c6f69e3a6b5a8bed8f620f1a8f1 URL: http://source.winehq.org/git/wine.git/?a=commit;h=d0e77f8a47016c6f69e3a6b5a8...
Author: Uwe Bonnes bon@elektron.ikp.physik.tu-darmstadt.de Date: Sun Jan 25 18:56:04 2009 +0100
msvcrt/tests: Test case to show Wine still mishandles file text mode.
---
dlls/msvcrt/tests/file.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 files changed, 40 insertions(+), 0 deletions(-)
diff --git a/dlls/msvcrt/tests/file.c b/dlls/msvcrt/tests/file.c index 44ca961..b783b51 100644 --- a/dlls/msvcrt/tests/file.c +++ b/dlls/msvcrt/tests/file.c @@ -306,6 +306,7 @@ static void test_asciimode(void) { FILE *fp; char buf[64]; + int c, i, j;
/* Simple test of CR CR LF handling. Test both fgets and fread code paths, they're different! */ fp = fopen("ascii.tst", "wb"); @@ -334,6 +335,45 @@ static void test_asciimode(void) ok((fread(buf, 1, sizeof(buf), fp) == 0), "fread after logical EOF\n"); fclose(fp);
+ /* Show ASCII mode handling*/ + fp= fopen("ascii.tst","wb"); + fputs("0\r\n1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n8\r\n9\r\n", fp); + fclose(fp); + + fp = fopen("ascii.tst", "r"); + c= fgetc(fp); + c= fgetc(fp); + fseek(fp,0,SEEK_CUR); + todo_wine { + for(i=1; i<10; i++) { + ok((j = ftell(fp)) == i*3, "ftell fails in TEXT mode\n"); + fseek(fp,0,SEEK_CUR); + ok((c = fgetc(fp)) == '0'+ i, "fgetc after fseek failed in line %d\n", i); + c= fgetc(fp); + } + /* Show that fseek doesn't skip \r !*/ + rewind(fp); + c= fgetc(fp); + fseek(fp, 2 ,SEEK_CUR); + for(i=1; i<10; i++) { + ok((c = fgetc(fp)) == '0'+ i, "fgetc after fseek with pos Offset failed in line %d\n", i); + fseek(fp, 2 ,SEEK_CUR); + } + fseek(fp, 9*3 ,SEEK_SET); + c = fgetc(fp); + fseek(fp, -4 ,SEEK_CUR); + for(i= 8; i>=0; i--) { + ok((c = fgetc(fp)) == '0'+ i, "fgetc after fseek with neg Offset failed in line %d\n", i); + fseek(fp, -4 ,SEEK_CUR); + } + } + /* Show what happens is fseek positions filepointer on \r */ + fclose(fp); + fp = fopen("ascii.tst", "r"); + fseek(fp, 3 ,SEEK_SET); + ok((c = fgetc(fp)) == '1', "fgetc fails to read nect char when positioned on \r \n"); + fclose(fp); + unlink("ascii.tst"); }