[PATCH 2/6] iphlpapi/tests: Add more tests for GetAdaptersInfo().
Huw Davies
huw at codeweavers.com
Tue Aug 3 03:20:19 CDT 2021
Signed-off-by: Huw Davies <huw at codeweavers.com>
---
dlls/iphlpapi/tests/iphlpapi.c | 83 ++++++++++++++++------------------
1 file changed, 40 insertions(+), 43 deletions(-)
diff --git a/dlls/iphlpapi/tests/iphlpapi.c b/dlls/iphlpapi/tests/iphlpapi.c
index 785e4e9fb70..e5a9994fbd5 100644
--- a/dlls/iphlpapi/tests/iphlpapi.c
+++ b/dlls/iphlpapi/tests/iphlpapi.c
@@ -1118,53 +1118,50 @@ todo_wine_if( row.dwType == IF_TYPE_SOFTWARE_LOOPBACK)
static void testGetAdaptersInfo(void)
{
- DWORD apiReturn;
+ IP_ADAPTER_INFO *ptr, *buf;
+ NET_LUID luid;
+ GUID guid;
+ char name[ARRAY_SIZE(ptr->AdapterName)];
+ DWORD err;
ULONG len = 0;
+ MIB_IFROW row;
- apiReturn = GetAdaptersInfo(NULL, NULL);
- if (apiReturn == ERROR_NOT_SUPPORTED) {
- skip("GetAdaptersInfo is not supported\n");
- return;
- }
- ok(apiReturn == ERROR_INVALID_PARAMETER,
- "GetAdaptersInfo returned %d, expected ERROR_INVALID_PARAMETER\n",
- apiReturn);
- apiReturn = GetAdaptersInfo(NULL, &len);
- ok(apiReturn == ERROR_NO_DATA || apiReturn == ERROR_BUFFER_OVERFLOW,
- "GetAdaptersInfo returned %d, expected ERROR_NO_DATA or ERROR_BUFFER_OVERFLOW\n",
- apiReturn);
- if (apiReturn == ERROR_NO_DATA)
- ; /* no adapter's, that's okay */
- else if (apiReturn == ERROR_BUFFER_OVERFLOW) {
- PIP_ADAPTER_INFO ptr, buf = HeapAlloc(GetProcessHeap(), 0, len);
- NET_LUID luid;
- GUID guid;
- char AdapterName[ARRAY_SIZE(ptr->AdapterName)];
+ err = GetAdaptersInfo( NULL, NULL );
+ ok( err == ERROR_INVALID_PARAMETER, "got %d\n", err );
+ err = GetAdaptersInfo( NULL, &len );
+ ok( err == ERROR_NO_DATA || err == ERROR_BUFFER_OVERFLOW, "got %d\n", err );
+ if (err == ERROR_NO_DATA) return;
- apiReturn = GetAdaptersInfo(buf, &len);
- ok(apiReturn == NO_ERROR,
- "GetAdaptersInfo(buf, &dwSize) returned %d, expected NO_ERROR\n",
- apiReturn);
- ptr = buf;
- while (ptr) {
- ConvertInterfaceIndexToLuid(ptr->Index, &luid);
- ConvertInterfaceLuidToGuid(&luid, &guid);
- sprintf(AdapterName, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
- guid.Data1, guid.Data2, guid.Data3, guid.Data4[0], guid.Data4[1],
- guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5],
- guid.Data4[6], guid.Data4[7]);
- ok(!strcmp(ptr->AdapterName, AdapterName), "expected '%s' got '%s'\n", ptr->AdapterName, AdapterName);
- ok(ptr->IpAddressList.IpAddress.String[0], "A valid IP address must be present\n");
- ok(ptr->IpAddressList.IpMask.String[0], "A valid mask must be present\n");
- ok(ptr->GatewayList.IpAddress.String[0], "A valid IP address must be present\n");
- ok(ptr->GatewayList.IpMask.String[0], "A valid mask must be present\n");
- trace("adapter '%s', address %s/%s gateway %s/%s\n", ptr->AdapterName,
- ptr->IpAddressList.IpAddress.String, ptr->IpAddressList.IpMask.String,
- ptr->GatewayList.IpAddress.String, ptr->GatewayList.IpMask.String);
- ptr = ptr->Next;
- }
- HeapFree(GetProcessHeap(), 0, buf);
+ buf = malloc( len );
+ err = GetAdaptersInfo( buf, &len );
+ ok( !err, "got %d\n", err );
+ ptr = buf;
+ while (ptr)
+ {
+ trace( "adapter '%s', address %s/%s gateway %s/%s\n", ptr->AdapterName,
+ ptr->IpAddressList.IpAddress.String, ptr->IpAddressList.IpMask.String,
+ ptr->GatewayList.IpAddress.String, ptr->GatewayList.IpMask.String );
+ row.dwIndex = ptr->Index;
+ GetIfEntry( &row );
+ ConvertInterfaceIndexToLuid( ptr->Index, &luid );
+ ConvertInterfaceLuidToGuid( &luid, &guid );
+ sprintf( name, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
+ guid.Data1, guid.Data2, guid.Data3, guid.Data4[0], guid.Data4[1],
+ guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5],
+ guid.Data4[6], guid.Data4[7] );
+ ok( !strcmp( ptr->AdapterName, name ), "expected '%s' got '%s'\n", ptr->AdapterName, name );
+ ok( !strcmp( ptr->Description, (char *)row.bDescr ), "got %s vs %s\n", ptr->Description, (char *)row.bDescr );
+ ok( ptr->AddressLength == row.dwPhysAddrLen, "got %d vs %d\n", ptr->AddressLength, row.dwPhysAddrLen );
+ ok( !memcmp(ptr->Address, row.bPhysAddr, ptr->AddressLength ), "mismatch\n" );
+ ok( ptr->Type == row.dwType, "got %d vs %d\n", ptr->Type, row.dwType );
+ ok( ptr->Type != MIB_IF_TYPE_LOOPBACK, "shouldn't get loopback\n" );
+ ok( ptr->IpAddressList.IpAddress.String[0], "A valid IP address must be present\n" );
+ ok( ptr->IpAddressList.IpMask.String[0], "A valid mask must be present\n" );
+ ok( ptr->GatewayList.IpAddress.String[0], "A valid IP address must be present\n" );
+ ok( ptr->GatewayList.IpMask.String[0], "A valid mask must be present\n" );
+ ptr = ptr->Next;
}
+ free( buf );
}
static void testGetNetworkParams(void)
--
2.23.0
More information about the wine-devel
mailing list