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 >(),
52 [](PrimitiveResource*)
56 cb = ([](BROKER_STATE)->OCStackResult
65 TestWithMock::TearDown();
73 mocks.OnCall(pResource.get(), PrimitiveResource::requestGet);
74 mocks.OnCall(pResource.get(), PrimitiveResource::getHost).Return(std::string());
75 mocks.OnCallFuncOverload(static_cast< subscribePresenceSig1 >(OC::OCPlatform::subscribePresence)).Return(OC_STACK_OK);
80 TEST_F(ResourceBrokerTest,HostResource_ReturnNormalValueIfNormalParams)
85 BrokerID ret = brokerInstance->hostResource(pResource, cb);
86 ASSERT_NE(BrokerID(0), ret);
88 brokerInstance->cancelHostResource(ret);
92 TEST_F(ResourceBrokerTest, HostResource_NormalErrorHandlingIfResourceNull)
95 ASSERT_THROW(brokerInstance->hostResource(nullptr, cb),ResourceBroker::InvalidParameterException);
99 TEST_F(ResourceBrokerTest, HostResource_NormalErrorHandlingIfCbFuncNull)
102 ASSERT_THROW(brokerInstance->hostResource(pResource,nullptr),ResourceBroker::InvalidParameterException);
106 TEST_F(ResourceBrokerTest,CancelHostResource_NoThrowIfNormalParams)
112 ret = brokerInstance->hostResource(pResource,cb);
114 ASSERT_NO_THROW(brokerInstance->cancelHostResource(ret));
119 TEST_F(ResourceBrokerTest,CancelHostResource_NormalErrorHandlingIfAbNormalIdZero)
123 ASSERT_THROW(brokerInstance->cancelHostResource(id),ResourceBroker::InvalidParameterException);
127 TEST_F(ResourceBrokerTest,CancelHostResource_NormalErrorHandlingIfAbNormalIdOutOfRangeValue)
131 ASSERT_THROW(brokerInstance->cancelHostResource(id),ResourceBroker::InvalidParameterException);
135 TEST_F(ResourceBrokerTest,getResourceState_ReturnNormalValueIfNormalId)
141 ret = brokerInstance->hostResource(pResource,cb);
143 ASSERT_NE(brokerInstance->getResourceState(ret),BROKER_STATE::NONE);
145 brokerInstance->cancelHostResource(ret);
150 TEST_F(ResourceBrokerTest,getResourceState_NormalErrorHandlingIfIdZero)
154 ASSERT_THROW(brokerInstance->getResourceState(id),ResourceBroker::InvalidParameterException);
158 TEST_F(ResourceBrokerTest,getResourceState_ReturnNormalValueIfNormalResource)
164 ret = brokerInstance->hostResource(pResource,cb);
166 ASSERT_NE(brokerInstance->getResourceState(pResource),BROKER_STATE::NONE);
168 brokerInstance->cancelHostResource(ret);
172 TEST_F(ResourceBrokerTest,getResourceState_NormalErrorHandlingIfResourceNull)
175 ASSERT_THROW(brokerInstance->getResourceState((PrimitiveResource::Ptr)nullptr),ResourceBroker::InvalidParameterException);
179 TEST_F(ResourceBrokerTest,getResourceState_NormalErrorHandlingIfAbnormalResource)
184 PrimitiveResource::Ptr resource[3];
187 for(int i=0;i!=3;i++)
189 resource[i] = PrimitiveResource::Ptr(mocks.Mock< PrimitiveResource >(),
190 [](PrimitiveResource*)
193 mocks.OnCall(resource[i].get(), PrimitiveResource::requestGet);
194 mocks.OnCall(resource[i].get(), PrimitiveResource::getHost).Return(std::string());
195 mocks.OnCallFuncOverload(static_cast< subscribePresenceSig1 >(OC::OCPlatform::subscribePresence)).Return(OC_STACK_OK);
196 id[i] = brokerInstance->hostResource(resource[i],cb);
200 EXPECT_EQ(brokerInstance->getResourceState(pResource),BROKER_STATE::NONE);
202 for(int i=0;i!=3;i++)
204 brokerInstance->cancelHostResource(id[i]);
209 TEST_F(ResourceBrokerTest,getResourceState_NormalErrorHandlingIfAbnormalId)
213 ASSERT_THROW(brokerInstance->getResourceState(id),ResourceBroker::InvalidParameterException);