From 575b1bfcc7919966064fc3ef2fe29e14b89c456b Mon Sep 17 00:00:00 2001 From: Roy Shea Date: Fri, 22 Feb 2008 15:07:12 -0800 Subject: [PATCH] qmgr: Implement IBackgroundCopyJob_GetId with test. --- dlls/qmgr/job.c | 5 +- dlls/qmgr/tests/Makefile.in | 1 + dlls/qmgr/tests/job.c | 109 ++++++++++++++++++++++++++++++++++++ 3 files changed, 113 insertions(+), 2 deletions(-) create mode 100644 dlls/qmgr/tests/job.c diff --git a/dlls/qmgr/job.c b/dlls/qmgr/job.c index 1a554de82e2..8357b87d65b 100644 --- a/dlls/qmgr/job.c +++ b/dlls/qmgr/job.c @@ -124,8 +124,9 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_GetId( IBackgroundCopyJob* iface, GUID *pVal) { - FIXME("Not implemented\n"); - return E_NOTIMPL; + BackgroundCopyJobImpl *This = (BackgroundCopyJobImpl *) iface; + memcpy(pVal, &This->jobId, sizeof *pVal); + return S_OK; } static HRESULT WINAPI BITS_IBackgroundCopyJob_GetType( diff --git a/dlls/qmgr/tests/Makefile.in b/dlls/qmgr/tests/Makefile.in index e16d5fc8141..050865689f7 100644 --- a/dlls/qmgr/tests/Makefile.in +++ b/dlls/qmgr/tests/Makefile.in @@ -6,6 +6,7 @@ TESTDLL = qmgr.dll IMPORTS = ole32 kernel32 CTESTS = \ + job.c \ qmgr.c @MAKE_TEST_RULES@ diff --git a/dlls/qmgr/tests/job.c b/dlls/qmgr/tests/job.c new file mode 100644 index 00000000000..71c07597ffe --- /dev/null +++ b/dlls/qmgr/tests/job.c @@ -0,0 +1,109 @@ +/* + * Unit test suite for Background Copy Job Interface + * + * Copyright 2007 Google (Roy Shea) + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include + +#define COBJMACROS + +#include "wine/test.h" +#include "bits.h" + +/* Globals used by many tests */ +static const WCHAR test_displayName[] = {'T', 'e', 's', 't', 0}; +static IBackgroundCopyManager *test_manager; +static IBackgroundCopyJob *test_job; +static GUID test_jobId; +static BG_JOB_TYPE test_type; + +/* Generic test setup */ +static BOOL setup(void) +{ + HRESULT hres; + + test_manager = NULL; + test_job = NULL; + memset(&test_jobId, 0, sizeof test_jobId); + test_type = BG_JOB_TYPE_DOWNLOAD; + + hres = CoCreateInstance(&CLSID_BackgroundCopyManager, NULL, + CLSCTX_LOCAL_SERVER, + &IID_IBackgroundCopyManager, + (void **) &test_manager); + if(hres != S_OK) + return FALSE; + + hres = IBackgroundCopyManager_CreateJob(test_manager, test_displayName, + test_type, &test_jobId, &test_job); + if(hres != S_OK) + { + IBackgroundCopyManager_Release(test_manager); + return FALSE; + } + + return TRUE; +} + +/* Generic test cleanup */ +static void teardown(void) +{ + IBackgroundCopyJob_Release(test_job); + IBackgroundCopyManager_Release(test_manager); +} + +/* Test that the jobId is properly set */ +static void test_GetId(void) +{ + HRESULT hres; + GUID tmpId; + + hres = IBackgroundCopyJob_GetId(test_job, &tmpId); + ok(hres == S_OK, "GetId failed: %08x\n", hres); + if(hres != S_OK) + { + skip("Unable to get ID of test_job.\n"); + return; + } + ok(memcmp(&tmpId, &test_jobId, sizeof tmpId) == 0, "Got incorrect GUID\n"); +} + +typedef void (*test_t)(void); + +START_TEST(job) +{ + static const test_t tests[] = { + test_GetId, + 0 + }; + const test_t *test; + + CoInitialize(NULL); + for (test = tests; *test; ++test) + { + /* Keep state seperate between tests. */ + if (!setup()) + { + skip("Unable to setup test\n"); + break; + } + (*test)(); + teardown(); + } + CoUninitialize(); +}