Alexandre Julliard : setupapi/tests: Added some tests for SetupEnumInfSectionsA/W.

Alexandre Julliard julliard at winehq.org
Tue Jan 6 08:22:50 CST 2009


Module: wine
Branch: master
Commit: 2e20bd496095ae8b146b4965d4b73081a7ebc818
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=2e20bd496095ae8b146b4965d4b73081a7ebc818

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon Jan  5 20:27:06 2009 +0100

setupapi/tests: Added some tests for SetupEnumInfSectionsA/W.

---

 dlls/setupapi/tests/parser.c |   51 +++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 50 insertions(+), 1 deletions(-)

diff --git a/dlls/setupapi/tests/parser.c b/dlls/setupapi/tests/parser.c
index 8869ca1..ddfd0f2 100644
--- a/dlls/setupapi/tests/parser.c
+++ b/dlls/setupapi/tests/parser.c
@@ -33,12 +33,14 @@
 /* function pointers */
 static HMODULE hSetupAPI;
 static LPCWSTR (WINAPI *pSetupGetField)(PINFCONTEXT,DWORD);
+static BOOL (WINAPI *pSetupEnumInfSectionsA)( HINF hinf, UINT index, PSTR buffer, DWORD size, UINT *need );
 
 static void init_function_pointers(void)
 {
     hSetupAPI = GetModuleHandleA("setupapi.dll");
 
-    pSetupGetField = (void *)GetProcAddress(hSetupAPI, "pSetupGetField"); 
+    pSetupGetField = (void *)GetProcAddress(hSetupAPI, "pSetupGetField");
+    pSetupEnumInfSectionsA = (void *)GetProcAddress(hSetupAPI, "SetupEnumInfSectionsA" );
 }
 
 static const char tmpfilename[] = ".\\tmp.inf";
@@ -246,6 +248,52 @@ static void test_section_names(void)
     }
 }
 
+static void test_enum_sections(void)
+{
+    static const char *contents = STD_HEADER "[s1]\nfoo=bar\n[s2]\nbar=foo\n[s3]\n[strings]\na=b\n";
+
+    BOOL ret;
+    DWORD len;
+    HINF hinf;
+    UINT err, index;
+    char buffer[256];
+
+    if (!pSetupEnumInfSectionsA)
+    {
+        win_skip( "SetupEnumInfSectionsA not available\n" );
+        return;
+    }
+
+    hinf = test_file_contents( contents, &err );
+    ok( hinf != NULL, "Expected valid INF file\n" );
+
+    for (index = 0; ; index++)
+    {
+        SetLastError( 0xdeadbeef );
+        ret = pSetupEnumInfSectionsA( hinf, index, NULL, 0, &len );
+        err = GetLastError();
+        if (!ret && GetLastError() == ERROR_NO_MORE_ITEMS) break;
+        ok( ret, "SetupEnumInfSectionsA failed\n" );
+        ok( len == 3 || len == 8, "wrong len %u\n", len );
+
+        SetLastError( 0xdeadbeef );
+        ret = pSetupEnumInfSectionsA( hinf, index, NULL, sizeof(buffer), &len );
+        err = GetLastError();
+        ok( !ret, "SetupEnumInfSectionsA succeeded\n" );
+        ok( err == ERROR_INVALID_USER_BUFFER, "wrong error %u\n", err );
+        ok( len == 3 || len == 8, "wrong len %u\n", len );
+
+        SetLastError( 0xdeadbeef );
+        ret = pSetupEnumInfSectionsA( hinf, index, buffer, sizeof(buffer), &len );
+        ok( ret, "SetupEnumInfSectionsA failed err %u\n", GetLastError() );
+        ok( len == 3 || len == 8, "wrong len %u\n", len );
+        ok( !lstrcmpi( buffer, "version" ) || !lstrcmpi( buffer, "s1" ) ||
+            !lstrcmpi( buffer, "s2" ) || !lstrcmpi( buffer, "s3" ) || !lstrcmpi( buffer, "strings" ),
+            "bad section '%s'\n", buffer );
+    }
+    SetupCloseInfFile( hinf );
+}
+
 
 /* Test various key and value names */
 
@@ -672,6 +720,7 @@ START_TEST(parser)
     init_function_pointers();
     test_invalid_files();
     test_section_names();
+    test_enum_sections();
     test_key_names();
     test_close_inf_file();
     test_pSetupGetField();




More information about the wine-cvs mailing list