<div dir="ltr"><div><div><div><div><div>I realized that it might not be as easy as it seems to implement that approach - as including the todo's there is complicated. I've added another field called vtable_todo in the test, and done something like this, similar to how I did in the test_d3drm_qi tests:<br><br></div>if (tables[i].vtable_todo || tables[j].vtable_todo)<br></div>    todo_wine ok(...);<br></div>else<br></div>    ok(...);<br><br></div><div>The problem with this approach is that if the tests fail on wine no matter what boolean combination I use. It's because we can't explicitly set which vtable should have a todo against another vtable in this case. If the vtable_todo is set to true for an entry, it'll do a todo_wine for every other interface it is checked against, which is undesirable and causes the fails or successful todo_wine(s).<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Apr 3, 2015 at 2:41 AM, Aaryaman Vasishta <span dir="ltr"><<a href="mailto:jem456.vasishta@gmail.com" target="_blank">jem456.vasishta@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span class="">On Fri, Apr 3, 2015 at 2:10 AM, Stefan Dösinger <span dir="ltr"><<a href="mailto:stefandoesinger@gmail.com" target="_blank">stefandoesinger@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">-----BEGIN PGP SIGNED MESSAGE-----<br>
Hash: SHA1<br>
<span><br>
Am 2015-04-02 um 18:36 schrieb Aaryaman Vasishta:<br>
>      REFIID iid;<br>
>      REFIID refcount_iid;<br>
> +    REFIID vtable_iid;<br>
>      HRESULT hr;<br>
>      BOOL refcount_todo;<br>
> +    BOOL vtable_equal;<br>
> +    BOOL vtable_todo;<br>
>  };<br>
</span>I think this is more complicated than it needs to be. All you should<br>
need is the vtable_iid field. Then, in the inner loop do something like<br>
<br>
if (IsEqualGUID(tests[i].vtable_iid, tests[j].vtable_iid))<br>
    ok(iface1 == iface2, ...);<br>
else<br>
    ok(iface1 != iface2, ...);<br>
<br>
I may be missing something though.<br></blockquote></span>I've tried this and it works too. I'll use this on the patch try, and along with it also keep vtable_todo as some tests won't work on wine until they're fixed.<br></div><div class="gmail_quote"><span class=""><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
If you want to compare two Win32 BOOLs for equality you have to be careful:<br>
<br>
BOOL a = 1;<br>
BOOL b = 2;<br>
if (a)<br>
   printf("this is true.\n");<br>
if (b)<br>
   printf("this is also true.\n");<br>
if (a == b)<br>
   printf("oops, this is false.\n");<br>
<br>
For something like that you can use<br>
if (!a == !b)<br>
    printf("yay, this is true!\n");<br>
<br>
IsEqualGUID(a, b) is defined as !memcmp(a, b, sizeof(GUID)), so<br>
IsEqualGUID() == (ptr1 == ptr2) should be OK though.<br>
<br></blockquote></span><div>I'll keep this in mind the next time I come across it. Thank You!<br><br></div><div>jam </div></div><br></div></div>
</blockquote></div><br></div>