Covellite++
Version: 2.3.2 Revision: 2584 Platform: x64 Build: 19:03 05.09.2026
Кроссплатформенный фреймворк для разработки приложений на С++
Toggle main menu visibility
Загрузка...
Поиск...
Не найдено
Application.mock.hpp
1
2
#pragma once
3
#include <stack>
4
#include <functional>
5
#include <Covellite/Events/Events.hpp>
6
#include <Covellite/App/IApplication.hpp>
7
#include <Covellite/App/IWindow.hpp>
8
9
/*
10
An example of use:
11
12
using ExampleProxy_t = ::mock::covellite::Application::Proxy;
13
ExampleProxy_t ExampleProxy;
14
ExampleProxy_t::GetInstance() = &ExampleProxy;
15
16
const ::mock::Id_t ExampleId = 1607301544;
17
18
using namespace ::testing;
19
20
InSequence Dummy;
21
22
EXPECT_CALL(ExampleProxy, Constructor(Value1))
23
.Times(1)
24
.WillOnce(Return(ExampleId));
25
26
::mock::covellite::Application Example(Value1);
27
28
EXPECT_CALL(ExampleProxy, Function(ExampleId, Value2))
29
.Times(1)
30
.WillOnce(Return(Value3));
31
32
const auto Result = Example.Function(Value2);
33
EXPECT_EQ(Value3, Result);
34
*/
35
36
namespace
mock
37
{
38
39
namespace
covellite
40
{
41
42
namespace
app
43
{
44
45
class
Application :
46
public
::covellite::app::IApplication
47
{
48
using
Events_t = ::covellite::events::Events;
49
using
Run_t = ::std::function<void(
void
)>;
50
using
Windows_t = ::std::stack<::std::shared_ptr<::covellite::app::IWindow>>;
51
52
public
:
53
class
Proxy :
54
public
::alicorn::extension::testing::Proxy<Proxy>
55
{
56
public
:
57
MOCK_METHOD0(ContinuousConstructor, Id_t(
void
));
58
MOCK_METHOD0(EventBasedConstructor, Id_t(
void
));
59
MOCK_METHOD2(Main,
void
(::std::string,
void
*));
60
MOCK_METHOD1(Run,
void
(Id_t));
61
MOCK_METHOD2(MakeWindow,
void
(Id_t, ::std::string));
62
};
63
64
public
:
65
const
Id_t m_Id = 0;
66
Application & operator= (
const
Application &) =
delete
;
67
bool
operator== (
const
Application & _Value)
const
{
return
(m_Id == _Value.m_Id); }
68
69
public
:
70
class
Continuous {};
71
class
EventBased {};
72
73
public
:
74
template
<
class
TApplication>
75
static
void
Main(
void
* _pParams)
noexcept
76
{
77
Proxy::GetInstance()->Main(
typeid
(TApplication).name(), _pParams);
78
}
79
80
const
Run_t Run;
81
82
public
:
83
operator
Events_t (
void
)
const
final
{
return
m_Events; }
84
85
protected
:
86
template
<
class
TWindow,
class
... TArgs>
87
TWindow & MakeWindow(TArgs && ... _Args)
88
{
89
Proxy::GetInstance()->MakeWindow(m_Id,
typeid
(TWindow).name());
90
91
auto
pWindow = ::std::make_shared<TWindow>(_Args ...);
92
m_Windows.push(pWindow);
93
return
*pWindow;
94
}
95
96
protected
:
97
Events_t m_Events;
98
Windows_t m_Windows;
99
100
public
:
101
explicit
Application(Continuous) :
102
m_Id(Proxy::GetInstance()->ContinuousConstructor()),
103
Run([=](void) { Proxy::GetInstance()->Run(m_Id); })
104
{
105
106
}
107
108
explicit
Application(EventBased) :
109
m_Id(Proxy::GetInstance()->EventBasedConstructor()),
110
Run([=](void) { Proxy::GetInstance()->Run(m_Id); })
111
{
112
113
}
114
115
virtual
~Application(
void
) =
default
;
116
};
117
118
}
// namespace app
119
120
}
// namespace covellite
121
122
}
// namespace mock
Solution
Solution
Covellite.App
Covellite.App
Application.mock.hpp
Документация по Covellite++. Последние изменения:
. Создано системой
1.18.0