Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
39b98144
Commit
39b98144
authored
Aug 30, 2010
by
Piotr Caban
Committed by
Alexandre Julliard
Aug 30, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
msvcp90/tests: Added basic_string<wchar_t> tests.
parent
04f4b8a3
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
113 additions
and
1 deletion
+113
-1
string.c
dlls/msvcp90/tests/string.c
+113
-1
No files found.
dlls/msvcp90/tests/string.c
View file @
39b98144
...
...
@@ -27,7 +27,7 @@
typedef
struct
_basic_string_char
{
void
*
allocator
;
union
_data
{
union
{
char
buf
[
BUF_SIZE_CHAR
];
char
*
ptr
;
}
data
;
...
...
@@ -35,6 +35,19 @@ typedef struct _basic_string_char
size_t
res
;
}
basic_string_char
;
/* basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t>> */
#define BUF_SIZE_WCHAR 8
typedef
struct
_basic_string_wchar
{
void
*
allocator
;
union
{
wchar_t
buf
[
BUF_SIZE_WCHAR
];
wchar_t
*
ptr
;
}
data
;
size_t
size
;
size_t
res
;
}
basic_string_wchar
;
static
void
*
(
__cdecl
*
p_set_invalid_parameter_handler
)(
void
*
);
#ifdef __i386__
...
...
@@ -45,6 +58,14 @@ static void (WINAPI *p_basic_string_char_dtor)(void);
static
basic_string_char
*
(
WINAPI
*
p_basic_string_char_erase
)(
size_t
,
size_t
);
static
basic_string_char
*
(
WINAPI
*
p_basic_string_char_assign_cstr_len
)(
const
char
*
,
size_t
);
static
const
char
*
(
WINAPI
*
p_basic_string_char_cstr
)(
void
);
static
basic_string_wchar
*
(
WINAPI
*
p_basic_string_wchar_ctor
)(
void
);
static
basic_string_wchar
*
(
WINAPI
*
p_basic_string_wchar_copy_ctor
)(
basic_string_wchar
*
);
static
basic_string_wchar
*
(
WINAPI
*
p_basic_string_wchar_ctor_cstr
)(
const
wchar_t
*
);
static
void
(
WINAPI
*
p_basic_string_wchar_dtor
)(
void
);
static
basic_string_wchar
*
(
WINAPI
*
p_basic_string_wchar_erase
)(
size_t
,
size_t
);
static
basic_string_wchar
*
(
WINAPI
*
p_basic_string_wchar_assign_cstr_len
)(
const
wchar_t
*
,
size_t
);
static
const
wchar_t
*
(
WINAPI
*
p_basic_string_wchar_cstr
)(
void
);
#else
static
basic_string_char
*
(
__cdecl
*
p_basic_string_char_ctor
)(
basic_string_char
*
);
static
basic_string_char
*
(
__cdecl
*
p_basic_string_char_copy_ctor
)(
basic_string_char
*
,
basic_string_char
*
);
...
...
@@ -53,6 +74,14 @@ static void (__cdecl *p_basic_string_char_dtor)(basic_string_char*);
static
basic_string_char
*
(
__cdecl
*
p_basic_string_char_erase
)(
basic_string_char
*
,
size_t
,
size_t
);
static
basic_string_char
*
(
__cdecl
*
p_basic_string_char_assign_cstr_len
)(
basic_string_char
*
,
const
char
*
,
size_t
);
static
const
char
*
(
__cdecl
*
p_basic_string_char_cstr
)(
basic_string_char
*
);
static
basic_string_wchar
*
(
__cdecl
*
p_basic_string_wchar_ctor
)(
basic_string_wchar
*
);
static
basic_string_wchar
*
(
__cdecl
*
p_basic_string_wchar_copy_ctor
)(
basic_string_wchar
*
,
basic_string_wchar
*
);
static
basic_string_wchar
*
(
__cdecl
*
p_basic_string_wchar_ctor_cstr
)(
basic_string_wchar
*
,
const
wchar_t
*
);
static
void
(
__cdecl
*
p_basic_string_wchar_dtor
)(
basic_string_wchar
*
);
static
basic_string_wchar
*
(
__cdecl
*
p_basic_string_wchar_erase
)(
basic_string_wchar
*
,
size_t
,
size_t
);
static
basic_string_wchar
*
(
__cdecl
*
p_basic_string_wchar_assign_cstr_len
)(
basic_string_wchar
*
,
const
wchar_t
*
,
size_t
);
static
const
wchar_t
*
(
__cdecl
*
p_basic_string_wchar_cstr
)(
basic_string_wchar
*
);
#endif
static
int
invalid_parameter
=
0
;
...
...
@@ -199,6 +228,21 @@ static BOOL init(void)
"?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z"
);
p_basic_string_char_cstr
=
(
void
*
)
GetProcAddress
(
msvcp
,
"?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ"
);
p_basic_string_wchar_ctor
=
(
void
*
)
GetProcAddress
(
msvcp
,
"??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@XZ"
);
p_basic_string_wchar_copy_ctor
=
(
void
*
)
GetProcAddress
(
msvcp
,
"??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@@Z"
);
p_basic_string_wchar_ctor_cstr
=
(
void
*
)
GetProcAddress
(
msvcp
,
"??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W@Z"
);
p_basic_string_wchar_dtor
=
(
void
*
)
GetProcAddress
(
msvcp
,
"??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@XZ"
);
p_basic_string_wchar_erase
=
(
void
*
)
GetProcAddress
(
msvcp
,
"?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0@Z"
);
p_basic_string_wchar_assign_cstr_len
=
(
void
*
)
GetProcAddress
(
msvcp
,
"?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W_K@Z"
);
p_basic_string_wchar_cstr
=
(
void
*
)
GetProcAddress
(
msvcp
,
"?c_str@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAPEB_WXZ"
);
}
else
{
p_basic_string_char_ctor
=
(
void
*
)
GetProcAddress
(
msvcp
,
"??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ"
);
...
...
@@ -214,6 +258,21 @@ static BOOL init(void)
"?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z"
);
p_basic_string_char_cstr
=
(
void
*
)
GetProcAddress
(
msvcp
,
"?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ"
);
p_basic_string_wchar_ctor
=
(
void
*
)
GetProcAddress
(
msvcp
,
"??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ"
);
p_basic_string_wchar_copy_ctor
=
(
void
*
)
GetProcAddress
(
msvcp
,
"??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@@Z"
);
p_basic_string_wchar_ctor_cstr
=
(
void
*
)
GetProcAddress
(
msvcp
,
"??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W@Z"
);
p_basic_string_wchar_dtor
=
(
void
*
)
GetProcAddress
(
msvcp
,
"??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ"
);
p_basic_string_wchar_erase
=
(
void
*
)
GetProcAddress
(
msvcp
,
"?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@II@Z"
);
p_basic_string_wchar_assign_cstr_len
=
(
void
*
)
GetProcAddress
(
msvcp
,
"?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_WI@Z"
);
p_basic_string_wchar_cstr
=
(
void
*
)
GetProcAddress
(
msvcp
,
"?c_str@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPB_WXZ"
);
}
return
TRUE
;
...
...
@@ -268,12 +327,65 @@ static void test_basic_string_char(void) {
call_func1
(
p_basic_string_char_dtor
,
&
str2
);
}
static
void
test_basic_string_wchar
(
void
)
{
static
const
wchar_t
test
[]
=
{
't'
,
'e'
,
's'
,
't'
,
0
};
basic_string_wchar
str1
,
str2
,
*
pstr
;
const
wchar_t
*
str
;
if
(
!
p_basic_string_wchar_ctor
||
!
p_basic_string_wchar_copy_ctor
||
!
p_basic_string_wchar_ctor_cstr
||
!
p_basic_string_wchar_dtor
||
!
p_basic_string_wchar_erase
||
!
p_basic_string_wchar_assign_cstr_len
||
!
p_basic_string_wchar_cstr
)
{
win_skip
(
"basic_string<wchar_t> unavailable
\n
"
);
return
;
}
call_func1
(
p_basic_string_wchar_ctor
,
&
str1
);
str
=
NULL
;
str
=
call_func1
(
p_basic_string_wchar_cstr
,
&
str1
);
ok
(
str
!=
NULL
,
"str = NULL
\n
"
);
ok
(
*
str
==
'\0'
,
"*str = %c
\n
"
,
*
str
);
call_func1
(
p_basic_string_wchar_dtor
,
&
str1
);
pstr
=
call_func2
(
p_basic_string_wchar_ctor_cstr
,
&
str1
,
test
);
ok
(
pstr
==
&
str1
,
"pstr != &str1
\n
"
);
str
=
call_func1
(
p_basic_string_wchar_cstr
,
&
str1
);
ok
(
!
memcmp
(
str
,
test
,
5
*
sizeof
(
wchar_t
)),
"str = %s
\n
"
,
wine_dbgstr_w
(
str
));
memset
(
&
str2
,
0
,
sizeof
(
basic_string_wchar
));
pstr
=
call_func2
(
p_basic_string_wchar_copy_ctor
,
&
str2
,
&
str1
);
ok
(
pstr
==
&
str2
,
"pstr != &str2
\n
"
);
str
=
call_func1
(
p_basic_string_wchar_cstr
,
&
str2
);
ok
(
!
memcmp
(
str
,
test
,
5
*
sizeof
(
wchar_t
)),
"str = %s
\n
"
,
wine_dbgstr_w
(
str
));
call_func3
(
p_basic_string_wchar_erase
,
&
str2
,
1
,
2
);
str
=
call_func1
(
p_basic_string_wchar_cstr
,
&
str2
);
ok
(
str
[
0
]
==
't'
&&
str
[
1
]
==
't'
&&
str
[
2
]
==
'\0'
,
"str = %s
\n
"
,
wine_dbgstr_w
(
str
));
call_func3
(
p_basic_string_wchar_erase
,
&
str2
,
1
,
100
);
str
=
call_func1
(
p_basic_string_wchar_cstr
,
&
str2
);
ok
(
str
[
0
]
==
't'
&&
str
[
1
]
==
'\0'
,
"str = %s
\n
"
,
wine_dbgstr_w
(
str
));
call_func3
(
p_basic_string_wchar_assign_cstr_len
,
&
str2
,
test
,
4
);
str
=
call_func1
(
p_basic_string_wchar_cstr
,
&
str2
);
ok
(
!
memcmp
(
str
,
test
,
5
*
sizeof
(
wchar_t
)),
"str = %s
\n
"
,
wine_dbgstr_w
(
str
));
call_func3
(
p_basic_string_wchar_assign_cstr_len
,
&
str2
,
(
str
+
1
),
2
);
str
=
call_func1
(
p_basic_string_wchar_cstr
,
&
str2
);
ok
(
str
[
0
]
==
'e'
&&
str
[
1
]
==
's'
&&
str
[
2
]
==
'\0'
,
"str = %s
\n
"
,
wine_dbgstr_w
(
str
));
call_func1
(
p_basic_string_wchar_dtor
,
&
str1
);
call_func1
(
p_basic_string_wchar_dtor
,
&
str2
);
}
START_TEST
(
string
)
{
if
(
!
init
())
return
;
test_basic_string_char
();
test_basic_string_wchar
();
ok
(
!
invalid_parameter
,
"invalid_parameter_handler was invoked too many times
\n
"
);
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment