Module: wine Branch: master Commit: 5e15187fd07754277c9643e47379a0fafdca432a URL: http://source.winehq.org/git/wine.git/?a=commit;h=5e15187fd07754277c9643e473...
Author: Stefan Leichter Stefan.Leichter@camline.com Date: Sun Jul 6 15:15:37 2008 +0200
rasapi32: Added some more tests for RasEnumDevicesA, fix Wine not to crash on the tests.
---
dlls/rasapi32/rasapi.c | 2 +- dlls/rasapi32/tests/rasapi.c | 64 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletions(-)
diff --git a/dlls/rasapi32/rasapi.c b/dlls/rasapi32/rasapi.c index 2ba62e9..f14694a 100644 --- a/dlls/rasapi32/rasapi.c +++ b/dlls/rasapi32/rasapi.c @@ -249,7 +249,7 @@ DWORD WINAPI RasEnumDevicesA(LPRASDEVINFOA lpRasDevinfo, LPDWORD lpcb, LPDWORD l return ERROR_INVALID_PARAMETER;
FIXME("(%p,%p,%p),stub!\n",lpRasDevinfo,lpcb,lpcDevices); - if (*lpcb < sizeof(RASDEVINFOA)) { + if (!lpRasDevinfo || (*lpcb < sizeof(RASDEVINFOA))) { *lpcb = sizeof(RASDEVINFOA); return ERROR_BUFFER_TOO_SMALL; } diff --git a/dlls/rasapi32/tests/rasapi.c b/dlls/rasapi32/tests/rasapi.c index a435180..eba492f 100644 --- a/dlls/rasapi32/tests/rasapi.c +++ b/dlls/rasapi32/tests/rasapi.c @@ -53,14 +53,78 @@ static void test_rasenum(void) return; }
+ /* test first parameter */ result = pRasEnumDevicesA(NULL, &cb, &cDevices); trace("RasEnumDevicesA: buffersize %d\n", cb); ok(result == ERROR_BUFFER_TOO_SMALL, "Expected ERROR_BUFFER_TOO_SMALL, got %08d\n", result);
+ cb = sizeof(rasDevInfo); + result = pRasEnumDevicesA(NULL, &cb, &cDevices); + ok(result == ERROR_BUFFER_TOO_SMALL, + "Expected ERROR_BUFFER_TOO_SMALL, got %08d\n", result); + + rasDevInfo.dwSize = 0; + result = pRasEnumDevicesA(&rasDevInfo, &cb, &cDevices); + todo_wine + ok(result == ERROR_INVALID_SIZE, + "Expected ERROR_INVALID_SIZE, got %08d\n", result); + + rasDevInfo.dwSize = sizeof(rasDevInfo) -1; + result = pRasEnumDevicesA(&rasDevInfo, &cb, &cDevices); + todo_wine + ok(result == ERROR_INVALID_SIZE, + "Expected ERROR_INVALID_SIZE, got %08d\n", result); + + rasDevInfo.dwSize = sizeof(rasDevInfo) +1; + result = pRasEnumDevicesA(&rasDevInfo, &cb, &cDevices); + todo_wine + ok(result == ERROR_INVALID_SIZE, + "Expected ERROR_INVALID_SIZE, got %08d\n", result); + + /* test second parameter */ + rasDevInfo.dwSize = sizeof(rasDevInfo); result = pRasEnumDevicesA(&rasDevInfo, NULL, &cDevices); ok(result == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %08d\n", result); + + cb = 0; + result = pRasEnumDevicesA(&rasDevInfo, &cb, &cDevices); + ok(result == ERROR_BUFFER_TOO_SMALL, + "Expected ERROR_BUFFER_TOO_SMALL, got %08d\n", result); + + cb = sizeof(rasDevInfo) -1; + result = pRasEnumDevicesA(&rasDevInfo, &cb, &cDevices); + ok(result == ERROR_BUFFER_TOO_SMALL, + "Expected ERROR_BUFFER_TOO_SMALL, got %08d\n", result); + + cb = sizeof(rasDevInfo) +1; + result = pRasEnumDevicesA(&rasDevInfo, &cb, &cDevices); + todo_wine + ok(result == ERROR_BUFFER_TOO_SMALL, + "Expected ERROR_BUFFER_TOO_SMALL, got %08d\n", result); + + /* test third parameter */ + cb = sizeof(rasDevInfo); + result = pRasEnumDevicesA(&rasDevInfo, &cb, NULL); + ok(result == ERROR_INVALID_PARAMETER, + "Expected ERROR_INVALID_PARAMETER, got %08d\n", result); + + /* test combinations of invalid parameters */ + result = pRasEnumDevicesA(NULL, NULL, &cDevices); + ok(result == ERROR_INVALID_PARAMETER, + "Expected ERROR_INVALID_PARAMETER, got %08d\n", result); + + result = pRasEnumDevicesA(NULL, &cb, NULL); + ok(result == ERROR_INVALID_PARAMETER, + "Expected ERROR_INVALID_PARAMETER, got %08d\n", result); + + cb = 0; + rasDevInfo.dwSize = 0; + result = pRasEnumDevicesA(&rasDevInfo, &cb, &cDevices); + todo_wine + ok(result == ERROR_INVALID_SIZE, + "Expected ERROR_INVALID_SIZE, got %08d\n", result); }
START_TEST(rasapi)