6 #include "gtest/gtest.h"
7 #include "HippoMocks/hippomocks.h"
9 #include "OCResource.h"
10 #include "OCPlatform.h"
12 #include "PrimitiveResource.h"
13 #include "ResponseStatement.h"
14 #include "ResourceAttributes.h"
15 #include "ResourcePresence.h"
16 #include "UnitTestHelper.h"
18 using namespace testing;
19 using namespace OIC::Service;
22 typedef OCStackResult (*subscribePresenceSig1)(OC::OCPlatform::OCPresenceHandle&,
23 const std::string&, OCConnectivityType, SubscribeCallback);
25 class ResourcePresenceTest : public TestWithMock
29 typedef std::function<void(const HeaderOptions&, const ResponseStatement&, int)> GetCallback;
32 ResourcePresence * instance;
33 PrimitiveResource::Ptr pResource;
41 instance = (ResourcePresence*)new ResourcePresence();
42 pResource = PrimitiveResource::Ptr(mocks.Mock< PrimitiveResource >(), [](PrimitiveResource*){});
43 cb = ([](BROKER_STATE)->OCStackResult{return OC_STACK_OK;});
47 void TearDown() override
56 mocks.OnCall(pResource.get(), PrimitiveResource::requestGet).Do([](GetCallback cb){});
57 mocks.OnCall(pResource.get(), PrimitiveResource::getHost).Return(std::string());
58 mocks.OnCallFuncOverload(static_cast< subscribePresenceSig1 >(OC::OCPlatform::subscribePresence)).Return(OC_STACK_OK);
63 TEST_F(ResourcePresenceTest,initializeResourcePresence_NormalhandlingIfNormalResource)
68 instance->initializeResourcePresence(pResource);
69 ASSERT_NE(nullptr,instance->getPrimitiveResource());
73 TEST_F(ResourcePresenceTest,addBrokerRequester_ReturnNormalValueIfNormalParams)
78 instance->initializeResourcePresence(pResource);
80 instance->addBrokerRequester(id,cb);
81 EXPECT_FALSE(instance->isEmptyRequester());
85 TEST_F(ResourcePresenceTest,removeBrokerRequester_NormalHandlingIfNormalId)
90 instance->initializeResourcePresence(pResource);
92 instance->addBrokerRequester(id,cb);
94 instance->addBrokerRequester(id,cb);
96 instance->removeBrokerRequester(id);
97 ASSERT_EQ(1,instance->requesterListSize());
101 TEST_F(ResourcePresenceTest,removeAllBrokerRequester_NormalHandling)
106 instance->initializeResourcePresence(pResource);
108 instance->addBrokerRequester(id,cb);
110 instance->addBrokerRequester(id,cb);
112 instance->removeAllBrokerRequester();
113 ASSERT_TRUE(instance->isEmptyRequester());
117 TEST_F(ResourcePresenceTest,removeAllBrokerRequester_ErrorHandlingIfListNull)
122 instance->initializeResourcePresence(pResource);
123 instance->removeAllBrokerRequester();
127 TEST_F(ResourcePresenceTest,requestResourceState_NormalHandling)
132 instance->initializeResourcePresence(pResource);
134 ASSERT_NO_THROW(instance->requestResourceState());
138 TEST_F(ResourcePresenceTest,changePresenceMode_NormalHandlingIfNewModeDifferent)
143 instance->initializeResourcePresence(pResource);
145 instance->changePresenceMode(BROKER_MODE::DEVICE_PRESENCE_MODE);
149 TEST_F(ResourcePresenceTest,getResourceState_NormalHandling)
152 ASSERT_EQ(BROKER_STATE::REQUESTED,instance->getResourceState());
156 TEST_F(ResourcePresenceTest,changePresenceMode_NormalHandlingIfNewModeSame)
161 instance->initializeResourcePresence(pResource);
163 instance->changePresenceMode(BROKER_MODE::NON_PRESENCE_MODE);
167 TEST_F(ResourcePresenceTest,getPrimitiveResource_NormalHandling)
172 instance->initializeResourcePresence(pResource);
173 ASSERT_NE(nullptr,instance->getPrimitiveResource());
177 TEST_F(ResourcePresenceTest,getCB_NormalHandlingIfMessageOC_STACK_OK)
180 mocks.ExpectCall(pResource.get(), PrimitiveResource::requestGet).Do(
181 [](GetCallback callback){
183 OIC::Service::HeaderOptions op;
184 ResourceAttributes attr;
185 OIC::Service::ResponseStatement res(attr);
186 callback(op,res,OC_STACK_OK);
189 mocks.OnCall(pResource.get(), PrimitiveResource::requestGet).Do(
190 [](GetCallback callback){
191 std::cout <<"End call requestGetFunc()\n";
193 mocks.ExpectCall(pResource.get(), PrimitiveResource::getHost).Return("address1");
194 mocks.ExpectCall(pResource.get(), PrimitiveResource::getHost).Return("address2");
195 mocks.OnCallFuncOverload(static_cast< subscribePresenceSig1 >(OC::OCPlatform::subscribePresence)).Do(
196 [](OC::OCPlatform::OCPresenceHandle&,
197 const std::string&, OCConnectivityType, SubscribeCallback callback)->OCStackResult{
199 callback(OC_STACK_OK,0,std::string());
202 }).Return(OC_STACK_OK);
204 instance->initializeResourcePresence(pResource);
209 TEST_F(ResourcePresenceTest,isEmptyRequester_NormalHandling)
214 instance->initializeResourcePresence(pResource);
216 instance->addBrokerRequester(id,cb);
217 instance->removeAllBrokerRequester();
218 ASSERT_TRUE(instance->isEmptyRequester());