29 return IUnknown_Release(
unknown);
76 &IID_IAMTimeline, (
void **)&timeline);
78 ok(!timeline,
"Got interface %p.\n", timeline);
84 ok(unk != &
test_outer,
"Returned IUnknown should not be outer IUnknown.\n");
86 ok(
ref == 1,
"Got unexpected refcount %ld.\n",
ref);
88 ref = IUnknown_AddRef(unk);
89 ok(
ref == 2,
"Got unexpected refcount %ld.\n",
ref);
92 ref = IUnknown_Release(unk);
93 ok(
ref == 1,
"Got unexpected refcount %ld.\n",
ref);
98 ok(unk2 == unk,
"Got unexpected IUnknown %p.\n", unk2);
99 IUnknown_Release(unk2);
101 hr = IUnknown_QueryInterface(unk, &IID_IAMTimeline, (
void **)&timeline);
104 hr = IAMTimeline_QueryInterface(timeline, &
IID_IUnknown, (
void **)&unk2);
106 ok(unk2 == (
IUnknown *)0xdeadbeef,
"Got unexpected IUnknown %p.\n", unk2);
108 hr = IAMTimeline_QueryInterface(timeline, &IID_IAMTimeline, (
void **)&timeline2);
110 ok(timeline2 == (
IAMTimeline *)0xdeadbeef,
"Got unexpected IAMTimeline %p.\n", timeline2);
112 hr = IUnknown_QueryInterface(unk, &
test_iid, (
void **)&unk2);
114 ok(!unk2,
"Got unexpected IUnknown %p.\n", unk2);
116 hr = IAMTimeline_QueryInterface(timeline, &
test_iid, (
void **)&unk2);
118 ok(unk2 == (
IUnknown *)0xdeadbeef,
"Got unexpected IUnknown %p.\n", unk2);
120 IAMTimeline_Release(timeline);
121 ref = IUnknown_Release(unk);
122 ok(!
ref,
"Got unexpected refcount %ld.\n",
ref);
135 hr =
CoCreateInstance(&CLSID_AMTimeline,
NULL, CLSCTX_INPROC_SERVER, &IID_IAMTimeline, (
void **)&timeline);
137 if (!timeline)
return;
139 hr = IAMTimeline_QueryInterface(timeline, &IID_IAMTimelineObj,
NULL);
142 hr = IAMTimeline_QueryInterface(timeline, &IID_IAMTimelineObj, (
void **)&
obj);
144 ok(!
obj,
"Expected NULL got %p\n",
obj);
146 hr = IAMTimeline_CreateEmptyNode(timeline,
NULL, 0);
155 hr = IAMTimeline_CreateEmptyNode(timeline, &
obj,
type);
165 if (
obj != &obj_iface) IAMTimelineObj_Release(
obj);
169 ok(
obj == &obj_iface,
"Expected %p got %p\n", &obj_iface,
obj);
178 hr = IAMTimelineObj_QueryInterface(
obj, &IID_IAMTimeline,
NULL);
181 hr = IAMTimelineObj_QueryInterface(
obj, &IID_IAMTimeline, (
void **)&timeline2);
183 ok(!timeline2,
"Expected NULL got %p\n", timeline2);
185 hr = IAMTimelineObj_GetTimelineType(
obj,
NULL);
188 hr = IAMTimelineObj_GetTimelineType(
obj, &
type);
194 hr = IAMTimelineObj_SetTimelineType(
obj,
type);
201 hr = IAMTimelineObj_GetTimelineNoRef(
obj,
NULL);
205 hr = IAMTimelineObj_GetTimelineNoRef(
obj, &timeline2);
207 ok(!timeline2,
"Expected NULL got %p\n", timeline2);
209 IAMTimelineObj_Release(
obj);
210 IAMTimeline_Release(timeline);
219 hr =
CoCreateInstance(&CLSID_AMTimeline,
NULL, CLSCTX_INPROC_SERVER, &IID_IAMTimeline, (
void **)&timeline);
231 hr = IAMTimelineObj_QueryInterface(
obj, &IID_IAMTimelineGroup, (
void **)&
group);
234 hr = IAMTimelineGroup_QueryInterface(
group, &IID_IAMTimelineObj, (
void **)&obj2);
236 ok(
obj == obj2,
"Different pointers\n");
237 IAMTimelineObj_Release(obj2);
239 IAMTimelineGroup_Release(
group);
241 IAMTimelineObj_Release(
obj);
244 IAMTimeline_Release(timeline);
255 &IID_IAMTimeline, (
void **)&timeline)))
258 win_skip(
"Failed to create timeline object, hr %#lx.\n",
hr);
261 IAMTimeline_Release(timeline);
#define InterlockedIncrement
#define InterlockedDecrement
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
static WCHAR unknown[MAX_STRING_RESOURCE_LEN]
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
GLuint GLuint GLsizei GLenum type
static void test_timelineobj_interfaces(void)
static const IUnknownVtbl outer_vtbl
static void test_timeline(void)
static void test_aggregation(void)
static ULONG WINAPI outer_AddRef(IUnknown *iface)
static HRESULT WINAPI outer_QueryInterface(IUnknown *iface, REFIID iid, void **out)
static ULONG get_refcount(void *iface)
static IUnknown test_outer
static const GUID test_iid
static ULONG WINAPI outer_Release(IUnknown *iface)
#define IsEqualGUID(rguid1, rguid2)
@ TIMELINE_MAJOR_TYPE_EFFECT
@ TIMELINE_MAJOR_TYPE_TRANSITION
@ TIMELINE_MAJOR_TYPE_COMPOSITE
@ TIMELINE_MAJOR_TYPE_SOURCE
@ TIMELINE_MAJOR_TYPE_GROUP
@ TIMELINE_MAJOR_TYPE_TRACK
static __inline const char * wine_dbgstr_guid(const GUID *id)
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
#define REGDB_E_CLASSNOTREG