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 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
21 #include <gtest/gtest.h>
22 #include <HippoMocks/hippomocks.h>
24 #include <PresenceSubscriber.h>
25 #include <RCSException.h>
27 #include <OCPlatform.h>
29 using namespace testing;
30 using namespace OIC::Service;
32 typedef OCStackResult (*subscribePresenceSig1)(OC::OCPlatform::OCPresenceHandle&,
33 const std::string&, OCConnectivityType, SubscribeCallback);
34 typedef OCStackResult (*subscribePresenceSig2)(OC::OCPlatform::OCPresenceHandle&,
35 const std::string&, const std::string&, OCConnectivityType, SubscribeCallback);
37 const std::string HOST{ "host" };
38 const OCConnectivityType CONTYPE{ };
40 class PresenceSubscriberNonMemberTest: public Test
48 TEST_F(PresenceSubscriberNonMemberTest, OCPlatformSubscribePresenceWillBeCalled)
50 mocks.ExpectCallFuncOverload(
51 static_cast< subscribePresenceSig1 >(OC::OCPlatform::subscribePresence))
52 .With(_, HOST,CONTYPE, _).Return(OC_STACK_OK);
54 subscribePresence(handle, HOST, CONTYPE, SubscribeCallback());
57 TEST_F(PresenceSubscriberNonMemberTest, SubscribePresenceThrowsIfResultIsNotOK)
59 mocks.ExpectCallFuncOverload(
60 static_cast< subscribePresenceSig1>(OC::OCPlatform::subscribePresence))
61 .Return(OC_STACK_ERROR);
63 ASSERT_THROW(subscribePresence(handle, "", CONTYPE, SubscribeCallback()), PlatformException);
66 TEST_F(PresenceSubscriberNonMemberTest, OCPlatformUnsubscribePresenceWillBeCalled)
68 mocks.ExpectCallFuncOverload(OC::OCPlatform::unsubscribePresence).Return(OC_STACK_OK);
70 unsubscribePresence(handle);
73 TEST_F(PresenceSubscriberNonMemberTest, UnsubscribePresenceThrowIfResultIsNotOK)
75 mocks.ExpectCallFuncOverload(OC::OCPlatform::unsubscribePresence).Return(OC_STACK_ERROR);
77 ASSERT_THROW(unsubscribePresence(handle), PlatformException);
82 class PresenceSubscriberTest: public Test
89 mocks.OnCallFuncOverload(
90 static_cast< subscribePresenceSig1 >(OC::OCPlatform::subscribePresence)).Do(
92 [](OC::OCPlatform::OCPresenceHandle& handle, const std::string&,
93 OCConnectivityType, SubscribeCallback) -> OCStackResult
95 handle = reinterpret_cast<OC::OCPlatform::OCPresenceHandle>(1);
100 mocks.OnCallFunc(OC::OCPlatform::unsubscribePresence).Return(OC_STACK_OK);
104 TEST_F(PresenceSubscriberTest, IsNotSubscribingWhenCreatedWithDefaultConstructor)
106 PresenceSubscriber subscriber;
107 ASSERT_FALSE(subscriber.isSubscribing());
110 TEST_F(PresenceSubscriberTest, ConstructorCallOCPlatformSubscribe)
112 mocks.ExpectCallFuncOverload(
113 static_cast< subscribePresenceSig1 >(OC::OCPlatform::subscribePresence))
114 .With(_, HOST, CONTYPE, _).Return(OC_STACK_OK);
116 PresenceSubscriber subscriber{ HOST, CONTYPE, SubscribeCallback() };
119 TEST_F(PresenceSubscriberTest, ConstructorWithResourceTypeCallOCPlatformSubscribe)
121 const std::string resType { "resType" };
123 mocks.ExpectCallFuncOverload(
124 static_cast< subscribePresenceSig2 >(OC::OCPlatform::subscribePresence))
125 .With(_, HOST, resType, CONTYPE, _).Return(OC_STACK_OK);
127 PresenceSubscriber subscriber{ HOST, resType, CONTYPE, SubscribeCallback() };
130 TEST_F(PresenceSubscriberTest, ConstructorThrowsIfResultIsNotOK)
132 mocks.ExpectCallFuncOverload(
133 static_cast< subscribePresenceSig1 >(OC::OCPlatform::subscribePresence))
134 .Return(OC_STACK_ERROR);
136 ASSERT_THROW(PresenceSubscriber(HOST, CONTYPE, SubscribeCallback()), PlatformException);
139 TEST_F(PresenceSubscriberTest, IsSubscribingIfConstructedWithoutException)
141 PresenceSubscriber subscriber{ HOST, CONTYPE, SubscribeCallback() };
143 ASSERT_TRUE(subscriber.isSubscribing());
146 TEST_F(PresenceSubscriberTest, IsSubscribingOfMovedSubscriberReturnsFalse)
148 PresenceSubscriber subscriber{ HOST, CONTYPE, SubscribeCallback() };
150 PresenceSubscriber newSubscriber{ std::move(subscriber) };
152 ASSERT_FALSE(subscriber.isSubscribing());
155 TEST_F(PresenceSubscriberTest, IsSubscribingOfMovedSubscriberWithAssignmentReturnsFalse)
157 PresenceSubscriber subscriber{ HOST, CONTYPE, SubscribeCallback() };
159 PresenceSubscriber newSubscriber;
161 newSubscriber = std::move(subscriber);
163 ASSERT_FALSE(subscriber.isSubscribing());
166 TEST_F(PresenceSubscriberTest, UnsubscribeWillBeCalledWhenSubscriberIsDestoryed)
168 mocks.ExpectCallFunc(OC::OCPlatform::unsubscribePresence).Return(OC_STACK_OK);
170 PresenceSubscriber subscriber{ HOST, CONTYPE, SubscribeCallback() };