[ros-diffs] [cwittich] 45478: [MSVCRT_WINETEST] sync msvcrt_winetest to wine 1.1.38

cwittich at svn.reactos.org cwittich at svn.reactos.org
Sun Feb 7 01:13:50 CET 2010


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 */ {"?f at T@@QAEHQAY1BE at BO@$$CBD at Z", "public: int __thiscall T::f(char const (* const)[20][30])"},
 /* 114 */ {"??0?$Foo at U?$vector_c at H$00$01$0?1$0A@$0A@$0HPPPPPPP@$0HPPPPPPP@$0HPPPPPPP@$0HPPPPPPP@$0HPPPPPPP@$0HPPPPPPP@$0HPPPPPPP@$0HPPPPPPP@$0HPPPPPPP@$0HPPPPPPP@$0HPPPPPPP@$0HPPPPPPP@$0HPPPPPPP@$0HPPPPPPP@$0HPPPPPPP@@mpl at boost@@@@QAE at 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@@YAHPAGIPBGPAD at Z", "int __cdecl vswprintf(unsigned short *,unsigned int,unsigned short const *,char *)"},
+/* 117 */ {"?vswprintf@@YAHPA_WIPB_WPAD at 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 },




More information about the Ros-diffs mailing list