qcap/tests: Add a smart tee filter test.
This commit is contained in:
parent
14619e8626
commit
94c7806481
|
@ -16153,6 +16153,7 @@ wine_fn_config_dll psapi enable_psapi implib
|
||||||
wine_fn_config_test dlls/psapi/tests psapi_test
|
wine_fn_config_test dlls/psapi/tests psapi_test
|
||||||
wine_fn_config_dll pstorec enable_pstorec
|
wine_fn_config_dll pstorec enable_pstorec
|
||||||
wine_fn_config_dll qcap enable_qcap
|
wine_fn_config_dll qcap enable_qcap
|
||||||
|
wine_fn_config_test dlls/qcap/tests qcap_test
|
||||||
wine_fn_config_dll qedit enable_qedit
|
wine_fn_config_dll qedit enable_qedit
|
||||||
wine_fn_config_test dlls/qedit/tests qedit_test
|
wine_fn_config_test dlls/qedit/tests qedit_test
|
||||||
wine_fn_config_dll qmgr enable_qmgr
|
wine_fn_config_dll qmgr enable_qmgr
|
||||||
|
|
|
@ -2978,6 +2978,7 @@ WINE_CONFIG_DLL(psapi,,[implib])
|
||||||
WINE_CONFIG_TEST(dlls/psapi/tests)
|
WINE_CONFIG_TEST(dlls/psapi/tests)
|
||||||
WINE_CONFIG_DLL(pstorec)
|
WINE_CONFIG_DLL(pstorec)
|
||||||
WINE_CONFIG_DLL(qcap)
|
WINE_CONFIG_DLL(qcap)
|
||||||
|
WINE_CONFIG_TEST(dlls/qcap/tests)
|
||||||
WINE_CONFIG_DLL(qedit)
|
WINE_CONFIG_DLL(qedit)
|
||||||
WINE_CONFIG_TEST(dlls/qedit/tests)
|
WINE_CONFIG_TEST(dlls/qedit/tests)
|
||||||
WINE_CONFIG_DLL(qmgr)
|
WINE_CONFIG_DLL(qmgr)
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
TESTDLL = qcap.dll
|
||||||
|
IMPORTS = strmiids uuid oleaut32 ole32 advapi32
|
||||||
|
|
||||||
|
C_SRCS = \
|
||||||
|
qcap.c
|
||||||
|
|
||||||
|
@MAKE_TEST_RULES@
|
|
@ -0,0 +1,112 @@
|
||||||
|
/*
|
||||||
|
* QCAP tests
|
||||||
|
*
|
||||||
|
* Copyright 2013 Damjan Jovanovic
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
#include "windef.h"
|
||||||
|
#include "winbase.h"
|
||||||
|
#define COBJMACROS
|
||||||
|
#include <dshow.h>
|
||||||
|
#include <guiddef.h>
|
||||||
|
#include <devguid.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include "wine/strmbase.h"
|
||||||
|
#include "wine/test.h"
|
||||||
|
|
||||||
|
static void test_smart_tee_filter(void)
|
||||||
|
{
|
||||||
|
HRESULT hr;
|
||||||
|
IBaseFilter *smartTeeFilter = NULL;
|
||||||
|
IEnumPins *enumPins = NULL;
|
||||||
|
IPin *pin;
|
||||||
|
FILTER_INFO filterInfo;
|
||||||
|
int pinNumber = 0;
|
||||||
|
|
||||||
|
hr = CoCreateInstance(&CLSID_SmartTee, NULL, CLSCTX_INPROC_SERVER,
|
||||||
|
&IID_IBaseFilter, (void**)&smartTeeFilter);
|
||||||
|
todo_wine ok(SUCCEEDED(hr), "couldn't create smart tee filter, hr=%08x\n", hr);
|
||||||
|
if (FAILED(hr))
|
||||||
|
goto end;
|
||||||
|
|
||||||
|
hr = IBaseFilter_QueryFilterInfo(smartTeeFilter, &filterInfo);
|
||||||
|
ok(SUCCEEDED(hr), "QueryFilterInfo failed, hr=%08x\n", hr);
|
||||||
|
if (FAILED(hr))
|
||||||
|
goto end;
|
||||||
|
|
||||||
|
ok(lstrlenW(filterInfo.achName) == 0,
|
||||||
|
"filter's name is meant to be empty but it's %s\n", wine_dbgstr_w(filterInfo.achName));
|
||||||
|
|
||||||
|
hr = IBaseFilter_EnumPins(smartTeeFilter, &enumPins);
|
||||||
|
ok(SUCCEEDED(hr), "cannot enum filter pins, hr=%08x\n", hr);
|
||||||
|
if (FAILED(hr))
|
||||||
|
goto end;
|
||||||
|
|
||||||
|
while (IEnumPins_Next(enumPins, 1, &pin, NULL) == S_OK)
|
||||||
|
{
|
||||||
|
PIN_INFO pinInfo;
|
||||||
|
hr = IPin_QueryPinInfo(pin, &pinInfo);
|
||||||
|
ok(SUCCEEDED(hr), "QueryPinInfo failed, hr=%08x\n", hr);
|
||||||
|
if (FAILED(hr))
|
||||||
|
goto endwhile;
|
||||||
|
|
||||||
|
if (pinNumber == 0)
|
||||||
|
{
|
||||||
|
static const WCHAR wszInput[] = {'I','n','p','u','t',0};
|
||||||
|
ok(pinInfo.dir == PINDIR_INPUT, "pin 0 isn't an input pin\n");
|
||||||
|
ok(!lstrcmpW(pinInfo.achName, wszInput), "pin 0 is called %s, not 'Input'\n", wine_dbgstr_w(pinInfo.achName));
|
||||||
|
}
|
||||||
|
else if (pinNumber == 1)
|
||||||
|
{
|
||||||
|
static const WCHAR wszCapture[] = {'C','a','p','t','u','r','e',0};
|
||||||
|
ok(pinInfo.dir == PINDIR_OUTPUT, "pin 1 isn't an output pin\n");
|
||||||
|
ok(!lstrcmpW(pinInfo.achName, wszCapture), "pin 1 is called %s, not 'Capture'\n", wine_dbgstr_w(pinInfo.achName));
|
||||||
|
}
|
||||||
|
else if (pinNumber == 2)
|
||||||
|
{
|
||||||
|
static const WCHAR wszPreview[] = {'P','r','e','v','i','e','w',0};
|
||||||
|
ok(pinInfo.dir == PINDIR_OUTPUT, "pin 2 isn't an output pin\n");
|
||||||
|
ok(!lstrcmpW(pinInfo.achName, wszPreview), "pin 2 is called %s, not 'Preview'\n", wine_dbgstr_w(pinInfo.achName));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
ok(0, "pin %d isn't supposed to exist\n", pinNumber);
|
||||||
|
|
||||||
|
endwhile:
|
||||||
|
IPin_Release(pin);
|
||||||
|
pinNumber++;
|
||||||
|
}
|
||||||
|
|
||||||
|
end:
|
||||||
|
if (smartTeeFilter)
|
||||||
|
IBaseFilter_Release(smartTeeFilter);
|
||||||
|
if (enumPins)
|
||||||
|
IEnumPins_Release(enumPins);
|
||||||
|
}
|
||||||
|
|
||||||
|
START_TEST(qcap)
|
||||||
|
{
|
||||||
|
if (SUCCEEDED(CoInitialize(NULL)))
|
||||||
|
{
|
||||||
|
test_smart_tee_filter();
|
||||||
|
CoUninitialize();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
skip("CoInitialize failed\n");
|
||||||
|
}
|
Loading…
Reference in New Issue