[IPHLPAPI_APITEST]
authorPierre Schweitzer <pierre@reactos.org>
Wed, 16 Dec 2015 21:11:22 +0000 (21:11 +0000)
committerPierre Schweitzer <pierre@reactos.org>
Wed, 16 Dec 2015 21:11:22 +0000 (21:11 +0000)
Rewrite the two existing tests for ICMP and add a third one (for IPv6).
Patch by Tim Crawford.

ROSTESTS-212 #resolve #comment Commited in r70367. Thanks!

svn path=/trunk/; revision=70367

rostests/apitests/iphlpapi/icmp.c

index 1107a80..bf6e9d5 100644 (file)
@@ -1,21 +1,8 @@
 /*
- * Unit test suite for Icmp functions
- *
- * Copyright 2006 Steven Edwards
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * PROJECT:         ReactOS API Tests
+ * LICENSE:         LGPLv2.1+ - See COPYING.LIB in the top level directory
+ * PURPOSE:         Tests for ICMP functions
+ * PROGRAMMERS:     Tim Crawford
  */
 
 #include <apitest.h>
 #include <iphlpapi.h>
 #include <icmpapi.h>
 
-HANDLE handle;
+static
+void
+test_IcmpCreateFile(void)
+{
+    HANDLE hIcmp;
+
+    SetLastError(0xDEADBEEF);
+    hIcmp = IcmpCreateFile();
+    ok(hIcmp != INVALID_HANDLE_VALUE, "IcmpCreateFile failed unexpectedly: %lu\n", GetLastError());
+
+    if (hIcmp != INVALID_HANDLE_VALUE)
+        IcmpCloseHandle(hIcmp);
+}
 
-static void test_IcmpCreateFile(void)
+static
+void
+test_Icmp6CreateFile(void)
 {
-    handle=IcmpCreateFile();
-    ok(handle!=INVALID_HANDLE_VALUE,"Failed to create icmp file handle\n");
+    HANDLE hIcmp;
+
+    SetLastError(0xDEADBEEF);
+    hIcmp = Icmp6CreateFile();
+
+    if (GetLastError() == ERROR_FILE_NOT_FOUND)
+    {
+        /* On Windows Server 2003, the IPv6 protocol must be installed. */
+        skip("IPv6 is not available.\n");
+        return;
+    }
+
+    ok(hIcmp != INVALID_HANDLE_VALUE, "Icmp6CreateFile failed unexpectedly: %lu\n", GetLastError());
+
+    if (hIcmp != INVALID_HANDLE_VALUE)
+        IcmpCloseHandle(hIcmp);
 }
 
-static void test_IcmpCloseHandle(void)
+static
+void
+test_IcmpCloseHandle(void)
 {
-    BOOL result;
-    result=IcmpCloseHandle(handle);
-    ok(result!=FALSE,"Failed to close icmp file handle\n");
+    HANDLE hIcmp;
+    BOOL bRet;
+
+    SetLastError(0xDEADBEEF);
+    hIcmp = IcmpCreateFile();
+    if (hIcmp != INVALID_HANDLE_VALUE)
+    {
+        bRet = IcmpCloseHandle(hIcmp);
+        ok(bRet, "IcmpCloseHandle failed unexpectedly: %lu\n", GetLastError());
+    }
+
+    SetLastError(0xDEADBEEF);
+    hIcmp = Icmp6CreateFile();
+    if (hIcmp != INVALID_HANDLE_VALUE)
+    {
+        bRet = IcmpCloseHandle(hIcmp);
+        ok(bRet, "IcmpCloseHandle failed unexpectedly: %lu\n", GetLastError());
+    }
+
+    hIcmp = INVALID_HANDLE_VALUE;
+    SetLastError(0xDEADBEEF);
+    bRet = IcmpCloseHandle(hIcmp);
+    ok(!bRet, "IcmpCloseHandle succeeded unexpectedly\n");
+    ok_err(ERROR_INVALID_HANDLE);
+
+    hIcmp = NULL;
+    SetLastError(0xDEADBEEF);
+    bRet = IcmpCloseHandle(hIcmp);
+    ok(!bRet, "IcmpCloseHandle succeeded unexpectedly\n");
+    ok_err(ERROR_INVALID_HANDLE);
 }
 
 START_TEST(icmp)
 {
     test_IcmpCreateFile();
+    test_Icmp6CreateFile();
     test_IcmpCloseHandle();
 }