Piotr Caban : qcap: Fix ICaptureGraphBuilder2::RenderStream test failures.
Alexandre Julliard
julliard at winehq.org
Fri Nov 22 10:23:07 CST 2013
Module: wine
Branch: master
Commit: 5a69b888f7a9d2e6fcad6f2a9d5d7977ffa14642
URL: http://source.winehq.org/git/wine.git/?a=commit;h=5a69b888f7a9d2e6fcad6f2a9d5d7977ffa14642
Author: Piotr Caban <piotr at codeweavers.com>
Date: Fri Nov 22 12:17:27 2013 +0100
qcap: Fix ICaptureGraphBuilder2::RenderStream test failures.
---
dlls/qcap/tests/qcap.c | 54 ++++++++++++++++++++++++++++++++++++++---------
1 files changed, 43 insertions(+), 11 deletions(-)
diff --git a/dlls/qcap/tests/qcap.c b/dlls/qcap/tests/qcap.c
index ecace3e..0d84d49 100644
--- a/dlls/qcap/tests/qcap.c
+++ b/dlls/qcap/tests/qcap.c
@@ -154,6 +154,8 @@ static const struct {
filter_type filter_type;
BOOL wine_missing;
BOOL wine_extra;
+ BOOL optional; /* fails on wine if missing */
+ BOOL broken;
} renderstream_cat_media[] = {
{BASEFILTER_QUERYINTERFACE, SOURCE_FILTER},
{BASEFILTER_ENUMPINS, SOURCE_FILTER},
@@ -189,15 +191,20 @@ static const struct {
{PIN_QUERYPININFO, SOURCE_FILTER, TRUE},
{KSPROPERTYSET_GET, SOURCE_FILTER, TRUE},
{ENUMPINS_NEXT, SOURCE_FILTER, TRUE},
- {PIN_ENUMMEDIATYPES, SOURCE_FILTER, TRUE},
- {ENUMMEDIATYPES_NEXT, SOURCE_FILTER, TRUE},
+ {PIN_ENUMMEDIATYPES, SOURCE_FILTER, TRUE, FALSE, TRUE},
+ {ENUMMEDIATYPES_NEXT, SOURCE_FILTER, TRUE, FALSE, TRUE},
{BASEFILTER_QUERYINTERFACE, SINK_FILTER, FALSE, TRUE},
{BASEFILTER_ENUMPINS, SINK_FILTER},
{ENUMPINS_NEXT, SINK_FILTER},
{PIN_QUERYDIRECTION, SINK_FILTER},
{PIN_CONNECTEDTO, SINK_FILTER},
{GRAPHBUILDER_CONNECT, NOT_FILTER},
- {BASEFILTER_GETSTATE, SOURCE_FILTER, TRUE},
+ {BASEFILTER_GETSTATE, SOURCE_FILTER, TRUE, FALSE, TRUE},
+ {BASEFILTER_ENUMPINS, SOURCE_FILTER, FALSE, FALSE, FALSE, TRUE},
+ {ENUMPINS_NEXT, SOURCE_FILTER, FALSE, FALSE, FALSE, TRUE},
+ {PIN_QUERYDIRECTION, SOURCE_FILTER, FALSE, FALSE, FALSE, TRUE},
+ {PIN_CONNECTEDTO, SOURCE_FILTER, FALSE, FALSE, FALSE, TRUE},
+ {ENUMPINS_NEXT, SOURCE_FILTER, FALSE, FALSE, FALSE, TRUE},
{END, NOT_FILTER}
}, renderstream_intermediate[] = {
{BASEFILTER_QUERYINTERFACE, SOURCE_FILTER},
@@ -234,8 +241,8 @@ static const struct {
{PIN_QUERYPININFO, SOURCE_FILTER, TRUE},
{KSPROPERTYSET_GET, SOURCE_FILTER, TRUE},
{ENUMPINS_NEXT, SOURCE_FILTER, TRUE},
- {PIN_ENUMMEDIATYPES, SOURCE_FILTER, TRUE},
- {ENUMMEDIATYPES_NEXT, SOURCE_FILTER, TRUE},
+ {PIN_ENUMMEDIATYPES, SOURCE_FILTER, TRUE, FALSE, TRUE},
+ {ENUMMEDIATYPES_NEXT, SOURCE_FILTER, TRUE, FALSE, TRUE},
{BASEFILTER_QUERYINTERFACE, SINK_FILTER, FALSE, TRUE},
{BASEFILTER_ENUMPINS, SINK_FILTER},
{ENUMPINS_NEXT, SINK_FILTER},
@@ -256,31 +263,56 @@ static const struct {
{PIN_QUERYDIRECTION, INTERMEDIATE_FILTER},
{PIN_CONNECTEDTO, INTERMEDIATE_FILTER},
{GRAPHBUILDER_CONNECT, NOT_FILTER},
- {BASEFILTER_GETSTATE, SOURCE_FILTER, TRUE},
+ {BASEFILTER_GETSTATE, SOURCE_FILTER, TRUE, FALSE, TRUE},
+ {BASEFILTER_ENUMPINS, SOURCE_FILTER, FALSE, FALSE, FALSE, TRUE},
+ {ENUMPINS_NEXT, SOURCE_FILTER, FALSE, FALSE, FALSE, TRUE},
+ {PIN_QUERYDIRECTION, SOURCE_FILTER, FALSE, FALSE, FALSE, TRUE},
+ {PIN_CONNECTEDTO, SOURCE_FILTER, FALSE, FALSE, FALSE, TRUE},
+ {ENUMPINS_NEXT, SOURCE_FILTER, FALSE, FALSE, FALSE, TRUE},
{END, NOT_FILTER}
}, *current_calls_list;
int call_no;
static void check_calls_list(const char *func, call_id id, filter_type type)
{
- while(current_calls_list[call_no].wine_missing || current_calls_list[call_no].wine_extra) {
+ while(current_calls_list[call_no].wine_missing || current_calls_list[call_no].wine_extra ||
+ current_calls_list[call_no].optional || current_calls_list[call_no].broken) {
if(current_calls_list[call_no].wine_missing) {
- todo_wine ok(current_calls_list[call_no].call_id == id && current_calls_list[call_no].filter_type == type,
- "missing call, got %s(%d), expected %d\n", func, id, current_calls_list[call_no].call_id);
+ todo_wine ok((current_calls_list[call_no].call_id == id && current_calls_list[call_no].filter_type == type) ||
+ broken(current_calls_list[call_no].optional && (current_calls_list[call_no].call_id != id ||
+ current_calls_list[call_no].filter_type != type)),
+ "missing call, got %s(%d), expected %d (%d)\n", func, id, current_calls_list[call_no].call_id, call_no);
if(current_calls_list[call_no].call_id != id || current_calls_list[call_no].filter_type != type)
call_no++;
else
break;
- }else {
+ }else if(current_calls_list[call_no].wine_extra) {
todo_wine ok(current_calls_list[call_no].call_id != id || current_calls_list[call_no].filter_type != type,
- "extra call, got %s(%d)\n", func, id);
+ "extra call, got %s(%d) (%d)\n", func, id, call_no);
if(current_calls_list[call_no].call_id == id && current_calls_list[call_no].filter_type == type) {
call_no++;
return;
}
call_no++;
+ }else if(current_calls_list[call_no].optional) {
+ ok((current_calls_list[call_no].call_id == id && current_calls_list[call_no].filter_type == type) ||
+ broken(current_calls_list[call_no].call_id != id || current_calls_list[call_no].filter_type != type),
+ "unexpected call: %s on %s (%d)\n", func, debugstr_filter_type(type), call_no);
+
+ if(current_calls_list[call_no].call_id != id || current_calls_list[call_no].filter_type != type)
+ call_no++;
+ else
+ break;
+ }else if(current_calls_list[call_no].broken) {
+ ok(broken(current_calls_list[call_no].call_id == id && current_calls_list[call_no].filter_type == type) ||
+ (current_calls_list[call_no].call_id != id || current_calls_list[call_no].filter_type != type),
+ "unexpected call: %s on %s (%d)\n", func, debugstr_filter_type(type), call_no);
+
+ if(current_calls_list[call_no].call_id == id && current_calls_list[call_no].filter_type == type)
+ break;
+ call_no++;
}
}
More information about the wine-cvs
mailing list