diff --git a/configure b/configure
index 084a3b7..6f8fca2 100755
--- a/configure
+++ b/configure
@@ -14519,6 +14519,7 @@
 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_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
