Skip to content

Commit 87683e9

Browse files
committed
feat: Singleton class mock test support for all modules
1 parent 6b936cb commit 87683e9

File tree

10 files changed

+441
-62
lines changed

10 files changed

+441
-62
lines changed

languages/cpp/src/shared/src/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ list(APPEND SOURCES
2828
Transport/Transport.cpp
2929
Accessor/Accessor.cpp
3030
Async/Async.cpp
31+
Properties/Properties.cpp
3132
)
3233

3334
if (ENABLE_BIDIRECTIONAL)

languages/cpp/src/shared/src/Gateway/Gateway.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,10 @@ namespace FireboltSDK
5757

5858
void TransportUpdated(Transport<WPEFramework::Core::JSON::IElement>* transport);
5959

60-
#ifdef UNIT_TEST
6160
void UpdateGateway(std::unique_ptr<GatewayImpl> mockGateway)
6261
{
6362
implementation = std::move(mockGateway);
6463
}
65-
#endif
6664

6765
template <typename RESPONSE>
6866
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, RESPONSE &response)

languages/cpp/src/shared/src/Gateway/unidi/gateway_impl.h

Lines changed: 4 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -25,29 +25,18 @@
2525

2626
#include "../common.h"
2727

28-
#include "Transport/Transport.h"
29-
3028
#include <string>
3129
#include <stdio.h>
3230

33-
#ifdef UNIT_TEST
34-
#include "IGateway.h"
35-
#endif
31+
#include "mockGateway.h"
3632

3733
namespace FireboltSDK
3834
{
3935

4036
using EventCallback = std::function<void(const std::string & /* eventName */, const JsonObject & /* parameters */, Firebolt::Error /* error */)>;
4137

42-
#ifndef UNIT_TEST
43-
class GatewayImpl
44-
#else
45-
class GatewayImpl : public IGateway
46-
#endif
38+
class GatewayImpl : public IGatewayMock
4739
{
48-
49-
Transport<WPEFramework::Core::JSON::IElement> *transport;
50-
5140
public:
5241
GatewayImpl()
5342
{
@@ -56,39 +45,9 @@ namespace FireboltSDK
5645
public:
5746
void TransportUpdated(Transport<WPEFramework::Core::JSON::IElement> *transport)
5847
{
59-
this->transport = transport;
60-
}
61-
62-
#ifndef UNIT_TEST
63-
template <typename RESPONSE>
64-
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, RESPONSE &response)
65-
{
66-
if (transport == nullptr)
67-
{
68-
return Firebolt::Error::NotConnected;
69-
}
70-
return transport->Invoke(method, parameters, response);
71-
}
72-
#else
73-
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, FireboltSDK::JSON::String &response)
74-
{
75-
if (transport == nullptr)
76-
{
77-
return Firebolt::Error::NotConnected;
78-
}
79-
return transport->Invoke(method, parameters, response);
80-
}
81-
82-
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Authentication::JsonData_Token &response)
83-
{
84-
if (transport == nullptr)
85-
{
86-
return Firebolt::Error::NotConnected;
87-
}
88-
return transport->Invoke(method, parameters, response);
48+
this->transport = transport;
8949
}
9050

91-
#endif
9251

