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
55e3a4d8
Commit
55e3a4d8
authored
Oct 14, 2018
by
Zebediah Figura
Committed by
Alexandre Julliard
Oct 16, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
oleaut32/tests: Add some tests for marshalling base types.
Signed-off-by:
Zebediah Figura
<
z.figura12@gmail.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
1d15103c
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
183 additions
and
54 deletions
+183
-54
tmarshal.c
dlls/oleaut32/tests/tmarshal.c
+128
-1
tmarshal.idl
dlls/oleaut32/tests/tmarshal.idl
+55
-1
tmarshal_dispids.h
dlls/oleaut32/tests/tmarshal_dispids.h
+0
-52
No files found.
dlls/oleaut32/tests/tmarshal.c
View file @
55e3a4d8
...
@@ -17,6 +17,8 @@
...
@@ -17,6 +17,8 @@
*
*
*/
*/
#include <math.h>
#define COBJMACROS
#define COBJMACROS
#define CONST_VTABLE
#define CONST_VTABLE
...
@@ -27,7 +29,6 @@
...
@@ -27,7 +29,6 @@
#include "wine/test.h"
#include "wine/test.h"
#include "tmarshal.h"
#include "tmarshal.h"
#include "tmarshal_dispids.h"
static
HRESULT
(
WINAPI
*
pVarAdd
)(
LPVARIANT
,
LPVARIANT
,
LPVARIANT
);
static
HRESULT
(
WINAPI
*
pVarAdd
)(
LPVARIANT
,
LPVARIANT
,
LPVARIANT
);
...
@@ -923,6 +924,44 @@ static HRESULT WINAPI Widget_Coclass(
...
@@ -923,6 +924,44 @@ static HRESULT WINAPI Widget_Coclass(
return
S_OK
;
return
S_OK
;
}
}
static
HRESULT
WINAPI
Widget_basetypes_in
(
IWidget
*
iface
,
signed
char
c
,
short
s
,
int
i
,
hyper
h
,
unsigned
char
uc
,
unsigned
short
us
,
unsigned
int
ui
,
MIDL_uhyper
uh
,
float
f
,
double
d
,
STATE
st
)
{
ok
(
c
==
5
,
"Got char %d.
\n
"
,
c
);
ok
(
s
==
-
123
,
"Got short %d.
\n
"
,
s
);
ok
(
i
==
-
100000
,
"Got int %d.
\n
"
,
i
);
ok
(
h
==
(
LONGLONG
)
-
100000
*
1000000
,
"Got hyper %s.
\n
"
,
wine_dbgstr_longlong
(
h
));
ok
(
uc
==
0
,
"Got unsigned char %u.
\n
"
,
uc
);
ok
(
us
==
456
,
"Got unsigned short %u.
\n
"
,
us
);
ok
(
ui
==
0xdeadbeef
,
"Got unsigned int %i.
\n
"
,
ui
);
ok
(
uh
==
(
ULONGLONG
)
1234567890
*
9876543210
,
"Got unsigned hyper %s.
\n
"
,
wine_dbgstr_longlong
(
uh
));
ok
(
f
==
(
float
)
M_PI
,
"Got float %f.
\n
"
,
f
);
ok
(
d
==
M_E
,
"Got double %f.
\n
"
,
d
);
ok
(
st
==
STATE_WIDGETIFIED
,
"Got state %u.
\n
"
,
st
);
return
S_OK
;
}
static
HRESULT
WINAPI
Widget_basetypes_out
(
IWidget
*
iface
,
signed
char
*
c
,
short
*
s
,
int
*
i
,
hyper
*
h
,
unsigned
char
*
uc
,
unsigned
short
*
us
,
unsigned
int
*
ui
,
MIDL_uhyper
*
uh
,
float
*
f
,
double
*
d
,
STATE
*
st
)
{
*
c
=
10
;
*
s
=
-
321
;
*
i
=
-
200000
;
*
h
=
(
LONGLONG
)
-
200000
*
1000000
;
*
uc
=
254
;
*
us
=
256
;
*
ui
=
0xf00dfade
;
*
uh
=
(((
ULONGLONG
)
0xabcdef01
)
<<
32
)
|
(
ULONGLONG
)
0x23456789
;
*
f
=
M_LN2
;
*
d
=
M_LN10
;
*
st
=
STATE_UNWIDGETIFIED
;
return
S_OK
;
}
static
const
struct
IWidgetVtbl
Widget_VTable
=
static
const
struct
IWidgetVtbl
Widget_VTable
=
{
{
Widget_QueryInterface
,
Widget_QueryInterface
,
...
@@ -964,6 +1003,8 @@ static const struct IWidgetVtbl Widget_VTable =
...
@@ -964,6 +1003,8 @@ static const struct IWidgetVtbl Widget_VTable =
Widget_VarArg_Run
,
Widget_VarArg_Run
,
Widget_VarArg_Ref_Run
,
Widget_VarArg_Ref_Run
,
Widget_Coclass
,
Widget_Coclass
,
Widget_basetypes_in
,
Widget_basetypes_out
,
};
};
static
HRESULT
WINAPI
StaticWidget_QueryInterface
(
IStaticWidget
*
iface
,
REFIID
riid
,
void
**
ppvObject
)
static
HRESULT
WINAPI
StaticWidget_QueryInterface
(
IStaticWidget
*
iface
,
REFIID
riid
,
void
**
ppvObject
)
...
@@ -1277,6 +1318,90 @@ static ITypeInfo *NonOleAutomation_GetTypeInfo(void)
...
@@ -1277,6 +1318,90 @@ static ITypeInfo *NonOleAutomation_GetTypeInfo(void)
return
NULL
;
return
NULL
;
}
}
static
void
test_marshal_basetypes
(
IWidget
*
widget
,
IDispatch
*
disp
)
{
VARIANTARG
arg
[
11
];
DISPPARAMS
dispparams
=
{
arg
,
NULL
,
ARRAY_SIZE
(
arg
),
0
};
HRESULT
hr
;
signed
char
c
;
short
s
;
int
i
;
hyper
h
;
unsigned
char
uc
;
unsigned
short
us
;
unsigned
int
ui
;
MIDL_uhyper
uh
;
float
f
;
double
d
;
STATE
st
;
V_VT
(
&
arg
[
10
])
=
VT_I1
;
V_I1
(
&
arg
[
10
])
=
5
;
V_VT
(
&
arg
[
9
])
=
VT_I2
;
V_I2
(
&
arg
[
9
])
=
-
123
;
V_VT
(
&
arg
[
8
])
=
VT_I4
;
V_I4
(
&
arg
[
8
])
=
-
100000
;
V_VT
(
&
arg
[
7
])
=
VT_I8
;
V_I8
(
&
arg
[
7
])
=
(
LONGLONG
)
-
100000
*
1000000
;
V_VT
(
&
arg
[
6
])
=
VT_UI1
;
V_UI1
(
&
arg
[
6
])
=
0
;
V_VT
(
&
arg
[
5
])
=
VT_UI2
;
V_UI2
(
&
arg
[
5
])
=
456
;
V_VT
(
&
arg
[
4
])
=
VT_UI4
;
V_UI4
(
&
arg
[
4
])
=
0xdeadbeef
;
V_VT
(
&
arg
[
3
])
=
VT_UI8
;
V_UI8
(
&
arg
[
3
])
=
(
ULONGLONG
)
1234567890
*
9876543210
;
V_VT
(
&
arg
[
2
])
=
VT_R4
;
V_R4
(
&
arg
[
2
])
=
M_PI
;
V_VT
(
&
arg
[
1
])
=
VT_R8
;
V_R8
(
&
arg
[
1
])
=
M_E
;
V_VT
(
&
arg
[
0
])
=
VT_I4
;
V_I4
(
&
arg
[
0
])
=
STATE_WIDGETIFIED
;
hr
=
IDispatch_Invoke
(
disp
,
DISPID_TM_BASETYPES_IN
,
&
IID_NULL
,
LOCALE_NEUTRAL
,
DISPATCH_METHOD
,
&
dispparams
,
NULL
,
NULL
,
NULL
);
ok
(
hr
==
S_OK
,
"Got hr %#x.
\n
"
,
hr
);
hr
=
IWidget_basetypes_in
(
widget
,
5
,
-
123
,
-
100000
,
(
LONGLONG
)
-
100000
*
1000000
,
0
,
456
,
0xdeadbeef
,
(
ULONGLONG
)
1234567890
*
9876543210
,
M_PI
,
M_E
,
STATE_WIDGETIFIED
);
ok
(
hr
==
S_OK
,
"Got hr %#x.
\n
"
,
hr
);
c
=
s
=
i
=
h
=
uc
=
us
=
ui
=
uh
=
f
=
d
=
st
=
0
;
V_VT
(
&
arg
[
10
])
=
VT_BYREF
|
VT_I1
;
V_I1REF
(
&
arg
[
10
])
=
&
c
;
V_VT
(
&
arg
[
9
])
=
VT_BYREF
|
VT_I2
;
V_I2REF
(
&
arg
[
9
])
=
&
s
;
V_VT
(
&
arg
[
8
])
=
VT_BYREF
|
VT_I4
;
V_I4REF
(
&
arg
[
8
])
=
&
i
;
V_VT
(
&
arg
[
7
])
=
VT_BYREF
|
VT_I8
;
V_I8REF
(
&
arg
[
7
])
=
&
h
;
V_VT
(
&
arg
[
6
])
=
VT_BYREF
|
VT_UI1
;
V_UI1REF
(
&
arg
[
6
])
=
&
uc
;
V_VT
(
&
arg
[
5
])
=
VT_BYREF
|
VT_UI2
;
V_UI2REF
(
&
arg
[
5
])
=
&
us
;
V_VT
(
&
arg
[
4
])
=
VT_BYREF
|
VT_UI4
;
V_UI4REF
(
&
arg
[
4
])
=
&
ui
;
V_VT
(
&
arg
[
3
])
=
VT_BYREF
|
VT_UI8
;
V_UI8REF
(
&
arg
[
3
])
=
&
uh
;
V_VT
(
&
arg
[
2
])
=
VT_BYREF
|
VT_R4
;
V_R4REF
(
&
arg
[
2
])
=
&
f
;
V_VT
(
&
arg
[
1
])
=
VT_BYREF
|
VT_R8
;
V_R8REF
(
&
arg
[
1
])
=
&
d
;
V_VT
(
&
arg
[
0
])
=
VT_BYREF
|
VT_I4
;
V_I4REF
(
&
arg
[
0
])
=
(
int
*
)
&
st
;
hr
=
IDispatch_Invoke
(
disp
,
DISPID_TM_BASETYPES_OUT
,
&
IID_NULL
,
LOCALE_NEUTRAL
,
DISPATCH_METHOD
,
&
dispparams
,
NULL
,
NULL
,
NULL
);
ok
(
hr
==
S_OK
,
"Got hr %#x.
\n
"
,
hr
);
ok
(
c
==
10
,
"Got char %d.
\n
"
,
c
);
ok
(
s
==
-
321
,
"Got short %d.
\n
"
,
s
);
ok
(
i
==
-
200000
,
"Got int %d.
\n
"
,
i
);
ok
(
h
==
(
LONGLONG
)
-
200000
*
1000000L
,
"Got hyper %s.
\n
"
,
wine_dbgstr_longlong
(
h
));
ok
(
uc
==
254
,
"Got unsigned char %u.
\n
"
,
uc
);
ok
(
us
==
256
,
"Got unsigned short %u.
\n
"
,
us
);
ok
(
ui
==
0xf00dfade
,
"Got unsigned int %i.
\n
"
,
ui
);
ok
(
uh
==
((((
ULONGLONG
)
0xabcdef01
)
<<
32
)
|
(
ULONGLONG
)
0x23456789
),
"Got unsigned hyper %s.
\n
"
,
wine_dbgstr_longlong
(
uh
));
ok
(
f
==
(
float
)
M_LN2
,
"Got float %f.
\n
"
,
f
);
ok
(
d
==
M_LN10
,
"Got double %f.
\n
"
,
d
);
ok
(
st
==
STATE_UNWIDGETIFIED
,
"Got state %u.
\n
"
,
st
);
c
=
s
=
i
=
h
=
uc
=
us
=
ui
=
uh
=
f
=
d
=
st
=
0
;
hr
=
IWidget_basetypes_out
(
widget
,
&
c
,
&
s
,
&
i
,
&
h
,
&
uc
,
&
us
,
&
ui
,
&
uh
,
&
f
,
&
d
,
&
st
);
ok
(
hr
==
S_OK
,
"Got hr %#x.
\n
"
,
hr
);
ok
(
c
==
10
,
"Got char %d.
\n
"
,
c
);
ok
(
s
==
-
321
,
"Got short %d.
\n
"
,
s
);
ok
(
i
==
-
200000
,
"Got int %d.
\n
"
,
i
);
ok
(
h
==
(
LONGLONG
)
-
200000
*
1000000L
,
"Got hyper %s.
\n
"
,
wine_dbgstr_longlong
(
h
));
ok
(
uc
==
254
,
"Got unsigned char %u.
\n
"
,
uc
);
ok
(
us
==
256
,
"Got unsigned short %u.
\n
"
,
us
);
ok
(
ui
==
0xf00dfade
,
"Got unsigned int %i.
\n
"
,
ui
);
ok
(
uh
==
((((
ULONGLONG
)
0xabcdef01
)
<<
32
)
|
(
ULONGLONG
)
0x23456789
),
"Got unsigned hyper %s.
\n
"
,
wine_dbgstr_longlong
(
uh
));
ok
(
f
==
(
float
)
M_LN2
,
"Got float %f.
\n
"
,
f
);
ok
(
d
==
M_LN10
,
"Got double %f.
\n
"
,
d
);
ok
(
st
==
STATE_UNWIDGETIFIED
,
"Got state %u.
\n
"
,
st
);
}
static
void
test_typelibmarshal
(
void
)
static
void
test_typelibmarshal
(
void
)
{
{
static
const
WCHAR
szCat
[]
=
{
'C'
,
'a'
,
't'
,
0
};
static
const
WCHAR
szCat
[]
=
{
'C'
,
'a'
,
't'
,
0
};
...
@@ -1887,6 +2012,8 @@ static void test_typelibmarshal(void)
...
@@ -1887,6 +2012,8 @@ static void test_typelibmarshal(void)
ok
(
V_I4
(
&
varresult
)
==
DISPID_TM_NEG_RESTRICTED
,
"got %x
\n
"
,
V_I4
(
&
varresult
));
ok
(
V_I4
(
&
varresult
)
==
DISPID_TM_NEG_RESTRICTED
,
"got %x
\n
"
,
V_I4
(
&
varresult
));
VariantClear
(
&
varresult
);
VariantClear
(
&
varresult
);
test_marshal_basetypes
(
pWidget
,
pDispatch
);
IDispatch_Release
(
pDispatch
);
IDispatch_Release
(
pDispatch
);
IWidget_Release
(
pWidget
);
IWidget_Release
(
pWidget
);
...
...
dlls/oleaut32/tests/tmarshal.idl
View file @
55e3a4d8
...
@@ -20,9 +20,53 @@
...
@@ -20,9 +20,53 @@
#
pragma
makedep
ident
#
pragma
makedep
ident
#
pragma
makedep
typelib
#
pragma
makedep
typelib
#
include
"tmarshal_dispids.h"
import
"ocidl.idl"
;
import
"ocidl.idl"
;
enum
IWidget_dispids
{
DISPID_TM_NAME
=
1
,
DISPID_TM_DOSOMETHING
,
DISPID_TM_STATE
,
DISPID_TM_MAP
,
DISPID_TM_SETOLECOLOR
,
DISPID_TM_GETOLECOLOR
,
DISPID_TM_CLONE
,
DISPID_TM_CLONEDISPATCH
,
DISPID_TM_CLONECOCLASS
,
DISPID_TM_VALUE
,
DISPID_TM_ARRAY
,
DISPID_TM_VARARRAYPTR
,
DISPID_TM_VARCARRAY
,
DISPID_TM_VARIANT
,
DISPID_TM_VARARG
,
DISPID_TM_STRUCTARGS
,
DISPID_TM_ERROR
,
DISPID_TM_CLONEINTERFACE
,
DISPID_TM_TESTDUAL
,
DISPID_TM_PROP_WITH_LCID
,
DISPID_TM_PROP_INT
,
DISPID_TM_PROP_UINT
,
DISPID_TM_BYREF_UINT
,
DISPID_TM_PROP_OPT_ARG
,
DISPID_TM_PROP_REQ_ARG
,
DISPID_TM_RESTRICTED
,
DISPID_TM_TESTSECONDIFACE
,
DISPID_TM_VARARG_RUN
,
DISPID_TM_VARARG_REF_RUN
,
DISPID_TM_COCLASS
,
DISPID_TM_BASETYPES_IN
,
DISPID_TM_BASETYPES_OUT
,
}
;
static
const
int
DISPID_TM_NEG_RESTRICTED
=
-
26
;
enum
INonOleAutomation_dispids
{
DISPID_NOA_BSTRRET
=
1
,
DISPID_NOA_ERROR
}
;
[
[
uuid
(
d96d8a3e
-
78b6
-
4
c8d
-
8
f27
-
059
db959be8a
),
uuid
(
d96d8a3e
-
78b6
-
4
c8d
-
8
f27
-
059
db959be8a
),
version
(
2.5
),
version
(
2.5
),
...
@@ -188,6 +232,16 @@ library TestTypelib
...
@@ -188,6 +232,16 @@ library TestTypelib
[
id
(
DISPID_TM_COCLASS
)
]
[
id
(
DISPID_TM_COCLASS
)
]
HRESULT
Coclass
(
[
in
]
ApplicationObject2
*
param
)
;
HRESULT
Coclass
(
[
in
]
ApplicationObject2
*
param
)
;
[
id
(
DISPID_TM_BASETYPES_IN
)
]
HRESULT
basetypes_in
(
[
in
]
signed
char
c
,
[
in
]
short
s
,
[
in
]
int
i
,
[
in
]
hyper
h
,
[
in
]
unsigned
char
uc
,
[
in
]
unsigned
short
us
,
[
in
]
unsigned
int
ui
,
[
in
]
unsigned
hyper
uh
,
[
in
]
float
f
,
[
in
]
double
d
,
[
in
]
STATE
st
)
;
[
id
(
DISPID_TM_BASETYPES_OUT
)
]
HRESULT
basetypes_out
(
[
out
]
signed
char
*
c
,
[
out
]
short
*
s
,
[
out
]
int
*
i
,
[
out
]
hyper
*
h
,
[
out
]
unsigned
char
*
uc
,
[
out
]
unsigned
short
*
us
,
[
out
]
unsigned
int
*
ui
,
[
out
]
unsigned
hyper
*
uh
,
[
out
]
float
*
f
,
[
out
]
double
*
d
,
[
out
]
STATE
*
st
)
;
}
}
[
[
...
...
dlls/oleaut32/tests/tmarshal_dispids.h
deleted
100644 → 0
View file @
1d15103c
/*
* Copyright (C) 2005-2006 Robert Shearman 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
*
*/
#define DISPID_TM_NAME 1
#define DISPID_TM_DOSOMETHING 2
#define DISPID_TM_STATE 3
#define DISPID_TM_MAP 4
#define DISPID_TM_SETOLECOLOR 5
#define DISPID_TM_GETOLECOLOR 6
#define DISPID_TM_CLONE 7
#define DISPID_TM_CLONEDISPATCH 8
#define DISPID_TM_CLONECOCLASS 9
#define DISPID_TM_ARRAY 10
#define DISPID_TM_VARARRAYPTR 11
#define DISPID_TM_VARIANT 12
#define DISPID_TM_VARARG 13
#define DISPID_TM_ERROR 14
#define DISPID_TM_CLONEINTERFACE 15
#define DISPID_TM_TESTDUAL 16
#define DISPID_TM_STRUCTARGS 17
#define DISPID_TM_PROP_WITH_LCID 18
#define DISPID_TM_PROP_INT 19
#define DISPID_TM_PROP_UINT 20
#define DISPID_TM_BYREF_UINT 21
#define DISPID_TM_PROP_OPT_ARG 22
#define DISPID_TM_PROP_REQ_ARG 23
#define DISPID_TM_VARCARRAY 24
#define DISPID_TM_RESTRICTED 25
#define DISPID_TM_NEG_RESTRICTED -26
#define DISPID_TM_TESTSECONDIFACE 27
#define DISPID_TM_VARARG_RUN 28
#define DISPID_TM_VARARG_REF_RUN 29
#define DISPID_TM_COCLASS 30
#define DISPID_NOA_BSTRRET 1
#define DISPID_NOA_ERROR 2
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