1 #include "gtest/gtest.h"
2 #include "HippoMocks/hippomocks.h"
4 #include "OCPlatform.h"
5 #include "PrimitiveResource.h"
6 #include "ResponseStatement.h"
7 #include "ResourceBroker.h"
8 #include "UnitTestHelper.h"
10 using namespace testing;
11 using namespace OIC::Service;
14 typedef OCStackResult (*subscribePresenceSig1)(OC::OCPlatform::OCPresenceHandle&,
15 const std::string&, OCConnectivityType, SubscribeCallback);
17 class ResourceBrokerTest : public TestWithMock
22 ResourceBroker * brokerInstance;
23 PrimitiveResource::Ptr pResource;
31 brokerInstance = ResourceBroker::getInstance();
32 pResource = PrimitiveResource::Ptr(mocks.Mock< PrimitiveResource >(), [](PrimitiveResource*){});
33 cb = ([](BROKER_STATE)->OCStackResult{return OC_STACK_OK;});
37 void TearDown() override
46 mocks.OnCall(pResource.get(), PrimitiveResource::requestGet);
47 mocks.OnCall(pResource.get(), PrimitiveResource::getHost).Return(std::string());
48 mocks.OnCallFuncOverload(static_cast< subscribePresenceSig1 >(OC::OCPlatform::subscribePresence)).Return(OC_STACK_OK);
53 TEST_F(ResourceBrokerTest,HostResource_ReturnNormalValueIfNormalParams)
59 ASSERT_NE(ret = brokerInstance->hostResource(pResource,cb),0);
61 brokerInstance->cancelHostResource(ret);
65 TEST_F(ResourceBrokerTest, HostResource_NormalErrorHandlingIfResourceNull)
68 ASSERT_THROW(brokerInstance->hostResource(nullptr, cb),ResourceBroker::InvalidParameterException);
72 TEST_F(ResourceBrokerTest, HostResource_NormalErrorHandlingIfCbFuncNull)
75 ASSERT_THROW(brokerInstance->hostResource(pResource,nullptr),ResourceBroker::InvalidParameterException);
79 TEST_F(ResourceBrokerTest,CancelHostResource_NoThrowIfNormalParams)
85 ret = brokerInstance->hostResource(pResource,cb);
87 ASSERT_NO_THROW(brokerInstance->cancelHostResource(ret));
92 TEST_F(ResourceBrokerTest,CancelHostResource_NormalErrorHandlingIfAbNormalIdZero)
96 ASSERT_THROW(brokerInstance->cancelHostResource(id),ResourceBroker::InvalidParameterException);
100 TEST_F(ResourceBrokerTest,CancelHostResource_NormalErrorHandlingIfAbNormalIdOutOfRangeValue)
104 ASSERT_THROW(brokerInstance->cancelHostResource(id),ResourceBroker::InvalidParameterException);
108 TEST_F(ResourceBrokerTest,getResourceState_ReturnNormalValueIfNormalId)
114 ret = brokerInstance->hostResource(pResource,cb);
116 ASSERT_NE(brokerInstance->getResourceState(ret),BROKER_STATE::NONE);
118 brokerInstance->cancelHostResource(ret);
123 TEST_F(ResourceBrokerTest,getResourceState_NormalErrorHandlingIfIdZero)
127 ASSERT_THROW(brokerInstance->getResourceState(id),ResourceBroker::InvalidParameterException);
131 TEST_F(ResourceBrokerTest,getResourceState_ReturnNormalValueIfNormalResource)
137 ret = brokerInstance->hostResource(pResource,cb);
139 ASSERT_NE(brokerInstance->getResourceState(pResource),BROKER_STATE::NONE);
141 brokerInstance->cancelHostResource(ret);
145 TEST_F(ResourceBrokerTest,getResourceState_NormalErrorHandlingIfResourceNull)
148 ASSERT_THROW(brokerInstance->getResourceState((PrimitiveResource::Ptr)nullptr),ResourceBroker::InvalidParameterException);
152 TEST_F(ResourceBrokerTest,getResourceState_NormalErrorHandlingIfAbnormalResource)
157 PrimitiveResource::Ptr resource[3];
160 for(int i=0;i!=3;i++)
162 resource[i] = PrimitiveResource::Ptr(mocks.Mock< PrimitiveResource >(), [](PrimitiveResource*){});
163 mocks.OnCall(resource[i].get(), PrimitiveResource::requestGet);
164 mocks.OnCall(resource[i].get(), PrimitiveResource::getHost).Return(std::string());
165 mocks.OnCallFuncOverload(static_cast< subscribePresenceSig1 >(OC::OCPlatform::subscribePresence)).Return(OC_STACK_OK);
166 id[i] = brokerInstance->hostResource(resource[i],cb);
170 EXPECT_EQ(brokerInstance->getResourceState(pResource),BROKER_STATE::NONE);
172 for(int i=0;i!=3;i++)
174 brokerInstance->cancelHostResource(id[i]);
179 TEST_F(ResourceBrokerTest,getResourceState_NormalErrorHandlingIfAbnormalId)
183 ASSERT_THROW(brokerInstance->getResourceState(id),ResourceBroker::InvalidParameterException);