windows.media.speech/tests: Add await helper for IAsyncOperation.
Signed-off-by: Bernhard Kölbl <besentv@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
00e3dccb67
commit
1b1ed8f1e2
|
@ -307,7 +307,6 @@ static const struct IAsyncOperationCompletedHandler_IInspectableVtbl asnyc_inspe
|
||||||
async_inspectable_handler_Invoke
|
async_inspectable_handler_Invoke
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static HRESULT WINAPI async_inspectable_handler_create_static( struct async_inspectable_handler *impl, const GUID *iid )
|
static HRESULT WINAPI async_inspectable_handler_create_static( struct async_inspectable_handler *impl, const GUID *iid )
|
||||||
{
|
{
|
||||||
impl->IAsyncOperationCompletedHandler_IInspectable_iface.lpVtbl = &asnyc_inspectable_handler_vtbl;
|
impl->IAsyncOperationCompletedHandler_IInspectable_iface.lpVtbl = &asnyc_inspectable_handler_vtbl;
|
||||||
|
@ -317,6 +316,22 @@ static HRESULT WINAPI async_inspectable_handler_create_static( struct async_insp
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define await_async_inspectable(operation, handler, iid) await_async_inspectable_(__LINE__, operation, handler, iid)
|
||||||
|
static void await_async_inspectable_( unsigned int line, IAsyncOperation_IInspectable *operation, struct async_inspectable_handler *handler, const GUID *handler_iid )
|
||||||
|
{
|
||||||
|
HRESULT hr;
|
||||||
|
|
||||||
|
async_inspectable_handler_create_static(handler, handler_iid);
|
||||||
|
handler->event_block = NULL;
|
||||||
|
handler->event_finished = CreateEventW(NULL, FALSE, FALSE, NULL);
|
||||||
|
ok_(__FILE__, line)(!!handler->event_finished, "event_finished wasn't created.\n");
|
||||||
|
|
||||||
|
hr = IAsyncOperation_IInspectable_put_Completed(operation, &handler->IAsyncHandler_IInspectable_iface);
|
||||||
|
ok_(__FILE__, line)(hr == S_OK, "IAsyncOperation_IInspectable_put_Completed failed, hr %#lx.\n", hr);
|
||||||
|
ok_(__FILE__, line)(!WaitForSingleObject(handler->event_finished , 5000), "Wait for event_finished failed.\n");
|
||||||
|
CloseHandle(handler->event_finished);
|
||||||
|
}
|
||||||
|
|
||||||
struct iterator_hstring
|
struct iterator_hstring
|
||||||
{
|
{
|
||||||
IIterator_HSTRING IIterator_HSTRING_iface;
|
IIterator_HSTRING IIterator_HSTRING_iface;
|
||||||
|
@ -972,10 +987,6 @@ static void test_SpeechRecognizer(void)
|
||||||
ref = IVector_ISpeechRecognitionConstraint_Release(constraints);
|
ref = IVector_ISpeechRecognitionConstraint_Release(constraints);
|
||||||
ok(ref == 1, "Got unexpected ref %lu.\n", ref);
|
ok(ref == 1, "Got unexpected ref %lu.\n", ref);
|
||||||
|
|
||||||
async_inspectable_handler_create_static(&compilation_handler, &IID_IAsyncOperationCompletedHandler_SpeechRecognitionCompilationResult);
|
|
||||||
compilation_handler.event_finished = CreateEventW(NULL, FALSE, FALSE, NULL);
|
|
||||||
compilation_handler.thread_id = GetCurrentThreadId();
|
|
||||||
|
|
||||||
hr = ISpeechRecognizer_CompileConstraintsAsync(recognizer, &operation);
|
hr = ISpeechRecognizer_CompileConstraintsAsync(recognizer, &operation);
|
||||||
ok(hr == S_OK, "ISpeechRecognizer_CompileConstraintsAsync failed, hr %#lx.\n", hr);
|
ok(hr == S_OK, "ISpeechRecognizer_CompileConstraintsAsync failed, hr %#lx.\n", hr);
|
||||||
|
|
||||||
|
@ -991,11 +1002,9 @@ static void test_SpeechRecognizer(void)
|
||||||
ok(hr == E_ILLEGAL_METHOD_CALL, "Got unexpected hr %#lx.\n", hr);
|
ok(hr == E_ILLEGAL_METHOD_CALL, "Got unexpected hr %#lx.\n", hr);
|
||||||
ok(compilation_result == (void*)0xdeadbeef, "Compilation result had value %p.\n", compilation_result);
|
ok(compilation_result == (void*)0xdeadbeef, "Compilation result had value %p.\n", compilation_result);
|
||||||
|
|
||||||
hr = IAsyncOperation_IInspectable_put_Completed((IAsyncOperation_IInspectable *) operation, &compilation_handler.IAsyncHandler_IInspectable_iface);
|
await_async_inspectable((IAsyncOperation_IInspectable *)operation,
|
||||||
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
|
&compilation_handler,
|
||||||
|
&IID_IAsyncOperationCompletedHandler_SpeechRecognitionCompilationResult);
|
||||||
ok(!WaitForSingleObject(compilation_handler.event_finished, 1000), "Wait for event_finished failed.\n");
|
|
||||||
CloseHandle(compilation_handler.event_finished);
|
|
||||||
|
|
||||||
hr = IAsyncOperation_SpeechRecognitionCompilationResult_put_Completed(operation, NULL);
|
hr = IAsyncOperation_SpeechRecognitionCompilationResult_put_Completed(operation, NULL);
|
||||||
ok(hr == E_ILLEGAL_DELEGATE_ASSIGNMENT, "Got unexpected hr %#lx.\n", hr);
|
ok(hr == E_ILLEGAL_DELEGATE_ASSIGNMENT, "Got unexpected hr %#lx.\n", hr);
|
||||||
|
@ -1072,12 +1081,6 @@ static void test_SpeechRecognizer(void)
|
||||||
IAsyncOperation_SpeechRecognitionCompilationResult_Release(operation);
|
IAsyncOperation_SpeechRecognitionCompilationResult_Release(operation);
|
||||||
|
|
||||||
/* Test if AsyncOperation is started immediately. */
|
/* Test if AsyncOperation is started immediately. */
|
||||||
async_inspectable_handler_create_static(&compilation_handler, &IID_IAsyncOperationCompletedHandler_SpeechRecognitionCompilationResult);
|
|
||||||
compilation_handler.event_finished = CreateEventW(NULL, FALSE, FALSE, NULL);
|
|
||||||
compilation_handler.thread_id = GetCurrentThreadId();
|
|
||||||
|
|
||||||
ok(compilation_handler.event_finished != NULL, "Finished event wasn't created.\n");
|
|
||||||
|
|
||||||
hr = ISpeechRecognizer_CompileConstraintsAsync(recognizer, &operation);
|
hr = ISpeechRecognizer_CompileConstraintsAsync(recognizer, &operation);
|
||||||
ok(hr == S_OK, "ISpeechRecognizer_CompileConstraintsAsync failed, hr %#lx.\n", hr);
|
ok(hr == S_OK, "ISpeechRecognizer_CompileConstraintsAsync failed, hr %#lx.\n", hr);
|
||||||
check_interface(operation, &IID_IAgileObject, TRUE);
|
check_interface(operation, &IID_IAgileObject, TRUE);
|
||||||
|
@ -1090,11 +1093,9 @@ static void test_SpeechRecognizer(void)
|
||||||
ok(hr == S_OK, "IAsyncInfo_get_Status failed, hr %#lx.\n", hr);
|
ok(hr == S_OK, "IAsyncInfo_get_Status failed, hr %#lx.\n", hr);
|
||||||
ok(async_status != AsyncStatus_Closed, "Status was %#x.\n", async_status);
|
ok(async_status != AsyncStatus_Closed, "Status was %#x.\n", async_status);
|
||||||
|
|
||||||
hr = IAsyncOperation_IInspectable_put_Completed((IAsyncOperation_IInspectable *) operation, &compilation_handler.IAsyncHandler_IInspectable_iface);
|
await_async_inspectable((IAsyncOperation_IInspectable *)operation,
|
||||||
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
|
&compilation_handler,
|
||||||
|
&IID_IAsyncOperationCompletedHandler_SpeechRecognitionCompilationResult);
|
||||||
ok(!WaitForSingleObject(compilation_handler.event_finished, 1000), "Wait for event_finished failed.\n");
|
|
||||||
CloseHandle(compilation_handler.event_finished);
|
|
||||||
|
|
||||||
async_status = 0xdeadbeef;
|
async_status = 0xdeadbeef;
|
||||||
hr = IAsyncInfo_get_Status(info, &async_status);
|
hr = IAsyncInfo_get_Status(info, &async_status);
|
||||||
|
|
Loading…
Reference in New Issue