Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
8f1e4097
Commit
8f1e4097
authored
Feb 17, 2018
by
Fabian Maurer
Committed by
Alexandre Julliard
Feb 22, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
propsys: Add PropVariantToStringWithDefault and tests.
Signed-off-by:
Fabian Maurer
<
dark.shadow4@web.de
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
233d8244
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
121 additions
and
1 deletion
+121
-1
propsys.spec
dlls/propsys/propsys.spec
+1
-1
propvar.c
dlls/propsys/propvar.c
+18
-0
propsys.c
dlls/propsys/tests/propsys.c
+101
-0
propvarutil.h
include/propvarutil.h
+1
-0
No files found.
dlls/propsys/propsys.spec
View file @
8f1e4097
...
...
@@ -137,7 +137,7 @@
@ stdcall PropVariantToStringAlloc(ptr ptr)
@ stub PropVariantToStringVector
@ stub PropVariantToStringVectorAlloc
@ st
ub PropVariantToStringWithDefault
@ st
dcall PropVariantToStringWithDefault(ptr wstr)
@ stdcall PropVariantToUInt16(ptr ptr)
@ stub PropVariantToUInt16Vector
@ stub PropVariantToUInt16VectorAlloc
...
...
dlls/propsys/propvar.c
View file @
8f1e4097
...
...
@@ -337,6 +337,24 @@ HRESULT WINAPI PropVariantToStringAlloc(REFPROPVARIANT propvarIn, WCHAR **ret)
return
hr
;
}
PCWSTR
WINAPI
PropVariantToStringWithDefault
(
REFPROPVARIANT
propvarIn
,
LPCWSTR
pszDefault
)
{
static
const
WCHAR
str_empty
[]
=
{
0
};
if
(
propvarIn
->
vt
==
VT_BSTR
)
{
if
(
propvarIn
->
u
.
bstrVal
==
NULL
)
return
str_empty
;
return
propvarIn
->
u
.
bstrVal
;
}
if
(
propvarIn
->
vt
==
VT_LPWSTR
&&
propvarIn
->
u
.
pwszVal
!=
NULL
)
return
propvarIn
->
u
.
pwszVal
;
return
pszDefault
;
}
/******************************************************************
* PropVariantChangeType (PROPSYS.@)
*/
...
...
dlls/propsys/tests/propsys.c
View file @
8f1e4097
...
...
@@ -1094,6 +1094,106 @@ static void test_PropVariantToBoolean(void)
ok
(
val
==
TRUE
,
"Unexpected value %d
\n
"
,
val
);
}
static
void
test_PropVariantToStringWithDefault
(
void
)
{
PROPVARIANT
propvar
;
static
WCHAR
default_value
[]
=
{
't'
,
'e'
,
's'
,
't'
,
0
};
static
WCHAR
wstr_test2
[]
=
{
't'
,
'e'
,
's'
,
't'
,
'2'
,
0
};
static
WCHAR
wstr_empty
[]
=
{
0
};
static
WCHAR
wstr_space
[]
=
{
' '
,
0
};
static
CHAR
str_test2
[]
=
"test2"
;
static
CHAR
str_empty
[]
=
""
;
static
CHAR
str_space
[]
=
" "
;
LPCWSTR
result
;
propvar
.
vt
=
VT_EMPTY
;
result
=
PropVariantToStringWithDefault
(
&
propvar
,
default_value
);
ok
(
result
==
default_value
,
"Unexpected value %s
\n
"
,
wine_dbgstr_w
(
result
));
propvar
.
vt
=
VT_NULL
;
result
=
PropVariantToStringWithDefault
(
&
propvar
,
default_value
);
ok
(
result
==
default_value
,
"Unexpected value %s
\n
"
,
wine_dbgstr_w
(
result
));
propvar
.
vt
=
VT_BOOL
;
propvar
.
u
.
boolVal
=
VARIANT_TRUE
;
result
=
PropVariantToStringWithDefault
(
&
propvar
,
default_value
);
ok
(
result
==
default_value
,
"Unexpected value %s
\n
"
,
wine_dbgstr_w
(
result
));
propvar
.
vt
=
VT_I4
;
propvar
.
u
.
lVal
=
15
;
result
=
PropVariantToStringWithDefault
(
&
propvar
,
default_value
);
ok
(
result
==
default_value
,
"Unexpected value %s
\n
"
,
wine_dbgstr_w
(
result
));
/* VT_LPWSTR */
propvar
.
vt
=
VT_LPWSTR
;
propvar
.
u
.
pwszVal
=
NULL
;
result
=
PropVariantToStringWithDefault
(
&
propvar
,
default_value
);
ok
(
result
==
default_value
,
"Unexpected value %s
\n
"
,
wine_dbgstr_w
(
result
));
propvar
.
vt
=
VT_LPWSTR
;
propvar
.
u
.
pwszVal
=
wstr_empty
;
result
=
PropVariantToStringWithDefault
(
&
propvar
,
default_value
);
ok
(
result
==
wstr_empty
,
"Unexpected value %s
\n
"
,
wine_dbgstr_w
(
result
));
propvar
.
vt
=
VT_LPWSTR
;
propvar
.
u
.
pwszVal
=
wstr_space
;
result
=
PropVariantToStringWithDefault
(
&
propvar
,
default_value
);
ok
(
result
==
wstr_space
,
"Unexpected value %s
\n
"
,
wine_dbgstr_w
(
result
));
propvar
.
vt
=
VT_LPWSTR
;
propvar
.
u
.
pwszVal
=
wstr_test2
;
result
=
PropVariantToStringWithDefault
(
&
propvar
,
default_value
);
ok
(
result
==
wstr_test2
,
"Unexpected value %s
\n
"
,
wine_dbgstr_w
(
result
));
/* VT_LPSTR */
propvar
.
vt
=
VT_LPSTR
;
propvar
.
u
.
pszVal
=
NULL
;
result
=
PropVariantToStringWithDefault
(
&
propvar
,
default_value
);
ok
(
result
==
default_value
,
"Unexpected value %s
\n
"
,
wine_dbgstr_w
(
result
));
propvar
.
vt
=
VT_LPSTR
;
propvar
.
u
.
pszVal
=
str_empty
;
result
=
PropVariantToStringWithDefault
(
&
propvar
,
default_value
);
ok
(
result
==
default_value
,
"Unexpected value %s
\n
"
,
wine_dbgstr_w
(
result
));
propvar
.
vt
=
VT_LPSTR
;
propvar
.
u
.
pszVal
=
str_space
;
result
=
PropVariantToStringWithDefault
(
&
propvar
,
default_value
);
ok
(
result
==
default_value
,
"Unexpected value %s
\n
"
,
wine_dbgstr_w
(
result
));
propvar
.
vt
=
VT_LPSTR
;
propvar
.
u
.
pszVal
=
str_test2
;
result
=
PropVariantToStringWithDefault
(
&
propvar
,
default_value
);
ok
(
result
==
default_value
,
"Unexpected value %s
\n
"
,
wine_dbgstr_w
(
result
));
/* VT_BSTR */
propvar
.
vt
=
VT_BSTR
;
propvar
.
u
.
bstrVal
=
NULL
;
result
=
PropVariantToStringWithDefault
(
&
propvar
,
default_value
);
ok
(
!
lstrcmpW
(
result
,
wstr_empty
),
"Unexpected value %s
\n
"
,
wine_dbgstr_w
(
result
));
propvar
.
vt
=
VT_BSTR
;
propvar
.
u
.
bstrVal
=
SysAllocString
(
wstr_empty
);
result
=
PropVariantToStringWithDefault
(
&
propvar
,
default_value
);
ok
(
!
lstrcmpW
(
result
,
wstr_empty
),
"Unexpected value %s
\n
"
,
wine_dbgstr_w
(
result
));
SysFreeString
(
propvar
.
u
.
bstrVal
);
propvar
.
vt
=
VT_BSTR
;
propvar
.
u
.
bstrVal
=
SysAllocString
(
wstr_space
);
result
=
PropVariantToStringWithDefault
(
&
propvar
,
default_value
);
ok
(
!
lstrcmpW
(
result
,
wstr_space
),
"Unexpected value %s
\n
"
,
wine_dbgstr_w
(
result
));
SysFreeString
(
propvar
.
u
.
bstrVal
);
propvar
.
vt
=
VT_BSTR
;
propvar
.
u
.
bstrVal
=
SysAllocString
(
wstr_test2
);
result
=
PropVariantToStringWithDefault
(
&
propvar
,
default_value
);
ok
(
!
lstrcmpW
(
result
,
wstr_test2
),
"Unexpected value %s
\n
"
,
wine_dbgstr_w
(
result
));
SysFreeString
(
propvar
.
u
.
bstrVal
);
}
static
void
test_PropVariantChangeType_LPWSTR
(
void
)
{
PROPVARIANT
dest
,
src
;
...
...
@@ -1143,4 +1243,5 @@ START_TEST(propsys)
test_intconversions
();
test_PropVariantChangeType_LPWSTR
();
test_PropVariantToBoolean
();
test_PropVariantToStringWithDefault
();
}
include/propvarutil.h
View file @
8f1e4097
...
...
@@ -77,6 +77,7 @@ HRESULT WINAPI PropVariantToUInt16(REFPROPVARIANT propvarIn, USHORT *ret);
HRESULT
WINAPI
PropVariantToUInt32
(
REFPROPVARIANT
propvarIn
,
ULONG
*
ret
);
HRESULT
WINAPI
PropVariantToUInt64
(
REFPROPVARIANT
propvarIn
,
ULONGLONG
*
ret
);
HRESULT
WINAPI
PropVariantToBoolean
(
REFPROPVARIANT
propvarIn
,
BOOL
*
ret
);
PCWSTR
WINAPI
PropVariantToStringWithDefault
(
REFPROPVARIANT
propvarIn
,
LPCWSTR
pszDefault
);
HRESULT
WINAPI
PropVariantToStringAlloc
(
REFPROPVARIANT
propvarIn
,
WCHAR
**
ret
);
...
...
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