static void ok_sequence_(struct call_sequence **seq, int sequence_index, const struct call_entry *expected, const char *context, BOOL todo, const char *file, int line) { struct call_sequence *call_seq = seq[sequence_index]; static const struct call_entry end_of_sequence = { LastKind }; const struct call_entry *actual, *sequence; int failcount = 0; struct testcontext ctxt; add_call(seq, sequence_index, &end_of_sequence); sequence = call_seq->sequence; actual = sequence; ctxt.failcount = &failcount; ctxt.todo = todo; ctxt.file = file; ctxt.line = line; while (expected->kind != LastKind && actual->kind != LastKind) { if (expected->kind == actual->kind) { ctxt.kind = expected->kind; switch (actual->kind) { case ScriptAnalysis: test_uint(actual->sa.pos, expected->sa.pos, "position", &ctxt); test_uint(actual->sa.len, expected->sa.len, "length", &ctxt); test_uint(actual->sa.shapes, expected->sa.shapes, "shapes", &ctxt); break; default: ok(0, "%s: callback not handled, %s\n", context, get_analysis_kind_name(actual->kind)); } expected++; actual++; } else if (todo) { failcount++; todo_wine { ok_(file, line) (0, "%s: call %s was expected, but got call %s instead\n", context, get_analysis_kind_name(expected->kind), get_analysis_kind_name(actual->kind)); } flush_sequence(seq, sequence_index); return; } else { ok_(file, line) (0, "%s: call %s was expected, but got call %s instead\n", context, get_analysis_kind_name(expected->kind), get_analysis_kind_name(actual->kind)); expected++; actual++; } }
static void ok_sequence_(struct drawcall_sequence **seq, int sequence_index, const struct drawcall_entry *expected, const char *context, BOOL todo, const char *file, int line) { static const struct drawcall_entry end_of_sequence = { DRAW_LAST_KIND }; struct drawcall_sequence *call_seq = seq[sequence_index]; const struct drawcall_entry *actual, *sequence; int failcount = 0; add_call(seq, sequence_index, &end_of_sequence); sequence = call_seq->sequence; actual = sequence; while (expected->kind != DRAW_LAST_KIND && actual->kind != DRAW_LAST_KIND) { if (expected->kind != actual->kind) { if (todo) { failcount++; todo_wine ok_(file, line) (0, "%s: call %s was expected, but got call %s instead\n", context, get_draw_kind_name(expected->kind), get_draw_kind_name(actual->kind)); flush_sequence(seq, sequence_index); return; } else ok_(file, line) (0, "%s: call %s was expected, but got call %s instead\n", context, get_draw_kind_name(expected->kind), get_draw_kind_name(actual->kind)); } expected++; actual++; } if (todo) { todo_wine { if (expected->kind != DRAW_LAST_KIND || actual->kind != DRAW_LAST_KIND) { failcount++; ok_(file, line) (0, "%s: the call sequence is not complete: expected %s - actual %s\n", context, get_draw_kind_name(expected->kind), get_draw_kind_name(actual->kind)); } } } else if (expected->kind != DRAW_LAST_KIND || actual->kind != DRAW_LAST_KIND)
static void ok_sequence(const struct message *expected, const char *context) { static const struct message end_of_sequence = { 0, 0 }; const struct message *actual; add_message(&end_of_sequence); actual = sequence; while(expected->procnum && actual->procnum) { ok(expected->procnum == actual->procnum, "%s: the procnum %d was expected, but got procnum %d instead\n", context, expected->procnum, actual->procnum); ok(expected->wParam == actual->wParam, "%s: in procnum %d expecting wParam 0x%lx got 0x%lx\n", context, expected->procnum, expected->wParam, actual->wParam); expected++; actual++; } ok(!expected->procnum, "Received fewer messages than expected\n"); ok(!actual->procnum, "Received more messages than expected\n"); flush_sequence(); }
static inline void flush_sequences(struct call_sequence **seq, int n) { int i; for (i = 0; i < n; i++) flush_sequence(seq, i); }