Author: cwittich Date: Sun Feb 7 01:13:49 2010 New Revision: 45478 URL: http://svn.reactos.org/svn/reactos?rev=45478&view=rev Log: [MSVCRT_WINETEST] sync msvcrt_winetest to wine 1.1.38
Added: trunk/rostests/winetests/msvcrt/misc.c (with props) Modified: trunk/rostests/winetests/msvcrt/cpp.c trunk/rostests/winetests/msvcrt/file.c trunk/rostests/winetests/msvcrt/msvcrt.rbuild trunk/rostests/winetests/msvcrt/testlist.c Modified: trunk/rostests/winetests/msvcrt/cpp.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msvcrt/cpp.c?rev=45478&r1=45477&r2=45478&view=diff ============================================================================== --- trunk/rostests/winetests/msvcrt/cpp.c [iso-8859-1] (original) +++ trunk/rostests/winetests/msvcrt/cpp.c [iso-8859-1] Sun Feb 7 01:13:49 2010 @@ -1034,6 +1034,10 @@ /* 113 */ {"?...@t@@qaehqay...@bo@$$...@z", "public: int __thiscall T::f(char const (* const)[20][30])"}, /* 114 */ {"??0?$...@u?$vector_c@h$00$01$0?1...@$0a@$0hpppp...@$0hppppppp@$0hpppp...@$0hppppppp@$0hpppp...@$0hppppppp@$0hpppp...@$0hppppppp@$0hpppp...@$0hppppppp@$0hpppp...@$0hppppppp@$0hpppp...@$0hppppppp@$0HPPPPPPP@@m...@boost@@@@q...@xz", "public: __thiscall Foo<struct boost::mpl::vector_c<int,1,2,-2,0,0,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647> >::Foo<struct boost::mpl::vector_c<int,1,2,-2,0,0,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647> >(void)"}, +/* 115 */ {"?swprintf@@YAHPAGIPBGZZ", "int __cdecl swprintf(unsigned short *,unsigned int,unsigned short const *,...)"}, +/* 116 */ {"?vswprintf@@yahpagipbg...@z", "int __cdecl vswprintf(unsigned short *,unsigned int,unsigned short const *,char *)"}, +/* 117 */ {"?vswprintf@@yahpa_wipb_w...@z", "int __cdecl vswprintf(wchar_t *,unsigned int,wchar_t const *,char *)"}, +/* 118 */ {"?swprintf@@YAHPA_WIPB_WZZ", "int __cdecl swprintf(wchar_t *,unsigned int,wchar_t const *,...)"}, }; int i, num_test = (sizeof(test)/sizeof(test[0])); Modified: trunk/rostests/winetests/msvcrt/file.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msvcrt/file.c?rev=45478&r1=45477&r2=45478&view=diff ============================================================================== --- trunk/rostests/winetests/msvcrt/file.c [iso-8859-1] (original) +++ trunk/rostests/winetests/msvcrt/file.c [iso-8859-1] Sun Feb 7 01:13:49 2010 @@ -422,6 +422,35 @@ return buffer; } +/* Test reading in text mode when the 512'th character read is \r*/ +static void test_readboundary(void) +{ + FILE *fp; + char buf[513], rbuf[513]; + int i, j; + for (i = 0; i < 511; i++) + { + j = (i%('~' - ' ')+ ' '); + buf[i] = j; + } + buf[511] = '\n'; + buf[512] =0; + fp = fopen("boundary.tst", "wt"); + fwrite(buf, 512,1,fp); + fclose(fp); + fp = fopen("boundary.tst", "rt"); + for(i=0; i<512; i++) + { + fseek(fp,0 , SEEK_CUR); + rbuf[i] = fgetc(fp); + } + rbuf[512] =0; + fclose(fp); + unlink("boundary.tst"); + + ok(strcmp(buf, rbuf) == 0,"CRLF on buffer boundary failure\n"); + } + static void test_fgetc( void ) { char* tempf; @@ -437,6 +466,14 @@ ok(ich == ret, "First fgetc expected %x got %x\n", ich, ret); ret = fgetc(tempfh); ok(ich == ret, "Second fgetc expected %x got %x\n", ich, ret); + fclose(tempfh); + tempfh = fopen(tempf,"wt"); + fputc('\n', tempfh); + fclose(tempfh); + tempfh = fopen(tempf,"wt"); + setbuf(tempfh, NULL); + ret = fgetc(tempfh); + ok(ret == -1, "Unbuffered fgetc in text mode must failed on \\r\\n\n"); fclose(tempfh); unlink(tempf); free(tempf); @@ -800,15 +837,23 @@ tempfd = _open(tempf,_O_RDONLY|_O_TEXT); /* open in TEXT mode */ _lseek(tempfd, -1, FILE_END); ret = _read(tempfd,btext,LLEN); - ok(ret == 1, "_read expected 1 got bad length: %d\n", ret); + ok(ret == 1 && *btext == '\n', "_read expected 1 got bad length: %d\n", ret); _lseek(tempfd, -2, FILE_END); ret = _read(tempfd,btext,LLEN); ok(ret == 1 && *btext == '\n', "_read expected '\\n' got bad length: %d\n", ret); _lseek(tempfd, -3, FILE_END); + ret = _read(tempfd,btext,1); + ok(ret == 1 && *btext == 'e', "_read expected 'e' got \"%.*s\" bad length: %d\n", ret, btext, ret); + ok(tell(tempfd) == 41, "bad position %u expecting 41\n", tell(tempfd)); + _lseek(tempfd, -3, FILE_END); ret = _read(tempfd,btext,2); ok(ret == 1 && *btext == 'e', "_read expected 'e' got \"%.*s\" bad length: %d\n", ret, btext, ret); ok(tell(tempfd) == 42, "bad position %u expecting 42\n", tell(tempfd)); - _close(tempfd); + _lseek(tempfd, -3, FILE_END); + ret = _read(tempfd,btext,3); + ok(ret == 2 && *btext == 'e', "_read expected 'e' got \"%.*s\" bad length: %d\n", ret, btext, ret); + ok(tell(tempfd) == 43, "bad position %u expecting 43\n", tell(tempfd)); + _close(tempfd); ret = unlink(tempf); ok( ret == 0 ,"Can't unlink '%s': %d\n", tempf, errno); @@ -835,7 +880,23 @@ "problems with _O_BINARY _write / _O_TEXT _read\n"); _close(tempfd); - ret =_chmod (tempf, _S_IREAD | _S_IWRITE); + /* test _read with single bytes. CR should be skipped and LF pulled in */ + tempfd = _open(tempf,_O_RDONLY|_O_TEXT); /* open in TEXT mode */ + for (i=0; i<strlen(mytext); i++) /* */ + { + _read(tempfd,btext, 1); + ok(btext[0] == mytext[i],"_read failed at pos %d 0x%02x vs 0x%02x\n", i, btext[0], mytext[i]); + } + while (_read(tempfd,btext, 1)); + _close(tempfd); + + /* test _read in buffered mode. Last CR should be skipped but LF not pulled in */ + tempfd = _open(tempf,_O_RDONLY|_O_TEXT); /* open in TEXT mode */ + i = _read(tempfd,btext, strlen(mytext)); + ok(i == strlen(mytext)-1, "_read_i %d vs %d\n", i, strlen(mytext)); + _close(tempfd); + + ret =_chmod (tempf, _S_IREAD | _S_IWRITE); ok( ret == 0, "Can't chmod '%s' to read-write: %d\n", tempf, errno); ret = unlink(tempf); @@ -1353,6 +1414,11 @@ rmdir("test_unlink"); } +void test_dup2(void) +{ + ok(-1 == _dup2(0, -1), "expected _dup2 to fail when second arg is negative\n" ); +} + START_TEST(file) { int arg_c; @@ -1373,6 +1439,7 @@ ok(0, "invalid argument '%s'\n", arg_v[2]); return; } + test_dup2(); test_file_inherit(arg_v[0]); test_file_write_read(); test_chsize(); @@ -1388,6 +1455,7 @@ test_asciimode2(); test_readmode(FALSE); /* binary mode */ test_readmode(TRUE); /* ascii mode */ + test_readboundary(); test_fgetc(); test_fputc(); test_flsbuf(); Added: trunk/rostests/winetests/msvcrt/misc.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msvcrt/misc.c?rev=45478&view=auto ============================================================================== --- trunk/rostests/winetests/msvcrt/misc.c (added) +++ trunk/rostests/winetests/msvcrt/misc.c [iso-8859-1] Sun Feb 7 01:13:49 2010 @@ -1,0 +1,58 @@ +/* + * Unit tests for miscellaneous msvcrt functions + * + * Copyright 2010 Andrew Nguyen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "wine/test.h" +#include <errno.h> + +static int (__cdecl *prand_s)(unsigned int *); + +static void init(void) +{ + HMODULE hmod = GetModuleHandleA("msvcrt.dll"); + + prand_s = (void *)GetProcAddress(hmod, "rand_s"); +} + +static void test_rand_s(void) +{ + int ret; + unsigned int rand; + + if (!prand_s) + { + win_skip("rand_s is not available\n"); + return; + } + + errno = EBADF; + ret = prand_s(NULL); + ok(ret == EINVAL, "Expected rand_s to return EINVAL, got %d\n", ret); + ok(errno == EINVAL, "Expected errno to return EINVAL, got %d\n", errno); + + ret = prand_s(&rand); + ok(ret == 0, "Expected rand_s to return 0, got %d\n", ret); +} + +START_TEST(misc) +{ + init(); + + test_rand_s(); +} Propchange: trunk/rostests/winetests/msvcrt/misc.c ------------------------------------------------------------------------------ svn:eol-style = native Modified: trunk/rostests/winetests/msvcrt/msvcrt.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msvcrt/msvcrt.rbuild?rev=45478&r1=45477&r2=45478&view=diff ============================================================================== --- trunk/rostests/winetests/msvcrt/msvcrt.rbuild [iso-8859-1] (original) +++ trunk/rostests/winetests/msvcrt/msvcrt.rbuild [iso-8859-1] Sun Feb 7 01:13:49 2010 @@ -27,6 +27,7 @@ <file>file.c</file> <file>headers.c</file> <file>heap.c</file> + <file>misc.c</file> <file>printf.c</file> <file>scanf.c</file> <file>signal.c</file> Modified: trunk/rostests/winetests/msvcrt/testlist.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msvcrt/testlist.c?rev=45478&r1=45477&r2=45478&view=diff ============================================================================== --- trunk/rostests/winetests/msvcrt/testlist.c [iso-8859-1] (original) +++ trunk/rostests/winetests/msvcrt/testlist.c [iso-8859-1] Sun Feb 7 01:13:49 2010 @@ -13,6 +13,7 @@ extern void func_file(void); extern void func_headers(void); extern void func_heap(void); +extern void func_misc(void); extern void func_printf(void); extern void func_scanf(void); extern void func_signal(void); @@ -28,6 +29,7 @@ { "file", func_file }, { "headers", func_headers }, { "heap", func_heap }, + { "misc", func_misc }, { "printf", func_printf }, { "scanf", func_scanf }, { "signal", func_signal },