2 #include <gtest/gtest.h>
4 #include "RCSDiscoveryManager.h"
5 #include "RCSRemoteResourceObject.h"
6 #include "RCSResourceObject.h"
7 #include "OCPlatform.h"
8 #include "RCSAddress.h"
10 #define RESOURCEURI "/a/TemperatureSensor"
11 #define RESOURCETYPE "Resource.Hosting"
12 #define RESOURCEINTERFACE "oic.if.baseline"
14 using namespace OIC::Service;
17 bool cbresult = false;
18 std::string uri = "/oic/res?rt=Resource.Hosting";
19 std::shared_ptr<RCSRemoteResourceObject> object;
20 RCSDiscoveryManager*manager = RCSDiscoveryManager::getInstance();
21 ResourceState receivedResourceState;
22 RCSResourceAttributes receivedResourceAttributes;
23 RCSResourceObject::Ptr server;
27 server = RCSResourceObject::Builder(RESOURCEURI, RESOURCETYPE,
28 RESOURCEINTERFACE).setDiscoverable(true).setObservable(true).build();
29 std::cout << "Resource created successfully " << std::endl;
30 server->setAttribute("Temperature", 0);
33 OC::ServiceType::InProc, ModeType::Client, "0.0.0.0", 0, OC::QualityOfService::LowQos
35 OCPlatform::Configure(config);
38 void destroyResource()
44 void onRemoteAttrReceived(const RCSResourceAttributes &attributes)
47 receivedResourceAttributes = attributes;
50 void onResourceDiscoveredCallback(std::shared_ptr<RCSRemoteResourceObject> receivedObject)
52 std::cout << "Resource discovered" << std::endl;
53 object = receivedObject;
54 std::cout << object->getUri() << std::endl;
55 std::cout << "Resource discovered exited" << std::endl;
56 EXPECT_TRUE(object != NULL);
59 void onResourceStateChanged(ResourceState state)
61 receivedResourceState = state;
64 void onCacheUpdated(const RCSResourceAttributes attribute)
66 receivedResourceAttributes = attribute;
69 void OnRemoteAttributesSetCallback(const RCSResourceAttributes &attributes)
74 //Send valid call to discover resource
75 TEST(ResourceClientTest, testDiscoverResourcePass)
78 RCSDiscoveryManager *instance = RCSDiscoveryManager::getInstance();
80 RCSAddress rcsAddress = RCSAddress::multicast();
81 instance->discoverResource(rcsAddress, uri , &onResourceDiscoveredCallback);
83 EXPECT_TRUE(object != NULL);
87 //Get remote attributes when callback is valid
88 TEST(ResourceClientTest, testGetRemoteAttributesPass)
93 object->getRemoteAttributes(&onRemoteAttrReceived);
96 EXPECT_TRUE(cbresult);
100 //Set remote attributes when callback is valid
101 TEST(ResourceClientTest, testSetRemoteAttributesPass)
107 object->getRemoteAttributes(&onRemoteAttrReceived);
109 RCSResourceAttributes::const_iterator iter = receivedResourceAttributes.begin();
110 for (unsigned int i = 0; i < receivedResourceAttributes.size(); ++i)
112 if ( iter->key() == "Temperature")
114 std::cout << "It is there" << std::endl;
115 receivedResourceAttributes["Temperature"] = 100;
116 object->setRemoteAttributes(receivedResourceAttributes, &OnRemoteAttributesSetCallback);
121 EXPECT_TRUE(cbresult);
125 //Check value of isMonitoring
126 TEST(ResourceClientTest, testIsMonitoring)
129 RCSAddress rcsAddress = RCSAddress::multicast();
130 manager->RCSDiscoveryManager::discoverResource(rcsAddress, uri , &onResourceDiscoveredCallback);
133 EXPECT_FALSE(object->isMonitoring());
136 //Check value of isCaching
137 TEST(ResourceClientTest, testIsCaching)
141 EXPECT_FALSE(object->isCaching());
144 TEST(ResourceClientTest, testIsObservable)
148 EXPECT_TRUE(object->isObservable());
151 //Check value of startMonitoring for NULL callback
152 TEST(ResourceClientTest, testStartMonitoringFail)
155 object->m_monitoringFlag = false;
156 object->startMonitoring(NULL);
157 EXPECT_TRUE(object->m_monitoringFlag);
158 object->stopMonitoring();
162 //Check value of startMonitoring for valid callback
163 TEST(ResourceClientTest, testStartMonitoringPass)
166 object->startMonitoring(&onResourceStateChanged);
167 EXPECT_TRUE(object->m_monitoringFlag);
168 object->stopMonitoring();
172 //Stop Monitoring when Monitoring is true
173 TEST(ResourceClientTest, testStopMonitoring)
176 object->startMonitoring(&onResourceStateChanged);
177 object->stopMonitoring();
178 EXPECT_FALSE(object->m_monitoringFlag);
179 object->startMonitoring(&onResourceStateChanged);
183 //Get state of resource
184 TEST(ResourceClientTest, testGetStatePass)
187 ResourceState result = object->getState();
188 EXPECT_TRUE(result >= ResourceState::NOT_MONITORING && result <= ResourceState::DESTROYED);
192 //Cache ID is not zero
193 TEST(ResourceClientTest, testStartCachingPass)
196 object->m_cachingFlag = false;
197 object->startCaching();
198 EXPECT_TRUE(object->m_cachingFlag);
202 TEST(ResourceClientTest, testStopCaching)
205 object->m_cachingFlag = false;
206 object->startCaching();
207 object->stopCaching();
208 EXPECT_FALSE(object->m_cachingFlag);
212 TEST(ResourceClientTest, testRefreshCache)
215 object->m_cachingFlag = false;
216 object->startCaching();
217 object->refreshCache();
218 EXPECT_TRUE(object->getResourceCacheState() == CacheState::UPDATING);
222 //Callback for start caching is valid
223 TEST(ResourceClientTest, testStartCachingCbPass)
226 object->m_cachingFlag = false;
227 object->startCaching(&onCacheUpdated);
228 EXPECT_TRUE(object->m_cachingFlag);
232 //Callback for start caching is NULL
233 TEST(ResourceClientTest, testStartCachingCbFail)
236 object->m_cachingFlag = false;
237 object->startCaching(NULL);
238 EXPECT_TRUE(object->m_cachingFlag);
243 TEST(ResourceClientTest, testGetResourceCacheState)
246 CacheState result = object->getResourceCacheState();
247 EXPECT_TRUE(result >= CacheState::READY && result <= CacheState::NONE);
251 //Get cached attributes
252 TEST(ResourceClientTest, testGetCachedAttributesWithoutCallback)
255 RCSResourceAttributes result = object->getCachedAttributes();
256 EXPECT_TRUE(result.empty());
260 //Check with invalid attribute value
261 TEST(ResourceClientTest, testGetCachedAttributeWithInvalidAttribute)
264 RCSResourceAttributes::Value result = object->getCachedAttribute("");
265 EXPECT_TRUE(result == nullptr);
269 //Get remote attributes when callback is NULL
270 TEST(ResourceClientTest, testGetRemoteAttributesFail)
274 object->getRemoteAttributes(NULL);
275 EXPECT_FALSE(cbresult);
279 TEST(ResourceClientTest, testGetUri)
282 std::string result = object->getUri();
283 EXPECT_TRUE(!result.empty());
287 TEST(ResourceClientTest, testGetAddress)
290 std::string result = object->getAddress();
291 EXPECT_TRUE(!result.empty());
295 TEST(ResourceClientTest, testGetTypes)
298 std::vector < std::string > result = object->getTypes();
299 EXPECT_TRUE(result.size() != 0);
303 TEST(ResourceClientTest, testGetInterfaces)
306 std::vector < std::string > result = object->getInterfaces();
307 EXPECT_TRUE(result.size() != 0);
311 //Check with valid attribute value
312 TEST(ResourceClientTest, testGetCachedAttribute)
315 RCSResourceAttributes::Value result = object->getCachedAttribute("Temperature");
316 EXPECT_TRUE(result != nullptr);
320 //Test getting instance of DiscoveryManager
321 TEST(ResourceClientTest, testGetInstance)
324 RCSDiscoveryManager *instance = RCSDiscoveryManager::getInstance();
325 EXPECT_TRUE(instance != NULL);
329 //Send empty resource URI
330 TEST(ResourceClientTest, testDiscoverResourceEmptyResource)
333 RCSDiscoveryManager *instance = RCSDiscoveryManager::getInstance();
334 RCSAddress rcsAddress = RCSAddress::multicast();
335 EXPECT_THROW(instance->discoverResource(rcsAddress, "", &onResourceDiscoveredCallback),
336 InvalidParameterException);
341 TEST(ResourceClientTest, testDiscoverResourceEmptyCallback)
344 RCSDiscoveryManager *instance = RCSDiscoveryManager::getInstance();
345 RCSAddress rcsAddress = RCSAddress::multicast();
346 EXPECT_THROW(instance->discoverResource(rcsAddress, uri , NULL), InvalidParameterException);
348 object->stopMonitoring();
351 //Send invalid RCSResourceAttributes object to function
352 TEST(ResourceClientTest, testSetRemoteAttributesInvalidAttributes)
356 RCSResourceAttributes attr;
357 //object->getRemoteAttributes(&onRemoteAttrReceived);
358 object->setRemoteAttributes(attr, &OnRemoteAttributesSetCallback);
359 EXPECT_FALSE(cbresult);