Covellite++  Version: 2.3.0 Revision: ??? Platform: x64 Build: 23:13 04.01.2025
Кроссплатформенный фреймворк для разработки приложений на С++
Загрузка...
Поиск...
Не найдено
Window.mock.hpp
1
2#pragma once
3#include <Covellite/Predefined.hpp>
4#include <Covellite/Events.hpp>
5#include <Covellite/App/IApplication.hpp>
6#include <Covellite/App/IWindow.hpp>
7#include <Covellite/Os/Configuration.mock.hpp>
8#include <Covellite/Os/IWindow.hpp>
9
10/*
11An example of use:
12
13using ExampleProxy_t = ::mock::covellite::Window::Proxy;
14ExampleProxy_t ExampleProxy;
15ExampleProxy_t::GetInstance() = &ExampleProxy;
16
17const ::mock::Id_t ExampleId = 1607301544;
18
19using namespace ::testing;
20
21InSequence Dummy;
22
23EXPECT_CALL(ExampleProxy, Constructor(Value1))
24 .Times(1)
25 .WillOnce(Return(ExampleId));
26
27::mock::covellite::Window Example(Value1);
28
29EXPECT_CALL(ExampleProxy, Function(ExampleId, Value2))
30 .Times(1)
31 .WillOnce(Return(Value3));
32
33const auto Result = Example.Function(Value2);
34EXPECT_EQ(Value3, Result);
35*/
36
37namespace mock
38{
39
40namespace covellite
41{
42
43namespace os
44{
45
46class Window :
49{
50 using Any_t = ::covellite::Any_t;
51 using Configuration_t = ::mock::covellite::os::Configuration;
52 using IApplication_t = ::covellite::app::IApplication;
53
54public:
55 class Proxy :
56 public ::alicorn::extension::testing::Proxy<Proxy>
57 {
58 public:
59 MOCK_METHOD1(Constructor, Id_t(const IApplication_t *));
60 MOCK_METHOD1(GetHandle, Any_t(Id_t));
61 MOCK_METHOD1(GetClientRect, ::covellite::Rect(Id_t));
62 };
63
64public:
65 const Id_t m_Id = 0;
66 Window & operator= (const Window &) = delete;
67 bool operator== (const Window & _Value) const { return (m_Id == _Value.m_Id); }
68
69public:
70 // Интерфейс events::IEvents:
71 operator Events_t (void) const override
72 {
73 return m_Events;
74 }
75
76public:
77 Any_t GetHandle(void) const override
78 {
79 return Proxy::GetInstance()->GetHandle(m_Id);
80 }
81
82 ::covellite::Rect GetClientRect(void) const override
83 {
84 return Proxy::GetInstance()->GetClientRect(m_Id);
85 }
86
87 const Configuration_t & GetConfiguration(void) const override
88 {
89 throw::std::exception{};
90 }
91
92private:
93 Events_t m_Events;
94
95public:
96 Window(const IApplication_t & _Application) :
97 m_Id(Proxy::GetInstance()->Constructor(&_Application))
98 {
99 }
100};
101
102} // namespace os
103
104} // namespace covellite
105
106} // namespace mock
Класс входит в проект Covellite.App Интерфейсный класс приложения.
Definition IApplication.hpp:28
Класс входит в проект Covellite.App Интерфейсный класс для классов окон фреймворка.
Definition IWindow.hpp:32
Класс входит в проект Covellite.Os Интерфейсный класс окна операционной системы программы.
Definition IWindow.hpp:32