| /* |
| * Copyright 2017 Alistair Leslie-Hughes |
| * |
| * 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 COBJMACROS |
| #define WIN32_LEAN_AND_MEAN |
| #include "initguid.h" |
| #include "wmsdkidl.h" |
| |
| #include "wine/test.h" |
| |
| HRESULT WINAPI WMCreateWriterPriv(IWMWriter **writer); |
| |
| static void test_wmwriter_interfaces(void) |
| { |
| HRESULT hr; |
| IWMWriter *writer; |
| IWMHeaderInfo *header; |
| IWMHeaderInfo2 *header2; |
| IWMHeaderInfo3 *header3; |
| |
| hr = WMCreateWriter( NULL, &writer ); |
| ok(hr == S_OK, "WMCreateWriter failed 0x%08x\n", hr); |
| if(FAILED(hr)) |
| { |
| win_skip("Failed to create IWMWriter\n"); |
| return; |
| } |
| |
| hr = IWMWriter_QueryInterface(writer, &IID_IWMHeaderInfo, (void **)&header); |
| todo_wine ok(hr == S_OK, "Failed 0x%08x\n", hr); |
| |
| hr = IWMWriter_QueryInterface(writer, &IID_IWMHeaderInfo2, (void **)&header2); |
| todo_wine ok(hr == S_OK, "Failed 0x%08x\n", hr); |
| |
| hr = IWMWriter_QueryInterface(writer, &IID_IWMHeaderInfo3, (void **)&header3); |
| todo_wine ok(hr == S_OK, "Failed 0x%08x\n", hr); |
| |
| if(header) |
| IWMHeaderInfo_Release(header); |
| if(header2) |
| IWMHeaderInfo2_Release(header2); |
| if(header3) |
| IWMHeaderInfo3_Release(header3); |
| IWMWriter_Release(writer); |
| } |
| |
| static void test_wmreader_interfaces(void) |
| { |
| HRESULT hr; |
| IWMReader *reader; |
| IWMReaderAdvanced *advanced; |
| IWMReaderAdvanced2 *advanced2; |
| IWMHeaderInfo *header; |
| IWMHeaderInfo2 *header2; |
| IWMHeaderInfo3 *header3; |
| IWMProfile *profile; |
| IWMProfile2 *profile2; |
| IWMProfile3 *profile3; |
| IWMPacketSize *packet; |
| IWMPacketSize2 *packet2; |
| IWMReaderAccelerator *accel; |
| IWMReaderTimecode *timecode; |
| IWMReaderNetworkConfig *netconfig; |
| IWMReaderNetworkConfig2 *netconfig2; |
| IWMReaderStreamClock *clock; |
| IWMReaderTypeNegotiation *negotiation; |
| IWMDRMReader *drmreader; |
| IWMDRMReader2 *drmreader2; |
| IWMDRMReader3 *drmreader3; |
| IWMReaderPlaylistBurn *playlist; |
| IWMLanguageList *langlist; |
| IReferenceClock *refclock; |
| |
| hr = WMCreateReader( NULL, 0, &reader ); |
| ok(hr == S_OK, "WMCreateReader failed 0x%08x\n", hr); |
| if(FAILED(hr)) |
| { |
| win_skip("Failed to create IWMReader\n"); |
| return; |
| } |
| |
| hr = IWMReader_QueryInterface(reader, &IID_IWMReaderAdvanced, (void **)&advanced); |
| ok(hr == S_OK, "Failed 0x%08x\n", hr); |
| |
| hr = IWMReader_QueryInterface(reader, &IID_IWMReaderAdvanced2, (void **)&advanced2); |
| ok(hr == S_OK, "Failed 0x%08x\n", hr); |
| |
| hr = IWMReader_QueryInterface(reader, &IID_IWMHeaderInfo, (void **)&header); |
| ok(hr == S_OK, "Failed 0x%08x\n", hr); |
| |
| hr = IWMReader_QueryInterface(reader, &IID_IWMHeaderInfo2, (void **)&header2); |
| ok(hr == S_OK, "Failed 0x%08x\n", hr); |
| |
| hr = IWMReader_QueryInterface(reader, &IID_IWMHeaderInfo3, (void **)&header3); |
| ok(hr == S_OK, "Failed 0x%08x\n", hr); |
| |
| hr = IWMReader_QueryInterface(reader, &IID_IWMProfile, (void **)&profile); |
| ok(hr == S_OK, "Failed 0x%08x\n", hr); |
| |
| hr = IWMReader_QueryInterface(reader, &IID_IWMProfile2, (void **)&profile2); |
| ok(hr == S_OK, "Failed 0x%08x\n", hr); |
| |
| hr = IWMReader_QueryInterface(reader, &IID_IWMProfile3, (void **)&profile3); |
| ok(hr == S_OK, "Failed 0x%08x\n", hr); |
| |
| hr = IWMReader_QueryInterface(reader, &IID_IWMPacketSize, (void **)&packet); |
| ok(hr == S_OK, "Failed 0x%08x\n", hr); |
| |
| hr = IWMReader_QueryInterface(reader, &IID_IWMPacketSize2, (void **)&packet2); |
| ok(hr == S_OK, "Failed 0x%08x\n", hr); |
| |
| hr = IWMReader_QueryInterface(reader, &IID_IWMReaderAccelerator, (void **)&accel); |
| ok(hr == S_OK, "Failed 0x%08x\n", hr); |
| |
| hr = IWMReader_QueryInterface(reader, &IID_IWMReaderTimecode, (void **)&timecode); |
| ok(hr == S_OK, "Failed 0x%08x\n", hr); |
| |
| hr = IWMReader_QueryInterface(reader, &IID_IWMReaderNetworkConfig, (void **)&netconfig); |
| ok(hr == S_OK, "Failed 0x%08x\n", hr); |
| |
| hr = IWMReader_QueryInterface(reader, &IID_IWMReaderNetworkConfig2, (void **)&netconfig2); |
| ok(hr == S_OK, "Failed 0x%08x\n", hr); |
| |
| hr = IWMReader_QueryInterface(reader, &IID_IWMReaderStreamClock, (void **)&clock); |
| ok(hr == S_OK, "Failed 0x%08x\n", hr); |
| |
| hr = IWMReader_QueryInterface(reader, &IID_IWMReaderTypeNegotiation, (void **)&negotiation); |
| ok(hr == S_OK, "Failed 0x%08x\n", hr); |
| |
| hr = IWMReader_QueryInterface(reader, &IID_IWMDRMReader, (void **)&drmreader); |
| ok(hr == E_NOINTERFACE, "Failed 0x%08x\n", hr); |
| |
| hr = IWMReader_QueryInterface(reader, &IID_IWMDRMReader2, (void **)&drmreader2); |
| ok(hr == E_NOINTERFACE, "Failed 0x%08x\n", hr); |
| |
| hr = IWMReader_QueryInterface(reader, &IID_IWMDRMReader3, (void **)&drmreader3); |
| ok(hr == E_NOINTERFACE, "Failed 0x%08x\n", hr); |
| |
| hr = IWMReader_QueryInterface(reader, &IID_IWMReaderPlaylistBurn, (void **)&playlist); |
| ok(hr == S_OK, "Failed 0x%08x\n", hr); |
| |
| hr = IWMReader_QueryInterface(reader, &IID_IWMLanguageList, (void **)&langlist); |
| ok(hr == S_OK, "Failed 0x%08x\n", hr); |
| |
| hr = IWMReader_QueryInterface(reader, &IID_IReferenceClock, (void **)&refclock); |
| ok(hr == S_OK, "Failed 0x%08x\n", hr); |
| |
| if(packet) |
| IWMPacketSize_Release(packet); |
| if(packet2) |
| IWMPacketSize2_Release(packet2); |
| if(advanced) |
| IWMReaderAdvanced_Release(advanced); |
| if(advanced2) |
| IWMReaderAdvanced2_Release(advanced2); |
| if(profile) |
| IWMProfile_Release(profile); |
| if(profile2) |
| IWMProfile2_Release(profile2); |
| if(profile3) |
| IWMProfile3_Release(profile3); |
| if(header) |
| IWMHeaderInfo_Release(header); |
| if(header2) |
| IWMHeaderInfo2_Release(header2); |
| if(header3) |
| IWMHeaderInfo3_Release(header3); |
| if(accel) |
| IWMReaderAccelerator_Release(accel); |
| if(timecode) |
| IWMReaderTimecode_Release(timecode); |
| if(netconfig) |
| IWMReaderNetworkConfig_Release(netconfig); |
| if(netconfig2) |
| IWMReaderNetworkConfig2_Release(netconfig2); |
| if(clock) |
| IWMReaderStreamClock_Release(clock); |
| if(negotiation) |
| IWMReaderTypeNegotiation_Release(negotiation); |
| if(playlist) |
| IWMReaderPlaylistBurn_Release(playlist); |
| if(langlist) |
| IWMLanguageList_Release(langlist); |
| if(refclock) |
| IReferenceClock_Release(refclock); |
| |
| IWMReader_Release(reader); |
| } |
| |
| static void test_profile_manager_interfaces(void) |
| { |
| HRESULT hr; |
| IWMProfileManager *profile; |
| |
| hr = WMCreateProfileManager(&profile); |
| ok(hr == S_OK, "WMCreateProfileManager failed 0x%08x\n", hr); |
| if(FAILED(hr)) |
| { |
| win_skip("Failed to create IWMProfileManager\n"); |
| return; |
| } |
| |
| IWMProfileManager_Release(profile); |
| } |
| |
| static void test_WMCreateWriterPriv(void) |
| { |
| IWMWriter *writer, *writer2; |
| HRESULT hr; |
| |
| hr = WMCreateWriterPriv(&writer); |
| ok(hr == S_OK, "got 0x%08x\n", hr); |
| |
| hr = IWMWriter_QueryInterface(writer, &IID_IWMWriter, (void**)&writer2); |
| ok(hr == S_OK, "got 0x%08x\n", hr); |
| |
| IWMWriter_Release(writer); |
| IWMWriter_Release(writer2); |
| } |
| |
| START_TEST(wmvcore) |
| { |
| HRESULT hr; |
| |
| hr = CoInitialize(0); |
| ok(hr == S_OK, "failed to init com\n"); |
| if(hr != S_OK) |
| return; |
| |
| test_wmreader_interfaces(); |
| test_wmwriter_interfaces(); |
| test_profile_manager_interfaces(); |
| test_WMCreateWriterPriv(); |
| |
| CoUninitialize(); |
| } |