2 #include <gtest/gtest.h>
3 #include <HippoMocks/hippomocks.h>
5 #include "ResourceCacheManager.h"
6 #include "UnitTestHelper.h"
8 using namespace OIC::Service;
10 class ResourceCacheManagerTest : public TestWithMock
13 ResourceCacheManager *cacheInstance;
14 PrimitiveResource::Ptr pResource;
19 ResourceCacheManagerTest()
24 virtual ~ResourceCacheManagerTest() noexcept(true)
31 TestWithMock::SetUp();
32 cacheInstance = ResourceCacheManager::getInstance();
33 pResource = PrimitiveResource::Ptr(mocks.Mock< PrimitiveResource >(), [](PrimitiveResource *) {});
34 cb = ([](std::shared_ptr<PrimitiveResource >, const RCSResourceAttributes &)->OCStackResult {return OC_STACK_OK;});
37 virtual void TearDown()
39 TestWithMock::TearDown();
43 TEST_F(ResourceCacheManagerTest, requestResourceCache_resourceIsNULL)
47 REPORT_FREQUENCY rf = REPORT_FREQUENCY::UPTODATE;
48 long reportTime = 20l;
50 ASSERT_THROW(cacheInstance->requestResourceCache(NULL, func, rf, reportTime),
51 ResourceCacheManager::InvalidParameterException);
54 TEST_F(ResourceCacheManagerTest, requestResourceCache_cacheCBIsNULL)
58 REPORT_FREQUENCY rf = REPORT_FREQUENCY::UPTODATE;
59 long reportTime = 20l;
61 ASSERT_THROW(cacheInstance->requestResourceCache(pResource, func, rf, reportTime),
62 ResourceCacheManager::InvalidParameterException);
65 TEST_F(ResourceCacheManagerTest, requestResourceCache_reportTimeIsNULL)
68 mocks.ExpectCall(pResource.get(), PrimitiveResource::requestGet);
69 mocks.ExpectCall(pResource.get(), PrimitiveResource::isObservable).Return(true);
70 mocks.ExpectCall(pResource.get(), PrimitiveResource::requestObserve);
71 mocks.ExpectCall(pResource.get(), PrimitiveResource::cancelObserve);
74 REPORT_FREQUENCY rf = REPORT_FREQUENCY::UPTODATE;
76 id = cacheInstance->requestResourceCache(pResource, func, rf);
77 cacheInstance->cancelResourceCache(id);
83 TEST_F(ResourceCacheManagerTest, requestResourceCache_normalCase)
86 mocks.ExpectCall(pResource.get(), PrimitiveResource::requestGet);
87 mocks.ExpectCall(pResource.get(), PrimitiveResource::isObservable).Return(true);
88 mocks.ExpectCall(pResource.get(), PrimitiveResource::requestObserve);
89 mocks.ExpectCall(pResource.get(), PrimitiveResource::cancelObserve);
92 REPORT_FREQUENCY rf = REPORT_FREQUENCY::UPTODATE;
93 long reportTime = 20l;
95 id = cacheInstance->requestResourceCache(pResource, func, rf, reportTime);
96 cacheInstance->cancelResourceCache(id);
101 TEST_F(ResourceCacheManagerTest, cancelResourceCache_cacheIDIsZero)
104 ASSERT_THROW(cacheInstance->cancelResourceCache(0),
105 ResourceCacheManager::InvalidParameterException);
108 TEST_F(ResourceCacheManagerTest, cancelResourceCache_normalCase)
111 mocks.ExpectCall(pResource.get(), PrimitiveResource::requestGet);
112 mocks.ExpectCall(pResource.get(), PrimitiveResource::isObservable).Return(true);
113 mocks.ExpectCall(pResource.get(), PrimitiveResource::requestObserve);
114 mocks.ExpectCall(pResource.get(), PrimitiveResource::cancelObserve);
117 REPORT_FREQUENCY rf = REPORT_FREQUENCY::UPTODATE;
118 long reportTime = 20l;
120 id = cacheInstance->requestResourceCache(pResource, func, rf, reportTime);
122 cacheInstance->cancelResourceCache(id);
125 TEST_F(ResourceCacheManagerTest, updateResourceCachePrimitiveResource_resourceIsNULL)
130 ASSERT_THROW(cacheInstance->updateResourceCache(pResource),
131 ResourceCacheManager::InvalidParameterException);
134 TEST_F(ResourceCacheManagerTest, updateResourceCachePrimitiveResource_cacheIsNULL)
137 ASSERT_THROW(cacheInstance->updateResourceCache(pResource),
138 ResourceCacheManager::InvalidParameterException);
141 TEST_F(ResourceCacheManagerTest, updateResourceCachePrimitiveResource_normalCase)
144 mocks.OnCall(pResource.get(), PrimitiveResource::requestGet);
145 mocks.OnCall(pResource.get(), PrimitiveResource::isObservable).Return(true);
146 mocks.OnCall(pResource.get(), PrimitiveResource::requestObserve);
147 mocks.OnCall(pResource.get(), PrimitiveResource::getUri).Return("testUri");
148 mocks.OnCall(pResource.get(), PrimitiveResource::getHost).Return("testHost");
149 mocks.OnCall(pResource.get(), PrimitiveResource::cancelObserve);
152 REPORT_FREQUENCY rf = REPORT_FREQUENCY::UPTODATE;
153 long reportTime = 20l;
155 id = cacheInstance->requestResourceCache(pResource, func, rf, reportTime);
157 cacheInstance->updateResourceCache(pResource);
159 cacheInstance->cancelResourceCache(id);
162 TEST_F(ResourceCacheManagerTest, updateResourceCacheCacheID_cacheIDIsZero)
165 ASSERT_THROW(cacheInstance->updateResourceCache(0),
166 ResourceCacheManager::InvalidParameterException);
169 TEST_F(ResourceCacheManagerTest, updateResourceCacheCacheID_cacheIsNULL)
172 ASSERT_THROW(cacheInstance->updateResourceCache(id),
173 ResourceCacheManager::InvalidParameterException);
176 TEST_F(ResourceCacheManagerTest, updateResourceCacheCacheID_normalCase)
179 mocks.OnCall(pResource.get(), PrimitiveResource::requestGet);
180 mocks.OnCall(pResource.get(), PrimitiveResource::isObservable).Return(true);
181 mocks.OnCall(pResource.get(), PrimitiveResource::requestObserve);
182 mocks.OnCall(pResource.get(), PrimitiveResource::getUri).Return("testUri");
183 mocks.OnCall(pResource.get(), PrimitiveResource::getHost).Return("testHost");
184 mocks.OnCall(pResource.get(), PrimitiveResource::cancelObserve);
187 REPORT_FREQUENCY rf = REPORT_FREQUENCY::UPTODATE;
188 long reportTime = 20l;
190 id = cacheInstance->requestResourceCache(pResource, func, rf, reportTime);
192 cacheInstance->updateResourceCache(id);
194 cacheInstance->cancelResourceCache(id);
197 TEST_F(ResourceCacheManagerTest, getCachedDataPrimitiveResource_resourceIsNULL)
202 ASSERT_THROW(cacheInstance->getCachedData(pResource),
203 ResourceCacheManager::InvalidParameterException);
206 TEST_F(ResourceCacheManagerTest, getCachedDataPrimitiveResource_handlerIsNULL)
209 ASSERT_THROW(cacheInstance->getCachedData(pResource),
210 ResourceCacheManager::InvalidParameterException);
213 TEST_F(ResourceCacheManagerTest, getCachedDataCachID_resourceIsNULL)
216 ASSERT_THROW(cacheInstance->getCachedData(0), ResourceCacheManager::InvalidParameterException);
219 TEST_F(ResourceCacheManagerTest, getCachedDataCachID_handlerIsNULL)
222 ASSERT_THROW(cacheInstance->getCachedData(id), ResourceCacheManager::InvalidParameterException);
225 TEST_F(ResourceCacheManagerTest, getResourceCacheStatePrimitiveResource_resourceIsNULL)
230 ASSERT_THROW(cacheInstance->getResourceCacheState(pResource),
231 ResourceCacheManager::InvalidParameterException);
234 TEST_F(ResourceCacheManagerTest, getResourceCacheStatePrimitiveResource_handlerIsNULL)
237 ASSERT_EQ(cacheInstance->getResourceCacheState(pResource), CACHE_STATE::NONE);
240 TEST_F(ResourceCacheManagerTest, getResourceCacheStatePrimitiveResource_normalCase)
243 mocks.OnCall(pResource.get(), PrimitiveResource::requestGet);
244 mocks.OnCall(pResource.get(), PrimitiveResource::isObservable).Return(true);
245 mocks.OnCall(pResource.get(), PrimitiveResource::requestObserve);
246 mocks.OnCall(pResource.get(), PrimitiveResource::getUri).Return("testUri");
247 mocks.OnCall(pResource.get(), PrimitiveResource::getHost).Return("testHost");
248 mocks.OnCall(pResource.get(), PrimitiveResource::cancelObserve);
251 REPORT_FREQUENCY rf = REPORT_FREQUENCY::UPTODATE;
252 long reportTime = 20l;
254 id = cacheInstance->requestResourceCache(pResource, func, rf, reportTime);
255 CACHE_STATE state = cacheInstance->getResourceCacheState(pResource);
257 cacheInstance->cancelResourceCache(id);
259 ASSERT_EQ(state, CACHE_STATE::READY_YET);
262 TEST_F(ResourceCacheManagerTest, getResourceCacheStateCacheID_cacheIDIsZero)
265 ASSERT_THROW(cacheInstance->getResourceCacheState(0),
266 ResourceCacheManager::InvalidParameterException);
269 TEST_F(ResourceCacheManagerTest, getResourceCacheStateCacheID_handlerIsNULL)
272 ASSERT_EQ(cacheInstance->getResourceCacheState(id), CACHE_STATE::NONE);
275 TEST_F(ResourceCacheManagerTest, getResourceCacheStateCacheID_normalCase)
278 mocks.OnCall(pResource.get(), PrimitiveResource::requestGet);
279 mocks.OnCall(pResource.get(), PrimitiveResource::isObservable).Return(true);
280 mocks.OnCall(pResource.get(), PrimitiveResource::requestObserve);
281 mocks.OnCall(pResource.get(), PrimitiveResource::getUri).Return("testUri");
282 mocks.OnCall(pResource.get(), PrimitiveResource::getHost).Return("testHost");
283 mocks.OnCall(pResource.get(), PrimitiveResource::cancelObserve);
286 REPORT_FREQUENCY rf = REPORT_FREQUENCY::UPTODATE;
287 long reportTime = 20l;
289 id = cacheInstance->requestResourceCache(pResource, func, rf, reportTime);
290 CACHE_STATE state = cacheInstance->getResourceCacheState(id);
292 cacheInstance->cancelResourceCache(id);
294 ASSERT_EQ(state, CACHE_STATE::READY_YET);