Module: wine Branch: master Commit: d589d95d508ee7d687599a8a98f76677d860039f URL: http://source.winehq.org/git/wine.git/?a=commit;h=d589d95d508ee7d687599a8a98...
Author: Piotr Caban piotr@codeweavers.com Date: Tue Jul 20 23:24:32 2010 +0200
msvcp90/tests: Added char_traits assign tests.
---
configure | 1 + configure.ac | 1 + dlls/msvcp90/tests/Makefile.in | 17 ++++++ dlls/msvcp90/tests/misc.c | 104 +++++++++++++++++++++++++++++++++++ dlls/msvcp90/tests/msvcp90.manifest | 22 +++++++ dlls/msvcp90/tests/msvcp90.rc | 22 +++++++ 6 files changed, 167 insertions(+), 0 deletions(-)
diff --git a/configure b/configure index 084a3b7..6f8fca2 100755 --- a/configure +++ b/configure @@ -14519,6 +14519,7 @@ wine_fn_config_dll mstask enable_mstask wine_fn_config_test dlls/mstask/tests mstask_test wine_fn_config_dll msvcirt enable_msvcirt wine_fn_config_dll msvcp90 enable_msvcp90 +wine_fn_config_test dlls/msvcp90/tests msvcp90_test wine_fn_config_dll msvcr100 enable_msvcr100 wine_fn_config_dll msvcr70 enable_msvcr70 msvcr70 wine_fn_config_dll msvcr71 enable_msvcr71 msvcr71 diff --git a/configure.ac b/configure.ac index 4c27f84..5638f2b 100644 --- a/configure.ac +++ b/configure.ac @@ -2456,6 +2456,7 @@ WINE_CONFIG_DLL(mstask) WINE_CONFIG_TEST(dlls/mstask/tests) WINE_CONFIG_DLL(msvcirt) WINE_CONFIG_DLL(msvcp90) +WINE_CONFIG_TEST(dlls/msvcp90/tests) WINE_CONFIG_DLL(msvcr100) WINE_CONFIG_DLL(msvcr70,,[msvcr70]) WINE_CONFIG_DLL(msvcr71,,[msvcr71]) diff --git a/dlls/msvcp90/tests/Makefile.in b/dlls/msvcp90/tests/Makefile.in new file mode 100644 index 0000000..37cc9ab --- /dev/null +++ b/dlls/msvcp90/tests/Makefile.in @@ -0,0 +1,17 @@ +TOPSRCDIR = @top_srcdir@ +TOPOBJDIR = ../../.. +SRCDIR = @srcdir@ +VPATH = @srcdir@ +TESTDLL = msvcp90.dll +APPMODE = -mno-cygwin +IMPORTS = kernel32 +MODCFLAGS = @BUILTINFLAG@ +EXTRAINCL = -I$(TOPSRCDIR)/include/msvcrt + +C_SRCS = \ + misc.c + +RC_SRCS = \ + msvcp90.rc + +@MAKE_TEST_RULES@ diff --git a/dlls/msvcp90/tests/misc.c b/dlls/msvcp90/tests/misc.c new file mode 100644 index 0000000..2995dfd --- /dev/null +++ b/dlls/msvcp90/tests/misc.c @@ -0,0 +1,104 @@ +/* + * Copyright 2010 Piotr Caban for CodeWeavers + * + * 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 <stdio.h> + +#include <windef.h> +#include <winbase.h> +#include "wine/test.h" + +static void* (__cdecl *p_set_invalid_parameter_handler)(void*); + +static void (__cdecl *p_char_assign)(void*, const void*); +static void (__cdecl *p_wchar_assign)(void*, const void*); +static void (__cdecl *p_short_assign)(void*, const void*); + +static int invalid_parameter = 0; +static void __cdecl test_invalid_parameter_handler(const wchar_t *expression, + const wchar_t *function, const wchar_t *file, + unsigned line, uintptr_t arg) +{ + ok(expression == NULL, "expression is not NULL\n"); + ok(function == NULL, "function is not NULL\n"); + ok(file == NULL, "file is not NULL\n"); + ok(line == 0, "line = %u\n", line); + ok(arg == 0, "arg = %lx\n", (UINT_PTR)arg); + invalid_parameter++; +} + +static BOOL init(void) +{ + HMODULE msvcr = LoadLibraryA("msvcr90.dll"); + HMODULE msvcp = LoadLibraryA("msvcp90.dll"); + if(!msvcr || !msvcp) { + win_skip("msvcp90.dll or msvcrt90.dll not installed\n"); + return FALSE; + } + + p_set_invalid_parameter_handler = (void*)GetProcAddress(msvcr, "_set_invalid_parameter_handler"); + if(!p_set_invalid_parameter_handler) { + win_skip("Error setting tests environment\n"); + return FALSE; + } + + p_set_invalid_parameter_handler(test_invalid_parameter_handler); + + p_char_assign = (void*)GetProcAddress(msvcp, "?assign@?$char_traits@D@std@@SAXAADABD@Z"); + p_wchar_assign = (void*)GetProcAddress(msvcp, "?assign@?$char_traits@_W@std@@SAXAA_WAB_W@Z"); + p_short_assign = (void*)GetProcAddress(msvcp, "?assign@?$char_traits@G@std@@SAXAAGABG@Z"); + + return TRUE; +} + +static void test_assign(void) +{ + const char in[] = "abc"; + char out[4]; + + if(!p_char_assign || !p_wchar_assign || !p_short_assign) { + win_skip("assign tests skipped\n"); + return; + } + + out[1] = '#'; + p_char_assign(out, in); + ok(out[0] == in[0], "out[0] = %c\n", out[0]); + ok(out[1] == '#', "out[1] = %c\n", out[1]); + + out[2] = '#'; + p_wchar_assign(out, in); + ok(*((char*)out)==in[0] && *((char*)out+1)==in[1], + "out[0] = %d, out[1] = %d\n", (int)out[0], (int)out[1]); + ok(out[2] == '#', "out[2] = %c\n", out[2]); + + out[2] = '#'; + p_short_assign(out, in); + ok(*((char*)out)==in[0] && *((char*)out+1)==in[1], + "out[0] = %d, out[1] = %d\n", (int)out[0], (int)out[1]); + ok(out[2] == '#', "out[2] = %c\n", out[2]); +} + +START_TEST(misc) +{ + if(!init()) + return; + + test_assign(); + + ok(!invalid_parameter, "invalid_parameter_handler was invoked too many times\n"); +} diff --git a/dlls/msvcp90/tests/msvcp90.manifest b/dlls/msvcp90/tests/msvcp90.manifest new file mode 100644 index 0000000..3cf3405 --- /dev/null +++ b/dlls/msvcp90/tests/msvcp90.manifest @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> + <assemblyIdentity + type="win32" + name="Wine.msvcp90.Test" + version="1.0.0.0" + processorArchitecture="*" + /> +<description>Wine msvcp90 test suite</description> +<dependency> + <dependentAssembly> + <assemblyIdentity + type="win32" + name="microsoft.vc90.crt" + version="9.0.20718.0" + processorArchitecture="*" + publicKeyToken="1fc8b3b9a1e18e3b" + language="*" + /> +</dependentAssembly> +</dependency> +</assembly> diff --git a/dlls/msvcp90/tests/msvcp90.rc b/dlls/msvcp90/tests/msvcp90.rc new file mode 100644 index 0000000..4f2dd98 --- /dev/null +++ b/dlls/msvcp90/tests/msvcp90.rc @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2010 Piotr Caban + * + * 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 "winuser.h" + +/* @makedep: msvcp90.manifest */ +1 RT_MANIFEST msvcp90.manifest