[PATCH 6/9] sapi: Add a partial implementation of SpObjectTokenEnum::Next().

Huw Davies huw at codeweavers.com
Thu Sep 28 02:40:51 CDT 2017


Signed-off-by: Huw Davies <huw at codeweavers.com>
---
 dlls/sapi/tests/token.c | 34 ++++++++++++++++++++++++++++++++++
 dlls/sapi/token.c       | 12 ++++++++++--
 2 files changed, 44 insertions(+), 2 deletions(-)

diff --git a/dlls/sapi/tests/token.c b/dlls/sapi/tests/token.c
index 8c445ea..688ade7 100644
--- a/dlls/sapi/tests/token.c
+++ b/dlls/sapi/tests/token.c
@@ -49,9 +49,43 @@ static void test_data_key(void)
     ISpRegDataKey_Release( data_key );
 }
 
+static void test_token_enum(void)
+{
+    ISpObjectTokenEnumBuilder *token_enum;
+    HRESULT hr;
+    ISpObjectToken *token;
+    ULONG count;
+
+    hr = CoCreateInstance( &CLSID_SpObjectTokenEnum, NULL, CLSCTX_INPROC_SERVER,
+                           &IID_ISpObjectTokenEnumBuilder, (void **)&token_enum );
+    ok( hr == S_OK, "got %08x\n", hr );
+
+    hr = ISpObjectTokenEnumBuilder_GetCount( token_enum, &count );
+    ok( hr == SPERR_UNINITIALIZED, "got %08x\n", hr );
+
+    hr = ISpObjectTokenEnumBuilder_Next( token_enum, 1, &token, &count );
+    ok( hr == SPERR_UNINITIALIZED, "got %08x\n", hr );
+
+    hr = ISpObjectTokenEnumBuilder_SetAttribs( token_enum, NULL, NULL );
+    ok( hr == S_OK, "got %08x\n", hr );
+
+    count = 0xdeadbeef;
+    hr = ISpObjectTokenEnumBuilder_GetCount( token_enum, &count );
+    ok( hr == S_OK, "got %08x\n", hr );
+    ok( count == 0, "got %u\n", count );
+
+    count = 0xdeadbeef;
+    hr = ISpObjectTokenEnumBuilder_Next( token_enum, 1, &token, &count );
+    ok( hr == S_FALSE, "got %08x\n", hr );
+    ok( count == 0, "got %u\n", count );
+
+    ISpObjectTokenEnumBuilder_Release( token_enum );
+}
+
 START_TEST(token)
 {
     CoInitialize( NULL );
     test_data_key();
+    test_token_enum();
     CoUninitialize();
 }
diff --git a/dlls/sapi/token.c b/dlls/sapi/token.c
index 27d3abe..51d2ed1 100644
--- a/dlls/sapi/token.c
+++ b/dlls/sapi/token.c
@@ -293,8 +293,16 @@ static HRESULT WINAPI token_enum_Next( ISpObjectTokenEnumBuilder *iface,
                                        ULONG num, ISpObjectToken **tokens,
                                        ULONG *fetched )
 {
-    FIXME( "stub\n" );
-    return E_NOTIMPL;
+    struct token_enum *This = impl_from_ISpObjectTokenEnumBuilder( iface );
+
+    TRACE( "(%p)->(%u %p %p)\n", This, num, tokens, fetched );
+
+    if (!This->init) return SPERR_UNINITIALIZED;
+
+    FIXME( "semi-stub: Returning an empty enumerator\n" );
+
+    if (fetched) *fetched = 0;
+    return S_FALSE;
 }
 
 static HRESULT WINAPI token_enum_Skip( ISpObjectTokenEnumBuilder *iface,
-- 
2.7.4




More information about the wine-patches mailing list