1 //******************************************************************
3 // Copyright 2015 Samsung Electronics All Rights Reserved.
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
11 // http://www.apache.org/licenses/LICENSE-2.0
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
20 #include "gtest/gtest.h"
21 #include "HippoMocks/hippomocks.h"
23 #include "OCPlatform.h"
24 #include "PrimitiveResource.h"
25 #include "ResponseStatement.h"
26 #include "ResourceBroker.h"
27 #include "UnitTestHelper.h"
29 using namespace testing;
30 using namespace OIC::Service;
33 typedef OCStackResult (*subscribePresenceSig1)(OC::OCPlatform::OCPresenceHandle&,
34 const std::string&, OCConnectivityType, SubscribeCallback);
36 class ResourceBrokerTest : public TestWithMock
40 ResourceBroker * brokerInstance;
41 PrimitiveResource::Ptr pResource;
49 TestWithMock::SetUp();
50 brokerInstance = ResourceBroker::getInstance();
51 pResource = PrimitiveResource::Ptr(mocks.Mock< PrimitiveResource >(), [](PrimitiveResource*){});
52 cb = ([](BROKER_STATE)->OCStackResult{return OC_STACK_OK;});
58 TestWithMock::TearDown();
66 mocks.OnCall(pResource.get(), PrimitiveResource::requestGet);
67 mocks.OnCall(pResource.get(), PrimitiveResource::getHost).Return(std::string());
68 mocks.OnCallFuncOverload(static_cast< subscribePresenceSig1 >(OC::OCPlatform::subscribePresence)).Return(OC_STACK_OK);
73 TEST_F(ResourceBrokerTest,HostResource_ReturnNormalValueIfNormalParams)
78 BrokerID ret = brokerInstance->hostResource(pResource, cb);
79 ASSERT_NE(BrokerID(0), ret);
81 brokerInstance->cancelHostResource(ret);
85 TEST_F(ResourceBrokerTest, HostResource_NormalErrorHandlingIfResourceNull)
88 ASSERT_THROW(brokerInstance->hostResource(nullptr, cb),ResourceBroker::InvalidParameterException);
92 TEST_F(ResourceBrokerTest, HostResource_NormalErrorHandlingIfCbFuncNull)
95 ASSERT_THROW(brokerInstance->hostResource(pResource,nullptr),ResourceBroker::InvalidParameterException);
99 TEST_F(ResourceBrokerTest,CancelHostResource_NoThrowIfNormalParams)
105 ret = brokerInstance->hostResource(pResource,cb);
107 ASSERT_NO_THROW(brokerInstance->cancelHostResource(ret));
112 TEST_F(ResourceBrokerTest,CancelHostResource_NormalErrorHandlingIfAbNormalIdZero)
116 ASSERT_THROW(brokerInstance->cancelHostResource(id),ResourceBroker::InvalidParameterException);
120 TEST_F(ResourceBrokerTest,CancelHostResource_NormalErrorHandlingIfAbNormalIdOutOfRangeValue)
124 ASSERT_THROW(brokerInstance->cancelHostResource(id),ResourceBroker::InvalidParameterException);
128 TEST_F(ResourceBrokerTest,getResourceState_ReturnNormalValueIfNormalId)
134 ret = brokerInstance->hostResource(pResource,cb);
136 ASSERT_NE(brokerInstance->getResourceState(ret),BROKER_STATE::NONE);
138 brokerInstance->cancelHostResource(ret);
143 TEST_F(ResourceBrokerTest,getResourceState_NormalErrorHandlingIfIdZero)
147 ASSERT_THROW(brokerInstance->getResourceState(id),ResourceBroker::InvalidParameterException);
151 TEST_F(ResourceBrokerTest,getResourceState_ReturnNormalValueIfNormalResource)
157 ret = brokerInstance->hostResource(pResource,cb);
159 ASSERT_NE(brokerInstance->getResourceState(pResource),BROKER_STATE::NONE);
161 brokerInstance->cancelHostResource(ret);
165 TEST_F(ResourceBrokerTest,getResourceState_NormalErrorHandlingIfResourceNull)
168 ASSERT_THROW(brokerInstance->getResourceState((PrimitiveResource::Ptr)nullptr),ResourceBroker::InvalidParameterException);
172 TEST_F(ResourceBrokerTest,getResourceState_NormalErrorHandlingIfAbnormalResource)
177 PrimitiveResource::Ptr resource[3];
180 for(int i=0;i!=3;i++)
182 resource[i] = PrimitiveResource::Ptr(mocks.Mock< PrimitiveResource >(), [](PrimitiveResource*){});
183 mocks.OnCall(resource[i].get(), PrimitiveResource::requestGet);
184 mocks.OnCall(resource[i].get(), PrimitiveResource::getHost).Return(std::string());
185 mocks.OnCallFuncOverload(static_cast< subscribePresenceSig1 >(OC::OCPlatform::subscribePresence)).Return(OC_STACK_OK);
186 id[i] = brokerInstance->hostResource(resource[i],cb);
190 EXPECT_EQ(brokerInstance->getResourceState(pResource),BROKER_STATE::NONE);
192 for(int i=0;i!=3;i++)
194 brokerInstance->cancelHostResource(id[i]);
199 TEST_F(ResourceBrokerTest,getResourceState_NormalErrorHandlingIfAbnormalId)
203 ASSERT_THROW(brokerInstance->getResourceState(id),ResourceBroker::InvalidParameterException);