Skip to content

Commit

Permalink
set_author test allows get_RegistrationInfo
Browse files Browse the repository at this point in the history
  • Loading branch information
bobbymcr committed Jul 15, 2023
1 parent 0a81c99 commit 7bed06a
Showing 1 changed file with 66 additions and 15 deletions.
81 changes: 66 additions & 15 deletions src/tasksched/test/task_test.cpp
Expand Up @@ -4,32 +4,76 @@

#include <wil/com.h>

#include "stub_reginfo.h"
#include "stub_taskdef.h"
#include "task.h"

namespace
{
class StubTaskDefinition : public wacpp::test::Stub_ITaskDefinition

struct Stub
{
public:
STDMETHODIMP get_XmlText(BSTR* pXml) noexcept override
try
struct Data
{
std::wstring xml{};
xml += L"<Task>";
xml += L"</Task>";
HRESULT get_RegistrationInfo_result{};
};

class RegistrationInfo : public wacpp::test::Stub_IRegistrationInfo
{
public:
RegistrationInfo(const Data& data)
: m_data(data)
{}

private:
const Data& m_data;
};

class TaskDefinition : public wacpp::test::Stub_ITaskDefinition
{
public:
TaskDefinition(const Data& data)
: m_data(data)
{}

STDMETHODIMP get_XmlText(
BSTR* pXml) noexcept override
try
{
std::wstring xml{};
xml += L"<Task>";
xml += L"</Task>";

auto outer_xml = wil::make_bstr(xml.c_str());
*pXml = outer_xml.release();
auto outer_xml = wil::make_bstr(xml.c_str());
*pXml = outer_xml.release();

return S_OK;
}
CATCH_RETURN()
return S_OK;
}
CATCH_RETURN()

STDMETHODIMP get_RegistrationInfo(
IRegistrationInfo** ppRegistrationInfo) noexcept override
try
{
const auto hr = m_data.get_RegistrationInfo_result;
if (SUCCEEDED(hr))
{
auto ptr = winrt::make<Stub::RegistrationInfo>(m_data);
ptr.copy_to(ppRegistrationInfo);
}

return hr;
}
CATCH_RETURN()

private:
const Data& m_data;
};
};

wil::com_ptr<ITaskDefinition> make_stub_task_definition()
wil::com_ptr<ITaskDefinition> make_stub_task_definition(const Stub::Data& data)
{
auto ptr = winrt::make<StubTaskDefinition>();
auto ptr = winrt::make<Stub::TaskDefinition>(data);
return wil::make_com_ptr(ptr.detach());
}

Expand All @@ -49,11 +93,18 @@ namespace wacpp::test

TEST(task_test, set_author)
{
Task task(make_stub_task_definition());
Stub::Data data{.get_RegistrationInfo_result = E_FAIL };
Task task(make_stub_task_definition(data));

ASSERT_THROW(task.set_author(L"Fail 1"), wil::ResultException);

assert_xml(task, L"<Task></Task>");

data.get_RegistrationInfo_result = S_OK;

ASSERT_THROW(task.set_author(L"Fail 2"), wil::ResultException);

assert_xml(task, L"<Task></Task>");
}

}

0 comments on commit 7bed06a

Please sign in to comment.