[1/2] kernel32/tests: add tests for GetDllDirectoryA

Thomas Faber thfabba at gmx.de
Sun Nov 6 12:41:01 CST 2011


On 2011-11-06 18:04, Vitaliy Margolen wrote:
> On 11/06/2011 09:14 AM, Thomas Faber wrote:
>>
> 
>> +        length = strlen(dll_directories[i]);
>> +        assert(sizeof(buffer) > length + 1);
> Please don't do this. Tests shouldn't assert because programmer failed to pick the right buffer size
> of hard-coded strings.

Check.

>> +        ok(GetLastError() == 0xdeadbeef, "Error is %u\n", GetLastError());
> You should get value of GetLastError() before the ok check here. See all places that check values of
> GetLastError().

Check.

>> +        ok(buffer[length + 1] == 'A', "i=%d, Buffer overflow\n", i);
>> +        ok(buffer[ret] == 0, "i=%d, Wrong length or not null terminated\n", i);
>> +        ok(strcmp(buffer, dll_directories[i]) == 0, "i=%d, Wrong path returned: '%s'\n", i, buffer);
> You can do all these with one memcmp call.

Indeed. That's rather a leftover from the other testcases.

>> +        ok(buffer[length + 1] == 'A', "i=%d, Buffer overflow\n", i);
>> +        ok(buffer[ret] == 0, "i=%d, Wrong length or not null terminated\n", i);
>> +        for (j = 0; buffer[j]; j++)
>> +            if (buffer[j] != dll_directories[i][j])
>> +            {
>> +                ok(0, "i=%d, Wrong path returned: %s\n", i, wine_dbgstr_w(buffer));
>> +                break;
>> +            }
> Same for this.

This one's rather tricky, as it's a comparison between an ansi and a unicode string
(I didn't want to have the directories listed twice).
I'll think of something nicer.

>> +        ok(buffer[0] == 0 || /* XP, 2003 */
>> +           buffer[0] == 'A', "i=%d, Buffer overflow\n", i);
> Please mark bad case with broke() to check for correct Wine behavior.

Hmm, which one is broken though?
Wine currently has XP's behavior, that is, put a null in there, even if the buffer
size is zero.
This is consistent with the A version of the function, but does seem less sensible.

> Also please combine A & W tests. They do mostly the same things.

Agreed.


Thanks for the review! I'll make an updated patch.

-Tom



More information about the wine-devel mailing list