2 #include <gtest/gtest.h>
4 #include "ResourceClient.h"
5 #include "RCSResourceObject.h"
6 #include "OCPlatform.h"
7 #include "RCSAddress.h"
9 #define RESOURCEURI "/a/TemperatureSensor"
10 #define RESOURCETYPE "Resource.Hosting"
11 #define RESOURCEINTERFACE "oic.if.baseline"
13 using namespace OIC::Service;
16 bool cbresult = false;
17 std::string uri = "/oic/res?rt=Resource.Hosting";
18 std::shared_ptr<RemoteResourceObject> object;
19 DiscoveryManager *manager = DiscoveryManager::getInstance();
20 ResourceState receivedResourceState;
21 RCSResourceAttributes receivedResourceAttributes;
22 RCSResourceObject::Ptr server;
26 server = RCSResourceObject::Builder(RESOURCEURI, RESOURCETYPE,
27 RESOURCEINTERFACE).setDiscoverable(true).setObservable(true).build();
28 std::cout << "Resource created successfully " << std::endl;
29 server->setAttribute("Temperature", 0);
32 OC::ServiceType::InProc, ModeType::Client, "0.0.0.0", 0, OC::QualityOfService::LowQos
34 OCPlatform::Configure(config);
37 void destroyResource()
43 void onRemoteAttrReceived(const RCSResourceAttributes &attributes)
46 receivedResourceAttributes = attributes;
49 void onResourceDiscoveredCallback(std::shared_ptr<RemoteResourceObject> receivedObject)
51 std::cout << "Resource discovered" << std::endl;
52 object = receivedObject;
53 std::cout << object->getUri() << std::endl;
54 std::cout << "Resource discovered exited" << std::endl;
55 EXPECT_TRUE(object != NULL);
58 void onResourceStateChanged(ResourceState state)
60 receivedResourceState = state;
63 void onCacheUpdated(const RCSResourceAttributes attribute)
65 receivedResourceAttributes = attribute;
68 void OnRemoteAttributesSetCallback(const RCSResourceAttributes &attributes)
73 //Send valid call to discover resource
74 TEST(ResourceClientTest, testDiscoverResourcePass)
77 DiscoveryManager *instance = DiscoveryManager::getInstance();
79 RCSAddress rcsAddress = RCSAddress::multicast();
80 instance->discoverResource(rcsAddress, uri , &onResourceDiscoveredCallback);
82 EXPECT_TRUE(object != NULL);
86 //Get remote attributes when callback is valid
87 TEST(ResourceClientTest, testGetRemoteAttributesPass)
92 object->getRemoteAttributes(&onRemoteAttrReceived);
95 EXPECT_TRUE(cbresult);
99 //Set remote attributes when callback is valid
100 TEST(ResourceClientTest, testSetRemoteAttributesPass)
106 object->getRemoteAttributes(&onRemoteAttrReceived);
108 RCSResourceAttributes::const_iterator iter = receivedResourceAttributes.begin();
109 for (unsigned int i = 0; i < receivedResourceAttributes.size(); ++i)
111 if ( iter->key() == "Temperature")
113 std::cout << "It is there" << std::endl;
114 receivedResourceAttributes["Temperature"] = 100;
115 object->setRemoteAttributes(receivedResourceAttributes, &OnRemoteAttributesSetCallback);
120 EXPECT_TRUE(cbresult);
124 //Check value of isMonitoring
125 TEST(ResourceClientTest, testIsMonitoring)
128 RCSAddress rcsAddress = RCSAddress::multicast();
129 manager->DiscoveryManager::discoverResource(rcsAddress, uri , &onResourceDiscoveredCallback);
132 EXPECT_FALSE(object->isMonitoring());
135 //Check value of isCaching
136 TEST(ResourceClientTest, testIsCaching)
140 EXPECT_FALSE(object->isCaching());
143 TEST(ResourceClientTest, testIsObservable)
147 EXPECT_TRUE(object->isObservable());
150 //Check value of startMonitoring for NULL callback
151 TEST(ResourceClientTest, testStartMonitoringFail)
154 object->m_monitoringFlag = false;
155 object->startMonitoring(NULL);
156 EXPECT_TRUE(object->m_monitoringFlag);
157 object->stopMonitoring();
161 //Check value of startMonitoring for valid callback
162 TEST(ResourceClientTest, testStartMonitoringPass)
165 object->startMonitoring(&onResourceStateChanged);
166 EXPECT_TRUE(object->m_monitoringFlag);
167 object->stopMonitoring();
171 //Stop Monitoring when Monitoring is true
172 TEST(ResourceClientTest, testStopMonitoring)
175 object->startMonitoring(&onResourceStateChanged);
176 object->stopMonitoring();
177 EXPECT_FALSE(object->m_monitoringFlag);
178 object->startMonitoring(&onResourceStateChanged);
182 //Get state of resource
183 TEST(ResourceClientTest, testGetStatePass)
186 ResourceState result = object->getState();
187 EXPECT_TRUE(result >= ResourceState::NOT_MONITORING && result <= ResourceState::DESTROYED);
191 //Cache ID is not zero
192 TEST(ResourceClientTest, testStartCachingPass)
195 object->m_cachingFlag = false;
196 object->startCaching();
197 EXPECT_TRUE(object->m_cachingFlag);
201 TEST(ResourceClientTest, testStopCaching)
204 object->m_cachingFlag = false;
205 object->startCaching();
206 object->stopCaching();
207 EXPECT_FALSE(object->m_cachingFlag);
211 TEST(ResourceClientTest, testRefreshCache)
214 object->m_cachingFlag = false;
215 object->startCaching();
216 object->refreshCache();
217 EXPECT_TRUE(object->getResourceCacheState() == CacheState::UPDATING);
221 //Callback for start caching is valid
222 TEST(ResourceClientTest, testStartCachingCbPass)
225 object->m_cachingFlag = false;
226 object->startCaching(&onCacheUpdated);
227 EXPECT_TRUE(object->m_cachingFlag);
231 //Callback for start caching is NULL
232 TEST(ResourceClientTest, testStartCachingCbFail)
235 object->m_cachingFlag = false;
236 object->startCaching(NULL);
237 EXPECT_TRUE(object->m_cachingFlag);
242 TEST(ResourceClientTest, testGetResourceCacheState)
245 CacheState result = object->getResourceCacheState();
246 EXPECT_TRUE(result >= CacheState::READY && result <= CacheState::NONE);
250 //Get cached attributes
251 TEST(ResourceClientTest, testGetCachedAttributesWithoutCallback)
254 RCSResourceAttributes result = object->getCachedAttributes();
255 EXPECT_TRUE(result.empty());
259 //Check with invalid attribute value
260 TEST(ResourceClientTest, testGetCachedAttributeWithInvalidAttribute)
263 RCSResourceAttributes::Value result = object->getCachedAttribute("");
264 EXPECT_TRUE(result == nullptr);
268 //Get remote attributes when callback is NULL
269 TEST(ResourceClientTest, testGetRemoteAttributesFail)
273 object->getRemoteAttributes(NULL);
274 EXPECT_FALSE(cbresult);
278 TEST(ResourceClientTest, testGetUri)
281 std::string result = object->getUri();
282 EXPECT_TRUE(!result.empty());
286 TEST(ResourceClientTest, testGetAddress)
289 std::string result = object->getAddress();
290 EXPECT_TRUE(!result.empty());
294 TEST(ResourceClientTest, testGetTypes)
297 std::vector < std::string > result = object->getTypes();
298 EXPECT_TRUE(result.size() != 0);
302 TEST(ResourceClientTest, testGetInterfaces)
305 std::vector < std::string > result = object->getInterfaces();
306 EXPECT_TRUE(result.size() != 0);
310 //Check with valid attribute value
311 TEST(ResourceClientTest, testGetCachedAttribute)
314 RCSResourceAttributes::Value result = object->getCachedAttribute("Temperature");
315 EXPECT_TRUE(result != nullptr);
319 //Test getting instance of DiscoveryManager
320 TEST(ResourceClientTest, testGetInstance)
323 DiscoveryManager *instance = DiscoveryManager::getInstance();
324 EXPECT_TRUE(instance != NULL);
328 //Send empty resource URI
329 TEST(ResourceClientTest, testDiscoverResourceEmptyResource)
332 DiscoveryManager *instance = DiscoveryManager::getInstance();
333 RCSAddress rcsAddress = RCSAddress::multicast();
334 EXPECT_THROW(instance->discoverResource(rcsAddress, "", &onResourceDiscoveredCallback),
335 InvalidParameterException);
340 TEST(ResourceClientTest, testDiscoverResourceEmptyCallback)
343 DiscoveryManager *instance = DiscoveryManager::getInstance();
344 RCSAddress rcsAddress = RCSAddress::multicast();
345 EXPECT_THROW(instance->discoverResource(rcsAddress, uri , NULL), InvalidParameterException);
347 object->stopMonitoring();
350 //Send invalid RCSResourceAttributes object to function
351 TEST(ResourceClientTest, testSetRemoteAttributesInvalidAttributes)
355 RCSResourceAttributes attr;
356 //object->getRemoteAttributes(&onRemoteAttrReceived);
357 object->setRemoteAttributes(attr, &OnRemoteAttributesSetCallback);
358 EXPECT_FALSE(cbresult);