@@ -256,6 +256,7 @@ static void test_token_enum(void)
256
256
ISpObjectToken * out_tokens [5 ];
257
257
WCHAR token_id [MAX_PATH ];
258
258
ULONG count ;
259
+ VARIANT vars [3 ];
259
260
int i ;
260
261
261
262
hr = CoCreateInstance ( & CLSID_SpObjectTokenEnum , NULL , CLSCTX_INPROC_SERVER ,
@@ -372,6 +373,33 @@ static void test_token_enum(void)
372
373
hr = IUnknown_QueryInterface ( unk , & IID_IEnumVARIANT , (void * * )& enumvar );
373
374
ok ( hr == S_OK , "got %08lx\n" , hr );
374
375
IUnknown_Release ( unk );
376
+
377
+ V_VT ( & vars [0 ] ) = VT_ILLEGAL ;
378
+ V_DISPATCH ( & vars [0 ] ) = (IDispatch * )0xdeadbeef ;
379
+ hr = IEnumVARIANT_Next ( enumvar , 1 , vars , NULL );
380
+ ok ( hr == S_OK , "got %08lx\n" , hr );
381
+ ok ( V_VT ( & vars [0 ] ) == VT_DISPATCH , "got %#x\n" , V_VT ( & vars [0 ] ) );
382
+ ok ( V_DISPATCH ( & vars [0 ] ) != (IDispatch * )0xdeadbeef && V_DISPATCH ( & vars [0 ] ) != NULL ,
383
+ "got %p\n" , V_DISPATCH ( & vars [0 ] ) );
384
+ VariantClear ( & vars [0 ] );
385
+
386
+ for ( i = 0 ; i < 3 ; i ++ ) {
387
+ V_VT ( & vars [i ] ) = VT_ILLEGAL ;
388
+ V_DISPATCH ( & vars [i ] ) = (IDispatch * )0xdeadbeef ;
389
+ }
390
+ count = 0xdeadbeef ;
391
+
392
+ hr = IEnumVARIANT_Next ( enumvar , 3 , vars , & count );
393
+ ok ( hr == S_FALSE , "got %08lx\n" , hr );
394
+ ok ( count == 2 , "got %lu\n" , count );
395
+ for ( i = 0 ; i < 2 ; i ++ ) {
396
+ ok ( V_VT ( & vars [i ] ) == VT_DISPATCH , "got %#x\n" , V_VT ( & vars [i ] ) );
397
+ ok ( V_DISPATCH ( & vars [i ] ) != (IDispatch * )0xdeadbeef && V_DISPATCH ( & vars [i ] ) != NULL ,
398
+ "got %p\n" , V_DISPATCH ( & vars [i ] ) );
399
+ VariantClear ( & vars [i ] );
400
+ }
401
+ ok ( V_VT ( & vars [2 ] ) == VT_ILLEGAL , "got %#x\n" , V_VT ( & vars [2 ] ) );
402
+
375
403
IEnumVARIANT_Release ( enumvar );
376
404
377
405
ISpeechObjectTokens_Release ( speech_tokens );
0 commit comments