Covellite++  Version: 2.3.0 Revision: ??? Platform: x64 Build: 23:13 04.01.2025
Кроссплатформенный фреймворк для разработки приложений на С++
Загрузка...
Поиск...
Не найдено
Window.mock.hpp
1
2#pragma once
3#include <typeinfo>
4#include <Covellite/Events/Events.hpp>
5#include <Covellite/App/IWindow.hpp>
6#include <Covellite/Api/Window.mock.hpp>
7
8/*
9An example of use:
10
11using ExampleProxy_t = ::mock::covellite::gui::Window::Proxy;
12ExampleProxy_t ExampleProxy;
13ExampleProxy_t::GetInstance() = &ExampleProxy;
14
15const ::mock::Id_t ExampleId = 1607301544;
16
17using namespace ::testing;
18
19InSequence Dummy;
20
21EXPECT_CALL(ExampleProxy, Constructor(Value1))
22 .Times(1)
23 .WillOnce(Return(ExampleId));
24
25::mock::covellite::gui::Window Example(Value1);
26
27EXPECT_CALL(ExampleProxy, Function(ExampleId, Value2))
28 .Times(1)
29 .WillOnce(Return(Value3));
30
31const auto Result = Example.Function(Value2);
32EXPECT_EQ(Value3, Result);
33*/
34
35namespace mock
36{
37
38namespace covellite
39{
40
41namespace gui
42{
43
44class Window :
47{
48 using WindowApi_t = ::covellite::api::IWindow;
49 using WindowApiPtr_t = ::std::shared_ptr<::covellite::api::IWindow>;
50 using Path_t = ::boost::filesystem::path;
51 using Utf8String_t = ::std::string;
52 using StringBank_t = ::std::map<Utf8String_t, Utf8String_t>;
53 using LayerPtr_t = ::std::shared_ptr<::covellite::gui::ILayer>;
54
55public:
56 class Proxy :
57 public ::alicorn::extension::testing::Proxy<Proxy>
58 {
59 public:
60 MOCK_METHOD1(Constructor, Id_t(Id_t));
61 MOCK_METHOD1(Set, void(StringBank_t));
62 MOCK_METHOD2(PushLayer, Id_t(Id_t, ::std::string));
63 MOCK_METHOD1(Back, void(Id_t));
64
65 public:
66 MOCK_METHOD1(DoDrawWindow, void(Id_t));
67 };
68
69private:
70 void DoDrawWindow(void)
71 {
72 Proxy::GetInstance()->DoDrawWindow(m_Id);
73 }
74
75public:
76 const Id_t m_Id = 0;
77 Window & operator= (const Window &) = delete;
78 bool operator== (const Window & _Value) const { return (m_Id == _Value.m_Id); }
79
80public:
81 // Интерфейс events::IEvents:
82 operator Events_t (void) const override
83 {
84 return m_Events;
85 }
86
87public:
88 // Интерфейс ::covellite::gui::IWindow
89 DocumentPtr_t LoadDocument(const PathToFile_t &) override { throw 1; }
90
91public:
92 void Set(const StringBank_t & _Bank)
93 {
94 Proxy::GetInstance()->Set(_Bank);
95 }
96
97 template<class TLayer>
98 TLayer & PushLayer(void)
99 {
100 const auto Id = Proxy::GetInstance()->PushLayer(m_Id, typeid(TLayer).name());
101 const auto pLayer = ::std::make_shared<TLayer>(Id);
102 m_Layers.push_back(pLayer);
103 return *pLayer;
104 }
105
106 void Back(void)
107 {
108 Proxy::GetInstance()->Back(m_Id);
109 }
110
111private:
112 Events_t m_Events;
113 ::std::vector<LayerPtr_t> m_Layers;
114
115public:
116 explicit Window(const WindowApi_t & _WindowsApi) :
117 m_Id(Proxy::GetInstance()->Constructor(
118 dynamic_cast<const ::mock::covellite::api::Window &>(_WindowsApi).m_Id))
119 {
120
121 }
122};
123
124} // namespace gui
125
126} // namespace covellite
127
128} // namespace mock
Класс входит в проект Covellite.Api Интерфейсный класс для всех окон, реализующих различные графиче...
Definition IWindow.hpp:35
Класс входит в проект Covellite.App Интерфейсный класс для классов окон фреймворка.
Definition IWindow.hpp:32
Класс входит в проект Covellite.Gui Интерфесный класс окна, отображающего элементы GUI.
Definition IWindow.hpp:31