Reactos

[WMVCORE_WINETEST] Import from Wine Staging 2.16. CORE-13762

+270
+1
modules/rostests/winetests/CMakeLists.txt
··· 116 116 add_subdirectory(wintrust) 117 117 add_subdirectory(wldap32) 118 118 add_subdirectory(wmiutils) 119 + add_subdirectory(wmvcore) 119 120 add_subdirectory(ws2_32) 120 121 add_subdirectory(wscript) 121 122 add_subdirectory(wshom)
+9
modules/rostests/winetests/wmvcore/CMakeLists.txt
··· 1 + 2 + add_definitions( 3 + -DUSE_WINE_TODOS 4 + -D__WINESRC__) 5 + 6 + add_executable(wmvcore_winetest wmvcore.c testlist.c) 7 + set_module_type(wmvcore_winetest win32cui) 8 + add_importlibs(wmvcore_winetest ole32 wmvcore msvcrt kernel32) 9 + add_rostests_file(TARGET wmvcore_winetest)
+10
modules/rostests/winetests/wmvcore/testlist.c
··· 1 + #define STANDALONE 2 + #include <wine/test.h> 3 + 4 + extern void func_wmvcore(void); 5 + 6 + const struct test winetest_testlist[] = 7 + { 8 + { "wmvcore", func_wmvcore }, 9 + { 0, 0 } 10 + };
+250
modules/rostests/winetests/wmvcore/wmvcore.c
··· 1 + /* 2 + * Copyright 2017 Alistair Leslie-Hughes 3 + * 4 + * This library is free software; you can redistribute it and/or 5 + * modify it under the terms of the GNU Lesser General Public 6 + * License as published by the Free Software Foundation; either 7 + * version 2.1 of the License, or (at your option) any later version. 8 + * 9 + * This library is distributed in the hope that it will be useful, 10 + * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 + * Lesser General Public License for more details. 13 + * 14 + * You should have received a copy of the GNU Lesser General Public 15 + * License along with this library; if not, write to the Free Software 16 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17 + */ 18 + #define COBJMACROS 19 + #define WIN32_LEAN_AND_MEAN 20 + #include "initguid.h" 21 + #include "wmsdkidl.h" 22 + 23 + #include "wine/test.h" 24 + 25 + HRESULT WINAPI WMCreateWriterPriv(IWMWriter **writer); 26 + 27 + static void test_wmwriter_interfaces(void) 28 + { 29 + HRESULT hr; 30 + IWMWriter *writer; 31 + IWMHeaderInfo *header; 32 + IWMHeaderInfo2 *header2; 33 + IWMHeaderInfo3 *header3; 34 + 35 + hr = WMCreateWriter( NULL, &writer ); 36 + ok(hr == S_OK, "WMCreateWriter failed 0x%08x\n", hr); 37 + if(FAILED(hr)) 38 + { 39 + win_skip("Failed to create IWMWriter\n"); 40 + return; 41 + } 42 + 43 + hr = IWMWriter_QueryInterface(writer, &IID_IWMHeaderInfo, (void **)&header); 44 + todo_wine ok(hr == S_OK, "Failed 0x%08x\n", hr); 45 + 46 + hr = IWMWriter_QueryInterface(writer, &IID_IWMHeaderInfo2, (void **)&header2); 47 + todo_wine ok(hr == S_OK, "Failed 0x%08x\n", hr); 48 + 49 + hr = IWMWriter_QueryInterface(writer, &IID_IWMHeaderInfo3, (void **)&header3); 50 + todo_wine ok(hr == S_OK, "Failed 0x%08x\n", hr); 51 + 52 + if(header) 53 + IWMHeaderInfo_Release(header); 54 + if(header2) 55 + IWMHeaderInfo2_Release(header2); 56 + if(header3) 57 + IWMHeaderInfo3_Release(header3); 58 + IWMWriter_Release(writer); 59 + } 60 + 61 + static void test_wmreader_interfaces(void) 62 + { 63 + HRESULT hr; 64 + IWMReader *reader; 65 + IWMReaderAdvanced *advanced; 66 + IWMReaderAdvanced2 *advanced2; 67 + IWMHeaderInfo *header; 68 + IWMHeaderInfo2 *header2; 69 + IWMHeaderInfo3 *header3; 70 + IWMProfile *profile; 71 + IWMProfile2 *profile2; 72 + IWMProfile3 *profile3; 73 + IWMPacketSize *packet; 74 + IWMPacketSize2 *packet2; 75 + IWMReaderAccelerator *accel; 76 + IWMReaderTimecode *timecode; 77 + IWMReaderNetworkConfig *netconfig; 78 + IWMReaderNetworkConfig2 *netconfig2; 79 + IWMReaderStreamClock *clock; 80 + IWMReaderTypeNegotiation *negotiation; 81 + IWMDRMReader *drmreader; 82 + IWMDRMReader2 *drmreader2; 83 + IWMDRMReader3 *drmreader3; 84 + IWMReaderPlaylistBurn *playlist; 85 + IWMLanguageList *langlist; 86 + IReferenceClock *refclock; 87 + 88 + hr = WMCreateReader( NULL, 0, &reader ); 89 + ok(hr == S_OK, "WMCreateReader failed 0x%08x\n", hr); 90 + if(FAILED(hr)) 91 + { 92 + win_skip("Failed to create IWMReader\n"); 93 + return; 94 + } 95 + 96 + hr = IWMReader_QueryInterface(reader, &IID_IWMReaderAdvanced, (void **)&advanced); 97 + ok(hr == S_OK, "Failed 0x%08x\n", hr); 98 + 99 + hr = IWMReader_QueryInterface(reader, &IID_IWMReaderAdvanced2, (void **)&advanced2); 100 + ok(hr == S_OK, "Failed 0x%08x\n", hr); 101 + 102 + hr = IWMReader_QueryInterface(reader, &IID_IWMHeaderInfo, (void **)&header); 103 + ok(hr == S_OK, "Failed 0x%08x\n", hr); 104 + 105 + hr = IWMReader_QueryInterface(reader, &IID_IWMHeaderInfo2, (void **)&header2); 106 + ok(hr == S_OK, "Failed 0x%08x\n", hr); 107 + 108 + hr = IWMReader_QueryInterface(reader, &IID_IWMHeaderInfo3, (void **)&header3); 109 + ok(hr == S_OK, "Failed 0x%08x\n", hr); 110 + 111 + hr = IWMReader_QueryInterface(reader, &IID_IWMProfile, (void **)&profile); 112 + ok(hr == S_OK, "Failed 0x%08x\n", hr); 113 + 114 + hr = IWMReader_QueryInterface(reader, &IID_IWMProfile2, (void **)&profile2); 115 + ok(hr == S_OK, "Failed 0x%08x\n", hr); 116 + 117 + hr = IWMReader_QueryInterface(reader, &IID_IWMProfile3, (void **)&profile3); 118 + ok(hr == S_OK, "Failed 0x%08x\n", hr); 119 + 120 + hr = IWMReader_QueryInterface(reader, &IID_IWMPacketSize, (void **)&packet); 121 + ok(hr == S_OK, "Failed 0x%08x\n", hr); 122 + 123 + hr = IWMReader_QueryInterface(reader, &IID_IWMPacketSize2, (void **)&packet2); 124 + ok(hr == S_OK, "Failed 0x%08x\n", hr); 125 + 126 + hr = IWMReader_QueryInterface(reader, &IID_IWMReaderAccelerator, (void **)&accel); 127 + ok(hr == S_OK, "Failed 0x%08x\n", hr); 128 + 129 + hr = IWMReader_QueryInterface(reader, &IID_IWMReaderTimecode, (void **)&timecode); 130 + ok(hr == S_OK, "Failed 0x%08x\n", hr); 131 + 132 + hr = IWMReader_QueryInterface(reader, &IID_IWMReaderNetworkConfig, (void **)&netconfig); 133 + ok(hr == S_OK, "Failed 0x%08x\n", hr); 134 + 135 + hr = IWMReader_QueryInterface(reader, &IID_IWMReaderNetworkConfig2, (void **)&netconfig2); 136 + ok(hr == S_OK, "Failed 0x%08x\n", hr); 137 + 138 + hr = IWMReader_QueryInterface(reader, &IID_IWMReaderStreamClock, (void **)&clock); 139 + ok(hr == S_OK, "Failed 0x%08x\n", hr); 140 + 141 + hr = IWMReader_QueryInterface(reader, &IID_IWMReaderTypeNegotiation, (void **)&negotiation); 142 + ok(hr == S_OK, "Failed 0x%08x\n", hr); 143 + 144 + hr = IWMReader_QueryInterface(reader, &IID_IWMDRMReader, (void **)&drmreader); 145 + ok(hr == E_NOINTERFACE, "Failed 0x%08x\n", hr); 146 + 147 + hr = IWMReader_QueryInterface(reader, &IID_IWMDRMReader2, (void **)&drmreader2); 148 + ok(hr == E_NOINTERFACE, "Failed 0x%08x\n", hr); 149 + 150 + hr = IWMReader_QueryInterface(reader, &IID_IWMDRMReader3, (void **)&drmreader3); 151 + ok(hr == E_NOINTERFACE, "Failed 0x%08x\n", hr); 152 + 153 + hr = IWMReader_QueryInterface(reader, &IID_IWMReaderPlaylistBurn, (void **)&playlist); 154 + ok(hr == S_OK, "Failed 0x%08x\n", hr); 155 + 156 + hr = IWMReader_QueryInterface(reader, &IID_IWMLanguageList, (void **)&langlist); 157 + ok(hr == S_OK, "Failed 0x%08x\n", hr); 158 + 159 + hr = IWMReader_QueryInterface(reader, &IID_IReferenceClock, (void **)&refclock); 160 + ok(hr == S_OK, "Failed 0x%08x\n", hr); 161 + 162 + if(packet) 163 + IWMPacketSize_Release(packet); 164 + if(packet2) 165 + IWMPacketSize2_Release(packet2); 166 + if(advanced) 167 + IWMReaderAdvanced_Release(advanced); 168 + if(advanced2) 169 + IWMReaderAdvanced2_Release(advanced2); 170 + if(profile) 171 + IWMProfile_Release(profile); 172 + if(profile2) 173 + IWMProfile2_Release(profile2); 174 + if(profile3) 175 + IWMProfile3_Release(profile3); 176 + if(header) 177 + IWMHeaderInfo_Release(header); 178 + if(header2) 179 + IWMHeaderInfo2_Release(header2); 180 + if(header3) 181 + IWMHeaderInfo3_Release(header3); 182 + if(accel) 183 + IWMReaderAccelerator_Release(accel); 184 + if(timecode) 185 + IWMReaderTimecode_Release(timecode); 186 + if(netconfig) 187 + IWMReaderNetworkConfig_Release(netconfig); 188 + if(netconfig2) 189 + IWMReaderNetworkConfig2_Release(netconfig2); 190 + if(clock) 191 + IWMReaderStreamClock_Release(clock); 192 + if(negotiation) 193 + IWMReaderTypeNegotiation_Release(negotiation); 194 + if(playlist) 195 + IWMReaderPlaylistBurn_Release(playlist); 196 + if(langlist) 197 + IWMLanguageList_Release(langlist); 198 + if(refclock) 199 + IReferenceClock_Release(refclock); 200 + 201 + IWMReader_Release(reader); 202 + } 203 + 204 + static void test_profile_manager_interfaces(void) 205 + { 206 + HRESULT hr; 207 + IWMProfileManager *profile; 208 + 209 + hr = WMCreateProfileManager(&profile); 210 + ok(hr == S_OK, "WMCreateProfileManager failed 0x%08x\n", hr); 211 + if(FAILED(hr)) 212 + { 213 + win_skip("Failed to create IWMProfileManager\n"); 214 + return; 215 + } 216 + 217 + IWMProfileManager_Release(profile); 218 + } 219 + 220 + static void test_WMCreateWriterPriv(void) 221 + { 222 + IWMWriter *writer, *writer2; 223 + HRESULT hr; 224 + 225 + hr = WMCreateWriterPriv(&writer); 226 + ok(hr == S_OK, "got 0x%08x\n", hr); 227 + 228 + hr = IWMWriter_QueryInterface(writer, &IID_IWMWriter, (void**)&writer2); 229 + ok(hr == S_OK, "got 0x%08x\n", hr); 230 + 231 + IWMWriter_Release(writer); 232 + IWMWriter_Release(writer2); 233 + } 234 + 235 + START_TEST(wmvcore) 236 + { 237 + HRESULT hr; 238 + 239 + hr = CoInitialize(0); 240 + ok(hr == S_OK, "failed to init com\n"); 241 + if(hr != S_OK) 242 + return; 243 + 244 + test_wmreader_interfaces(); 245 + test_wmwriter_interfaces(); 246 + test_profile_manager_interfaces(); 247 + test_WMCreateWriterPriv(); 248 + 249 + CoUninitialize(); 250 + }