9352
Firebolt::Error Response(unsigned id, const std::string &method, const JsonObject &response)
9453
{
@@ -126,3 +85,4 @@ namespace FireboltSDK
12685
}
12786
};
12887
}
88+
Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
#include "IGateway.h"
2+
#include "Transport/Transport.h"
3+
4+
class IGatewayMock : public IGateway
5+
{
6+
public:
7+
8+
FireboltSDK::Transport<WPEFramework::Core::JSON::IElement> *transport;
9+
10+
template <typename RESPONSE>
11+
Firebolt::Error RequestImpl(const std::string &method, const JsonObject &parameters, RESPONSE &response)
12+
{
13+
if (transport == nullptr)
14+
{
15+
return Firebolt::Error::NotConnected;
16+
}
17+
return transport->Invoke(method, parameters, response);
18+
}
19+
20+
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, FireboltSDK::JSON::String &response)
21+
{
22+
return RequestImpl(method, parameters, response);
23+
}
24+
25+
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Authentication::JsonData_Token &response)
26+
{
27+
return RequestImpl(method, parameters, response);
28+
}
29+
30+
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Advertising::JsonData_AdvertisingId &response)
31+
{
32+
return RequestImpl(method, parameters, response);
33+
}
34+
35+
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Advertising::JsonData_AdFrameworkConfig &response)
36+
{
37+
return RequestImpl(method, parameters, response);
38+
}
39+
40+
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Advertising::JsonData_DeviceAttributes &response)
41+
{
42+
return RequestImpl(method, parameters, response);
43+
}
44+
45+
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, WPEFramework::Core::JSON::Boolean &response)
46+
{
47+
return RequestImpl(method, parameters, response);
48+
}
49+
50+
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Accessibility::JsonData_ClosedCaptionsSettings &response)
51+
{
52+
return RequestImpl(method, parameters, response);
53+
}
54+
55+
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Accessibility::JsonData_VoiceGuidanceSettings &response)
56+
{
57+
return RequestImpl(method, parameters, response);
58+
}
59+
60+
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Advertising::JsonData_AdPolicy &response)
61+
{
62+
return RequestImpl(method, parameters, response);
63+
}
64+
65+
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Accessibility::JsonData_AudioDescriptionSettings &response)
66+
{
67+
return RequestImpl(method, parameters, response);
68+
}
69+
70+
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, WPEFramework::Core::JSON::ArrayType<Firebolt::Capabilities::JsonData_CapabilityInfo> &response)
71+
{
72+
return RequestImpl(method, parameters, response);
73+
}
74+
75+
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Device::JsonData_AudioProfiles &response)
76+
{
77+
return RequestImpl(method, parameters, response);
78+
}
79+
80+
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Device::JsonData_HDCPVersionMap &response)
81+
{
82+
return RequestImpl(method, parameters, response);
83+
}
84+
85+
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Device::JsonData_HDRFormatMap &response)
86+
{
87+
return RequestImpl(method, parameters, response);
88+
}
89+
90+
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Device::JsonData_NetworkInfoResult &response)
91+
{
92+
return RequestImpl(method, parameters, response);
93+
}
94+
95+
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Device::JsonData_Resolution &response)
96+
{
97+
return RequestImpl(method, parameters, response);
98+
}
99+
100+
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Device::JsonData_DeviceVersion &response)
101+
{
102+
return RequestImpl(method, parameters, response);
103+
}
104+
105+
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, WPEFramework::Core::JSON::VariantContainer &response)
106+
{
107+
return RequestImpl(method, parameters, response);
108+
}
109+
110+
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Discovery::JsonData_DiscoveryPolicy &response)
111+
{
112+
return RequestImpl(method, parameters, response);
113+
}
114+
115+
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Localization::JsonData_Info &response)
116+
{
117+
return RequestImpl(method, parameters, response);
118+
}
119+
120+
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Localization::JsonData_LatLon &response)
121+
{
122+
return RequestImpl(method, parameters, response);
123+
}
124+
125+
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Parameters::JsonData_AppInitialization &response)
126+
{
127+
return RequestImpl(method, parameters, response);
128+
}
129+
130+
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Types::JsonData_FlatMap &response)
131+
{
132+
return RequestImpl(method, parameters, response);
133+
}
134+
135+
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Types::JsonData_BooleanMap &response)
136+
{
137+
return RequestImpl(method, parameters, response);
138+
}
139+
140+
Firebolt::Error Request(const std::string &method, const JsonObject &parameters, WPEFramework::Core::JSON::ArrayType<FireboltSDK::JSON::String> &response)
141+
{
142+
return RequestImpl(method, parameters, response);
143+
}
144+
};

languages/cpp/src/shared/src/IGateway.h

Lines changed: 102 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616
* SPDX-License-Identifier: Apache-2.0
1717
*/
1818

19-
#ifdef UNIT_TEST
20-
19+
#pragma once
2120
#include "TypesPriv.h"
21+
#include "error.h"
2222

2323
namespace Firebolt
2424
{
@@ -28,11 +28,110 @@ namespace Firebolt
2828
}
2929
}
3030

