[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