31+
namespace Firebolt
32+
{
33+
namespace Advertising
34+
{
35+
class JsonData_AdPolicy;
36+
class JsonData_AdvertisingId;
37+
class JsonData_AdFrameworkConfig : public WPEFramework::Core::JSON::VariantContainer
38+
{
39+
};
40+
class JsonData_DeviceAttributes : public WPEFramework::Core::JSON::VariantContainer
41+
{
42+
};
43+
}
44+
45+
namespace Accessibility
46+
{
47+
class JsonData_ClosedCaptionsSettings;
48+
class JsonData_VoiceGuidanceSettings;
49+
class JsonData_AudioDescriptionSettings;
50+
}
51+
52+
namespace Capabilities
53+
{
54+
class JsonData_CapabilityInfo;
55+
}
56+
57+
namespace Device
58+
{
59+
class JsonData_AudioProfiles;
60+
class JsonData_HDCPVersionMap;
61+
class JsonData_HDRFormatMap;
62+
class JsonData_NetworkInfoResult;
63+
class JsonData_Resolution;
64+
class JsonData_DeviceVersion;
65+
}
66+
67+
namespace Discovery
68+
{
69+
class JsonData_DiscoveryPolicy;
70+
}
71+
72+
namespace Localization
73+
{
74+
class JsonData_Info : public WPEFramework::Core::JSON::VariantContainer
75+
{
76+
};
77+
class JsonData_LatLon : public WPEFramework::Core::JSON::ArrayType<WPEFramework::Core::JSON::Float>
78+
{
79+
};
80+
}
81+
82+
namespace Parameters
83+
{
84+
class JsonData_AppInitialization;
85+
}
86+
87+
namespace Types
88+
{
89+
class JsonData_FlatMap : public WPEFramework::Core::JSON::VariantContainer
90+
{
91+
};
92+
class JsonData_BooleanMap : public WPEFramework::Core::JSON::VariantContainer
93+
{
94+
};
95+
}
96+
97+
}
98+
3199
class IGateway
32100
{
33101
public:
34102
virtual ~IGateway() = default;
35103
virtual Firebolt::Error Request(const std::string &method, const JsonObject &parameters, FireboltSDK::JSON::String &result) = 0;
104+
105+
virtual Firebolt::Error Request(const std::string &method, const JsonObject &parameters, WPEFramework::Core::JSON::VariantContainer &response) = 0;
106+
virtual Firebolt::Error Request(const std::string &method, const JsonObject &parameters, WPEFramework::Core::JSON::Boolean &response) = 0;
107+
36108
virtual Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Authentication::JsonData_Token &result) = 0;
109+
110+
virtual Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Advertising::JsonData_AdPolicy &response) = 0;
111+
virtual Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Advertising::JsonData_AdvertisingId &response) = 0;
112+
virtual Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Advertising::JsonData_AdFrameworkConfig &response) = 0;
113+
virtual Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Advertising::JsonData_DeviceAttributes &response) = 0;
114+
115+
virtual Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Accessibility::JsonData_ClosedCaptionsSettings &response) = 0;
116+
virtual Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Accessibility::JsonData_VoiceGuidanceSettings &response) = 0;
117+
virtual Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Accessibility::JsonData_AudioDescriptionSettings &response) = 0;
118+
119+
virtual Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Device::JsonData_DeviceVersion &response) = 0;
120+
virtual Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Device::JsonData_AudioProfiles &response) = 0;
121+
virtual Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Device::JsonData_HDCPVersionMap &response) = 0;
122+
virtual Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Device::JsonData_HDRFormatMap &response) = 0;
123+
virtual Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Device::JsonData_NetworkInfoResult &response) = 0;
124+
virtual Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Device::JsonData_Resolution &response) = 0;
125+
126+
virtual Firebolt::Error Request(const std::string &method, const JsonObject &parameters, WPEFramework::Core::JSON::ArrayType<Firebolt::Capabilities::JsonData_CapabilityInfo> &response) = 0;
127+
128+
virtual Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Discovery::JsonData_DiscoveryPolicy &response) = 0;
129+
130+
virtual Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Localization::JsonData_Info &response) = 0;
131+
virtual Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Localization::JsonData_LatLon &response) = 0;
132+
133+
virtual Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Parameters::JsonData_AppInitialization &response) = 0;
134+
135+
virtual Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Types::JsonData_FlatMap &response) = 0;
136+
virtual Firebolt::Error Request(const std::string &method, const JsonObject &parameters, Firebolt::Types::JsonData_BooleanMap &response) = 0;
37137
};
38-
#endif

0 commit comments

Comments
 (0)