Merge test folder of test branch
[iotivity.git] / test / src / tc / sm / gtest / src / btc / SMRemoteSceneTest.cpp
1 /******************************************************************
2 *
3 * Copyright 2016 Samsung Electronics All Rights Reserved.
4 *
5 *
6 *
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
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
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.
18 *
19 ******************************************************************/
20
21 #include "SMRemoteHelper.h"
22
23 class SMRemoteSceneTest_btc: public ::testing::Test {
24 public:
25     SMRemoteHelper* m_pSMRemoteHelper;
26     std::shared_ptr<RemoteSceneList> m_pRemoteSceneList;
27     std::shared_ptr<RemoteSceneCollection> m_pRemoteSceneCollection;
28     std::shared_ptr<RCSRemoteResourceObject> m_pRemoteResource;
29     RemoteSceneAction::Ptr m_pRemoteSceneAction;
30     RemoteSceneAction::Ptr m_pReceivedRemoteSceneAction;
31     RemoteScene::Ptr m_pRemoteScene;
32     bool m_isException;
33
34     SMRemoteSceneTest_btc() {
35         m_pSMRemoteHelper = nullptr;
36         m_pRemoteSceneList = nullptr;
37         m_pRemoteSceneCollection = nullptr;
38         m_pRemoteResource = nullptr;
39         m_pRemoteSceneAction = nullptr;
40         m_pReceivedRemoteSceneAction = nullptr;
41         m_pRemoteScene = nullptr;
42         m_isException = false;
43     }
44
45     virtual void SetUp() {
46         IOTIVITYTEST_LOG(INFO, "SetUp IN");
47
48         CommonTestUtil::runCommonTCSetUpPart();
49
50         CommonUtil::launchApp(LIGHT_SERVER);
51         CommonUtil::waitInSecond(MAX_SLEEP_TIME);
52
53         CommonUtil::launchApp(SCENE_SERVER);
54         CommonUtil::waitInSecond(MAX_SLEEP_TIME);
55
56         m_pSMRemoteHelper = new SMRemoteHelper();
57         m_pSMRemoteHelper->discoverResource();
58         m_pSMRemoteHelper->stopDiscovery();
59
60         ASSERT_NE(NULL_PTR,m_pSMRemoteHelper->g_pFoundSceneList) << "Local scene List resource was not found in discovery";
61
62         m_pRemoteSceneList = m_pSMRemoteHelper->createRemoteSceneListInstance();
63         ASSERT_NE(m_pRemoteSceneList,NULL_PTR) << "did not find remote scene list instance";
64
65         m_pRemoteSceneList->addNewSceneCollection(
66                 std::bind(&SMRemoteSceneTest_btc::onRemoteSceneCollectionCreated,
67                         this, placeholders::_1, placeholders::_2));
68         CommonUtil::waitInSecond(CALLBACK_WAIT_MAX);
69
70         ASSERT_NE(m_pRemoteSceneCollection,NULL_PTR) << "did not find remote scene collection instance";
71
72         m_pRemoteSceneCollection->addNewScene(SCENE_NAME_1,
73                 std::bind(&SMRemoteSceneTest_btc::onRemoteSceneCreated, this,
74                         placeholders::_1, placeholders::_2));
75         CommonUtil::waitInSecond(CALLBACK_WAIT_MAX);
76         ASSERT_NE(m_pRemoteScene,NULL_PTR) << "Remote Scene is not found";
77
78         ASSERT_NE(m_pSMRemoteHelper->g_vecFoundResourceList.size(),INT_ZERO) << "light resource not found";
79         m_pRemoteResource = m_pSMRemoteHelper->g_vecFoundResourceList.at(
80                     INT_ZERO);
81     }
82
83     virtual void TearDown() {
84         IOTIVITYTEST_LOG(INFO, "TearDown IN");
85
86         CommonTestUtil::runCommonTCTearDownPart();
87
88         CommonUtil::killApp(LIGHT_SERVER);
89         CommonUtil::waitInSecond(MAX_SLEEP_TIME);
90         CommonUtil::killApp(SCENE_SERVER);
91         CommonUtil::waitInSecond(MAX_SLEEP_TIME);
92
93         delete m_pSMRemoteHelper;
94         m_pSMRemoteHelper = nullptr;
95     }
96
97 public:
98     void onRemoteSceneCollectionCreated(
99             RemoteSceneCollection::Ptr remoteSceneCol, int eCode) {
100         IOTIVITYTEST_LOG(INFO, "%s is called with error code: %d", __func__, eCode);
101
102         if (eCode == SCENE_RESULT_OK) {
103             m_pRemoteSceneCollection = remoteSceneCol;
104         } else {
105             IOTIVITYTEST_LOG(INFO, "Create Remote scene collection failed.");
106         }
107     }
108
109     void onRemoteSceneCreated(RemoteScene::Ptr remoteScene, int eCode) {
110         IOTIVITYTEST_LOG(INFO, "%s is called with error code: %d", __func__, eCode);
111         if (eCode == SCENE_RESULT_OK) {
112             m_pRemoteScene = remoteScene;
113         } else {
114             IOTIVITYTEST_LOG(INFO, "Create Remote scene failed");
115         }
116     }
117
118     void onRemoteSceneActionCreated(RemoteSceneAction::Ptr remoteSceneAction,
119             int eCode) {
120         IOTIVITYTEST_LOG(INFO, "%s is called with error code: %d", __func__, eCode);
121         if (eCode == SCENE_RESULT_OK) {
122             m_pRemoteSceneAction = remoteSceneAction;
123         } else {
124             IOTIVITYTEST_LOG(INFO, "Create Remote scene action failed");
125         }
126     }
127
128     void onRemoteSceneExecuted(const std::string &sceneName, int eCode) {
129         IOTIVITYTEST_LOG(INFO, "%s is called with error code: %d, scene name: %s", __func__, eCode,sceneName.c_str());
130     }
131 };
132
133 /**
134  * @since 2016-03-09
135  * @see void Configure(const PlatformConfig& config);
136  * @see DiscoveryTask::Ptr discoverResourceByTypes(const RCSAddress& address,
137  *                   const std::vector< std::string >& resourceTypes,
138  *                   ResourceDiscoveredCallback cb);
139  * @see static void createInstance(
140  *         RCSRemoteResourceObject::Ptr sceneListResource, CreateInstanceCallback cb);
141  * @see void addNewSceneCollection(AddNewSceneCollectionCallback cb);
142  * @see void addNewScene(const std::string &name, AddNewSceneCallback cb)
143  * @objective Test addNewSceneAction function on positive basic way with key and value
144  * @target void addNewSceneAction(RCSRemoteResourceObject::Ptr targetResource,
145  *                                    const std::string &key,
146  *                                  const RCSResourceAttributes::Value &value,
147  *                                  AddNewSceneActionCallback cb)
148  * @test_data none    1. RCSRemoteResourceObject::Ptr A pointer of discovered resource
149  *                     2. key = "power"
150  *                     3. value = "value"
151  *                     4. AddNewSceneActionCallback A callback to receive created RemoteSceneAction instance
152  * @pre_condition     1. Start SceneList and light type resource using SCENE_SERVER and LIGHT_SERVER simulators
153  *                     2. discover resources
154  *                     3. get remote SceneList instance
155  *                     4. get remote SceneCollection pointer by adding SceneCollection
156  *                     5. Get scene pointer by adding scene
157  * @procedure call addNewSceneAction to add new SceneAction to
158  *                        the Scene on remote side
159  * @post_condition stop the simulators
160  * @expected addNewSceneAction will succeed and no exceptions occur
161  */
162 #if defined(__LINUX__)
163 TEST_F(SMRemoteSceneTest_btc, RemoteAddNewSceneActionWithKeyValue_SRC_RSV_P)
164 {
165     try
166     {
167         m_pRemoteScene->addNewSceneAction(m_pRemoteResource, KEY_POWER, RCSResourceAttributes::Value(VALUE_OFF),
168                 std::bind(&SMRemoteSceneTest_btc::onRemoteSceneActionCreated, this,placeholders::_1, placeholders::_2));
169     }
170     catch (exception& e)
171     {
172         SET_FAILURE("Exception occurred inside addNewSceneAction: " + std::string(e.what()));
173     }
174 }
175 #endif
176
177 /**
178  * @since 2016-03-09
179  * @see void Configure(const PlatformConfig& config);
180  * @see DiscoveryTask::Ptr discoverResourceByTypes(const RCSAddress& address,
181  *                   const std::vector< std::string >& resourceTypes,
182  *                   ResourceDiscoveredCallback cb);
183  * @see static void createInstance(
184  *         RCSRemoteResourceObject::Ptr sceneListResource, CreateInstanceCallback cb);
185  * @see void addNewSceneCollection(AddNewSceneCollectionCallback cb);
186  * @see void addNewScene(const std::string &name, AddNewSceneCallback cb)
187  * @objective Test addNewSceneAction function on negative way using null resource
188  * @target void addNewSceneAction(RCSRemoteResourceObject::Ptr targetResource,
189  *                                    const std::string &key,
190  *                                  const RCSResourceAttributes::Value &value,
191  *                                  AddNewSceneActionCallback cb)
192  * @test_data none    1. RCSRemoteResourceObject::Ptr NULL
193  *                     2. key = "power"
194  *                     3. value = "off"
195  *                     4. AddNewSceneActionCallback A callback to receive created RemoteSceneAction instance
196  * @pre_condition     1. Start SceneList and light type resource using SCENE_SERVER and LIGHT_SERVER simulators
197  *                     2. discover resources
198  *                     3. get remote SceneList instance
199  *                     4. get remote SceneCollection pointer by adding SceneCollection
200  *                     5. Get scene pointer by adding scene
201  * @procedure call addNewSceneAction using null resource pointer
202  *             and check if RCSInvalidParameterException has occured
203  * @post_condition stop the simulators
204  * @expected RCSInvalidParameterException should occur due to Invalid parameter
205  */
206 #if defined(__LINUX__)
207 TEST_F(SMRemoteSceneTest_btc, RemoteAddNewSceneActionWithKeyValueResource_NV_ETC_N)
208 {
209     try
210     {
211         m_pRemoteScene->addNewSceneAction(NULL, KEY_POWER, RCSResourceAttributes::Value(VALUE_OFF),
212                 std::bind(&SMRemoteSceneTest_btc::onRemoteSceneActionCreated, this,placeholders::_1, placeholders::_2));
213     }
214     catch(const RCSInvalidParameterException& e)
215     {
216         m_isException = true;
217     }
218     catch (exception& e)
219     {
220         SET_FAILURE("Unexcpected Exception occurred inside addNewSceneAction: " + std::string(e.what()));
221         return;
222     }
223
224     if(!m_isException)
225     {
226         SET_FAILURE("RCSInvalidParameterException should be occurred due to Null Resource attribute");
227     }
228 }
229 #endif
230
231 /**
232  * @since 2016-03-09
233  * @see void Configure(const PlatformConfig& config);
234  * @see DiscoveryTask::Ptr discoverResourceByTypes(const RCSAddress& address,
235  *                   const std::vector< std::string >& resourceTypes,
236  *                   ResourceDiscoveredCallback cb);
237  * @see static void createInstance(
238  *         RCSRemoteResourceObject::Ptr sceneListResource, CreateInstanceCallback cb);
239  * @see void addNewSceneCollection(AddNewSceneCollectionCallback cb);
240  * @see void addNewScene(const std::string &name, AddNewSceneCallback cb)
241  * @objective Test addNewSceneAction function on positive way using empty string as key
242  * @target void addNewSceneAction(RCSRemoteResourceObject::Ptr targetResource,
243  *                                    const std::string &key,
244  *                                  const RCSResourceAttributes::Value &value,
245  *                                  AddNewSceneActionCallback cb)
246  * @test_data none    1. RCSRemoteResourceObject::Ptr A pointer of discovered resource
247  *                     2. key = ""
248  *                     3. value = "off"
249  *                     4. AddNewSceneActionCallback A callback to receive created RemoteSceneAction instance
250  * @pre_condition     1. Start SceneList and light type resource using SCENE_SERVER and LIGHT_SERVER simulators
251  *                     2. discover resources
252  *                     3. get remote SceneList instance
253  *                     4. get remote SceneCollection pointer by adding SceneCollection
254  *                     5. Get scene pointer by adding scene
255  * @procedure call addNewSceneAction with empty key
256  * @post_condition stop the simulators
257  * @expected addNewSceneAction will succeed and no exceptions occur
258  */
259 #if defined(__LINUX__)
260 TEST_F(SMRemoteSceneTest_btc, RemoteAddNewSceneActionWithKeyValueEmptyKey_ESV_P)
261 {
262     try
263     {
264         m_pRemoteScene->addNewSceneAction(m_pRemoteResource, EMPTY_STRING, RCSResourceAttributes::Value(VALUE_OFF),
265                 std::bind(&SMRemoteSceneTest_btc::onRemoteSceneActionCreated, this,placeholders::_1, placeholders::_2));
266     }
267     catch (exception& e)
268     {
269         SET_FAILURE("Exception occurred inside addNewSceneAction: " + std::string(e.what()));
270     }
271 }
272 #endif
273
274 /**
275  * @since 2016-03-09
276  * @see void Configure(const PlatformConfig& config);
277  * @see DiscoveryTask::Ptr discoverResourceByTypes(const RCSAddress& address,
278  *                   const std::vector< std::string >& resourceTypes,
279  *                   ResourceDiscoveredCallback cb);
280  * @see static void createInstance(
281  *         RCSRemoteResourceObject::Ptr sceneListResource, CreateInstanceCallback cb);
282  * @see void addNewSceneCollection(AddNewSceneCollectionCallback cb);
283  * @see void addNewScene(const std::string &name, AddNewSceneCallback cb)
284  * @objective Test addNewSceneAction function on positive way using empty value
285  * @target void addNewSceneAction(RCSRemoteResourceObject::Ptr targetResource,
286  *                                    const std::string &key,
287  *                                  const RCSResourceAttributes::Value &value,
288  *                                  AddNewSceneActionCallback cb)
289  * @test_data         1. RCSRemoteResourceObject::Ptr A pointer of discovered resource
290  *                     2. key = "power"
291  *                     3. value = ""
292  *                     4. AddNewSceneActionCallback A callback to receive created RemoteSceneAction instance
293  * @pre_condition     1. Start SceneList and light type resource using SCENE_SERVER and LIGHT_SERVER simulators
294  *                     2. discover resources
295  *                     3. get remote SceneList instance
296  *                     4. get remote SceneCollection pointer by adding SceneCollection
297  *                     5. Get scene pointer by adding scene
298  * @procedure call addNewSceneAction with empty value
299  * @post_condition stop the simulators
300  * @expected addNewSceneAction should succeed and should not occur any exception
301  */
302 #if defined(__LINUX__)
303 TEST_F(SMRemoteSceneTest_btc, RemoteAddNewSceneActionWithKeyValueEmptyValue_ESV_P)
304 {
305     try
306     {
307         m_pRemoteScene->addNewSceneAction(m_pRemoteResource, KEY_POWER, VALUE_EMPTY,
308                 std::bind(&SMRemoteSceneTest_btc::onRemoteSceneActionCreated, this,placeholders::_1, placeholders::_2));
309     }
310     catch (exception& e)
311     {
312         SET_FAILURE("Exception occurred inside addNewSceneAction: " + std::string(e.what()));
313     }
314 }
315 #endif
316
317 /**
318  * @since 2016-03-09
319  * @see void Configure(const PlatformConfig& config);
320  * @see DiscoveryTask::Ptr discoverResourceByTypes(const RCSAddress& address,
321  *                   const std::vector< std::string >& resourceTypes,
322  *                   ResourceDiscoveredCallback cb);
323  * @see static void createInstance(
324  *         RCSRemoteResourceObject::Ptr sceneListResource, CreateInstanceCallback cb);
325  * @see void addNewSceneCollection(AddNewSceneCollectionCallback cb);
326  * @see void addNewScene(const std::string &name, AddNewSceneCallback cb)
327  * @objective Test addNewSceneAction function on negative way using null callback
328  * @target void addNewSceneAction(RCSRemoteResourceObject::Ptr targetResource,
329  *                                    const std::string &key,
330  *                                  const RCSResourceAttributes::Value &value,
331  *                                  AddNewSceneActionCallback cb)
332  * @test_data none    1. RCSRemoteResourceObject::Ptr A pointer of discovered resource
333  *                     2. key = "power"
334  *                     3. value = "off"
335  *                     4. AddNewSceneActionCallback NULL
336  * @pre_condition     1. Start SceneList and light type resource using SCENE_SERVER and LIGHT_SERVER simulators
337  *                     2. discover resources
338  *                     3. get remote SceneList instance
339  *                     4. get remote SceneCollection pointer by adding SceneCollection
340  *                     5. Get scene pointer by adding scene
341  * @procedure call addNewSceneAction with null callback and check if RCSInvalidParameterException
342  *             has occured
343  * @post_condition stop the simulators
344  * @expected RCSInvalidParameterException should occur due to Invalid parameter
345  */
346 #if defined(__LINUX__)
347 TEST_F(SMRemoteSceneTest_btc, RemoteAddNewSceneActionWithKeyValueCallback_NV_ETC_N)
348 {
349     try
350     {
351         m_pRemoteScene->addNewSceneAction(m_pRemoteResource, KEY_POWER, RCSResourceAttributes::Value(VALUE_OFF),NULL);
352     }
353     catch(const RCSInvalidParameterException& e)
354     {
355         m_isException = true;
356     }
357     catch (exception& e)
358     {
359         SET_FAILURE("Unexpected Exception occurred inside addNewSceneAction: " + std::string(e.what()));
360         return;
361     }
362
363     if(!m_isException)
364     {
365         SET_FAILURE("RCSInvalidParameterException should be occurred due to Null Callback");
366     }
367 }
368 #endif
369
370 /**
371  * @since 2016-03-09
372  * @see void Configure(const PlatformConfig& config);
373  * @see DiscoveryTask::Ptr discoverResourceByTypes(const RCSAddress& address,
374  *                   const std::vector< std::string >& resourceTypes,
375  *                   ResourceDiscoveredCallback cb);
376  * @see static void createInstance(
377  *         RCSRemoteResourceObject::Ptr sceneListResource, CreateInstanceCallback cb);
378  * @see void addNewSceneCollection(AddNewSceneCollectionCallback cb);
379  * @see void addNewScene(const std::string &name, AddNewSceneCallback cb)
380  * @objective Test addNewSceneAction function on positive way with attribute
381  * @target void addNewSceneAction(RCSRemoteResourceObject::Ptr targetResource,
382  *                   const RCSResourceAttributes &attrs, AddNewSceneActionCallback cb)
383  * @test_data none    1. RCSRemoteResourceObject::Ptr A pointer of discovered resource
384  *                     2. RCSResourceAttributes Attributes to set when the Scene executed
385  *                     3. AddNewSceneActionCallback A callback to receive created RemoteSceneAction instance
386  * @pre_condition     1. Start SceneList and light type resource using SCENE_SERVER and LIGHT_SERVER simulators
387  *                     2. discover resources
388  *                     3. get remote SceneList instance
389  *                     4. get remote SceneCollection pointer by adding SceneCollection
390  *                     5. Get scene pointer by adding scene
391  * @procedure call addNewSceneAction to add new SceneAction to
392  *                        the Scene on remote side
393  * @post_condition stop the simulators
394  * @expected addNewSceneAction will succeed and no exceptions occur
395  */
396 #if defined(__LINUX__)
397 TEST_F(SMRemoteSceneTest_btc, RemoteAddNewSceneActionWithAttribute_SRC_RSV_P)
398 {
399     const RCSResourceAttributes attribute;
400     attribute[KEY_POWER] = VALUE_ON;
401
402     try
403     {
404         m_pRemoteScene->addNewSceneAction(m_pRemoteResource,attribute,
405                 std::bind(&SMRemoteSceneTest_btc::onRemoteSceneActionCreated, this,placeholders::_1, placeholders::_2));
406     }
407     catch (exception& e)
408     {
409         SET_FAILURE("Exception occurred inside addNewSceneAction: " + std::string(e.what()));
410     }
411 }
412 #endif
413
414 /**
415  * @since 2016-03-09
416  * @see void Configure(const PlatformConfig& config);
417  * @see DiscoveryTask::Ptr discoverResourceByTypes(const RCSAddress& address,
418  *                   const std::vector< std::string >& resourceTypes,
419  *                   ResourceDiscoveredCallback cb);
420  * @see static void createInstance(
421  *         RCSRemoteResourceObject::Ptr sceneListResource, CreateInstanceCallback cb);
422  * @see void addNewSceneCollection(AddNewSceneCollectionCallback cb);
423  * @see void addNewScene(const std::string &name, AddNewSceneCallback cb)
424  * @objective Test addNewSceneAction function on negative way using null resource
425  * @target void addNewSceneAction(RCSRemoteResourceObject::Ptr targetResource,
426  *                   const RCSResourceAttributes &attrs, AddNewSceneActionCallback cb)
427  * @test_data none    1. RCSRemoteResourceObject::Ptr Null
428  *                     2. RCSResourceAttributes Attributes to set when the Scene executed
429  *                     3. AddNewSceneActionCallback A callback to receive created RemoteSceneAction instance
430  * @pre_condition     1. Start SceneList and light type resource using SCENE_SERVER and LIGHT_SERVER simulators
431  *                     2. discover resources
432  *                     3. get remote SceneList instance
433  *                     4. get remote SceneCollection pointer by adding SceneCollection
434  *                     5. Get scene pointer by adding scene
435  * @procedure call addNewSceneAction with null resource and check if RCSInvalidParameterException
436  *                 has occured
437  * @post_condition stop the simulators
438  * @expected RCSInvalidParameterException exception should occur due to Invalid parameter
439  */
440 #if defined(__LINUX__)
441 TEST_F(SMRemoteSceneTest_btc, RemoteAddNewSceneActionWithAttributeResource_NV_ETC_N)
442 {
443     const RCSResourceAttributes attribute;
444     attribute[KEY_POWER] = VALUE_ON;
445
446     try
447     {
448         m_pRemoteScene->addNewSceneAction(NULL,attribute,
449                 std::bind(&SMRemoteSceneTest_btc::onRemoteSceneActionCreated, this,placeholders::_1, placeholders::_2));
450     }
451     catch(const RCSInvalidParameterException& e)
452     {
453         m_isException = true;
454     }
455     catch (exception& e)
456     {
457         SET_FAILURE("Unexpected Exception occurred : " + std::string(e.what()));
458         return;
459     }
460
461     if(!m_isException)
462     {
463         SET_FAILURE("RCSInvalidParameterException should be occurred due to Null Parameter");
464     }
465 }
466 #endif
467
468 /**
469  * @since 2016-03-09
470  * @see void Configure(const PlatformConfig& config);
471  * @see DiscoveryTask::Ptr discoverResourceByTypes(const RCSAddress& address,
472  *                   const std::vector< std::string >& resourceTypes,
473  *                   ResourceDiscoveredCallback cb);
474  * @see static void createInstance(
475  *         RCSRemoteResourceObject::Ptr sceneListResource, CreateInstanceCallback cb);
476  * @see void addNewSceneCollection(AddNewSceneCollectionCallback cb);
477  * @see void addNewScene(const std::string &name, AddNewSceneCallback cb)
478  * @objective Test addNewSceneAction function on negative way using null callback
479  * @target void addNewSceneAction(RCSRemoteResourceObject::Ptr targetResource,
480  *                   const RCSResourceAttributes &attrs, AddNewSceneActionCallback cb)
481  * @test_data none    1. RCSRemoteResourceObject::Ptr A pointer of discovered resource
482  *                     2. RCSResourceAttributes Attributes to set when the Scene executed
483  *                     3. AddNewSceneActionCallback Null
484  * @pre_condition     1. Start SceneList and light type resource using SCENE_SERVER and LIGHT_SERVER simulators
485  *                     2. discover resources
486  *                     3. get remote SceneList instance
487  *                     4. get remote SceneCollection pointer by adding SceneCollection
488  *                     5. Get scene pointer by adding scene
489  * @procedure call addNewSceneAction with null callback and check if
490  *             RCSInvalidParameterException has occured
491  * @post_condition stop the simulators
492  * @expected RCSInvalidParameterException should occur due to Invalid parameter
493  */
494 #if defined(__LINUX__)
495 TEST_F(SMRemoteSceneTest_btc, RemoteAddNewSceneActionWithAttributeCallback_NV_N)
496 {
497     const RCSResourceAttributes attribute;
498     attribute[KEY_POWER] = VALUE_ON;
499
500     try
501     {
502         m_pRemoteScene->addNewSceneAction(m_pRemoteResource,attribute,NULL);
503     }
504     catch(const RCSInvalidParameterException& e)
505     {
506         m_isException = true;
507     }
508     catch (exception& e)
509     {
510         SET_FAILURE("Unexpected Exception occurred inside addNewSceneAction: " + std::string(e.what()));
511         return;
512     }
513
514     if(!m_isException)
515     {
516         SET_FAILURE("RCSInvalidParameterException exception should be occurred due to Null Parameter");
517     }
518 }
519 #endif
520
521 /**
522  * @since 2016-03-09
523  * @see void Configure(const PlatformConfig& config);
524  * @see DiscoveryTask::Ptr discoverResourceByTypes(const RCSAddress& address,
525  *                   const std::vector< std::string >& resourceTypes,
526  *                   ResourceDiscoveredCallback cb);
527  * @see static void createInstance(
528  *         RCSRemoteResourceObject::Ptr sceneListResource, CreateInstanceCallback cb);
529  * @see void addNewSceneCollection(AddNewSceneCollectionCallback cb);
530  * @see void addNewScene(const std::string &name, AddNewSceneCallback cb)
531  * @see void addNewSceneAction(RCSRemoteResourceObject::Ptr targetResource,
532  *                   const RCSResourceAttributes &attrs, AddNewSceneActionCallback cb)
533  * @objective Test getSceneAction function on positive way
534  * @target RemoteSceneAction::Ptr getRemoteSceneAction(
535  *                   const RCSRemoteResourceObject::Ptr targetResource) const
536  * @test_data RCSRemoteResourceObject::Ptr A pointer of discovered resource
537  * @pre_condition     1. Start SceneList and light type resource using SCENE_SERVER and LIGHT_SERVER simulators
538  *                     2. discover resources
539  *                     3. get remote SceneList instance
540  *                     4. get remote SceneCollection pointer by adding SceneCollection
541  *                     5. Get scene pointer by adding scene
542  *                     6. call addNewSceneAction to add new SceneAction to
543  *                        the Scene on remote side
544  * @procedure         1. call getRemoteSceneAction to get RemoteSceneAction instance by
545  *                        using a certain discovered resource
546  *                     2. check if scene action is returned
547  * @post_condition stop the simulators
548  * @expected getSceneAction will return sceneAction pointer and no exceptions occur
549  */
550 #if defined(__LINUX__)
551 TEST_F(SMRemoteSceneTest_btc, RemoteGetRemoteSceneAction_SRC_RSV_P)
552 {
553     const RCSResourceAttributes attribute;
554     attribute[KEY_POWER] = VALUE_ON;
555
556     m_pRemoteScene->addNewSceneAction(m_pRemoteResource,attribute,
557             std::bind(&SMRemoteSceneTest_btc::onRemoteSceneActionCreated, this,placeholders::_1, placeholders::_2));
558     CommonUtil::waitInSecond(CALLBACK_WAIT_MIN);
559     ASSERT_NE(m_pRemoteSceneAction,NULL_PTR) << "remote scene action is not added";
560
561     try
562     {
563         m_pReceivedRemoteSceneAction = m_pRemoteScene->getRemoteSceneAction(m_pRemoteResource);
564     }
565     catch (exception& e)
566     {
567         SET_FAILURE("Exception occurred inside getRemoteSceneAction: " + std::string(e.what()));
568         return;
569     }
570
571     ASSERT_NE(m_pReceivedRemoteSceneAction,NULL_PTR) << "did not return scene action pointer";
572 }
573 #endif
574
575 /**
576  * @since 2016-03-09
577  * @see void Configure(const PlatformConfig& config);
578  * @see DiscoveryTask::Ptr discoverResourceByTypes(const RCSAddress& address,
579  *                   const std::vector< std::string >& resourceTypes,
580  *                   ResourceDiscoveredCallback cb);
581  * @see static void createInstance(
582  *         RCSRemoteResourceObject::Ptr sceneListResource, CreateInstanceCallback cb);
583  * @see void addNewSceneCollection(AddNewSceneCollectionCallback cb);
584  * @see void addNewScene(const std::string &name, AddNewSceneCallback cb)
585  * @see void addNewSceneAction(RCSRemoteResourceObject::Ptr targetResource,
586  *                   const RCSResourceAttributes &attrs, AddNewSceneActionCallback cb)
587  * @objective Test getSceneAction function on negative way using null resource
588  * @target RemoteSceneAction::Ptr getRemoteSceneAction(
589  *                   const RCSRemoteResourceObject::Ptr targetResource) const
590  * @test_data RCSRemoteResourceObject::Ptr null
591  * @pre_condition     1. Start SceneList and light type resource using SCENE_SERVER and LIGHT_SERVER simulators
592  *                     2. discover resources
593  *                     3. get remote SceneList instance
594  *                     4. get remote SceneCollection pointer by adding SceneCollection
595  *                     5. Get scene pointer by adding scene
596  *                     6. call addNewSceneAction to add new SceneAction to
597  *                        the Scene on remote side
598  * @procedure call getRemoteSceneAction with null resource and check
599  *             if RCSInvalidParameterException
600  * @post_condition stop the simulators
601  * @expected RCSInvalidParameterException should occur due to Invalid parameter
602  */
603 #if defined(__LINUX__)
604 TEST_F(SMRemoteSceneTest_btc, RemoteGetRemoteSceneAction_NV_ETC_N)
605 {
606     const RCSResourceAttributes attribute;
607     attribute[KEY_POWER] = VALUE_ON;
608
609     m_pRemoteScene->addNewSceneAction(m_pRemoteResource,attribute,
610             std::bind(&SMRemoteSceneTest_btc::onRemoteSceneActionCreated, this,placeholders::_1, placeholders::_2));
611     CommonUtil::waitInSecond(CALLBACK_WAIT_MIN);
612     ASSERT_NE(m_pRemoteSceneAction,NULL_PTR) << "remote scene action is not added";
613
614     try
615     {
616         m_pReceivedRemoteSceneAction = m_pRemoteScene->getRemoteSceneAction(NULL);
617     }
618     catch(const RCSInvalidParameterException& e)
619     {
620         m_isException = true;
621     }
622     catch (exception& e)
623     {
624         SET_FAILURE("Unexcpected Exception occurred inside getRemoteSceneAction: " + std::string(e.what()));
625         return;
626     }
627
628     if(!m_isException)
629     {
630         SET_FAILURE("RCSInvalidParameterException should be occurred due to Null Parameter");
631     }
632 }
633 #endif
634
635 /**
636  * @since 2016-03-09
637  * @see void Configure(const PlatformConfig& config);
638  * @see DiscoveryTask::Ptr discoverResourceByTypes(const RCSAddress& address,
639  *                   const std::vector< std::string >& resourceTypes,
640  *                   ResourceDiscoveredCallback cb);
641  * @see static void createInstance(
642  *         RCSRemoteResourceObject::Ptr sceneListResource, CreateInstanceCallback cb);
643  * @see void addNewSceneCollection(AddNewSceneCollectionCallback cb);
644  * @see void addNewScene(const std::string &name, AddNewSceneCallback cb)
645  * @see void addNewSceneAction(RCSRemoteResourceObject::Ptr targetResource,
646  *                                    const std::string &key,
647  *                                  const RCSResourceAttributes::Value &value,
648  *                                  AddNewSceneActionCallback cb)
649  * @objective Test getSceneActions function on positive basic way
650  * @target std::vector< RemoteSceneAction::Ptr > getRemoteSceneActions() const
651  * @test_data none
652  * @pre_condition     1. Start SceneList and light type resource using SCENE_SERVER and LIGHT_SERVER simulators
653  *                     2. discover resources
654  *                     3. get remote SceneList instance
655  *                     4. get remote SceneCollection pointer by adding SceneCollection
656  *                     5. Get scene pointer by adding scene
657  *                     6. call addNewSceneAction to add new SceneAction to
658  *                        the Scene on remote side
659  * @procedure call getRemoteSceneActions to get all RemoteSceneAction instances
660  *                        included in the Scene
661  * @post_condition stop the simulators
662  * @expected getSceneActions will return list of sceneActions and no exceptions occur
663  */
664 #if defined(__LINUX__)
665 TEST_F(SMRemoteSceneTest_btc, RemoteGetRemoteSceneActions_SRC_P)
666 {
667     std::vector<RemoteSceneAction::Ptr> remoteSceneActions;
668
669     const RCSResourceAttributes attribute;
670     attribute[KEY_POWER] = VALUE_ON;
671
672     m_pRemoteScene->addNewSceneAction(m_pRemoteResource, KEY_POWER, RCSResourceAttributes::Value(VALUE_OFF),
673             std::bind(&SMRemoteSceneTest_btc::onRemoteSceneActionCreated, this,placeholders::_1, placeholders::_2));
674     CommonUtil::waitInSecond(CALLBACK_WAIT_MAX);
675     ASSERT_NE(m_pRemoteSceneAction,NULL_PTR) << "remote scene action is not added";
676
677     try
678     {
679         remoteSceneActions = m_pRemoteScene->getRemoteSceneActions();
680     }
681     catch (exception& e)
682     {
683         SET_FAILURE("Exception occurred inside getRemoteSceneActions: " + std::string(e.what()));
684         return;
685     }
686
687     ASSERT_NE(INT_ZERO, remoteSceneActions.size()) << "did not get list of remote scene actions";
688 }
689 #endif
690
691 /**
692  * @since 2016-03-09
693  * @see void Configure(const PlatformConfig& config);
694  * @see DiscoveryTask::Ptr discoverResourceByTypes(const RCSAddress& address,
695  *                   const std::vector< std::string >& resourceTypes,
696  *                   ResourceDiscoveredCallback cb);
697  * @see static void createInstance(
698  *         RCSRemoteResourceObject::Ptr sceneListResource, CreateInstanceCallback cb);
699  * @see void addNewSceneCollection(AddNewSceneCollectionCallback cb);
700  * @see void addNewScene(const std::string &name, AddNewSceneCallback cb)
701  * @objective Test getName function on positive basic way
702  * @target std::string getName() const
703  * @test_data none
704  * @pre_condition     1. Start SceneList and light type resource using SCENE_SERVER and LIGHT_SERVER simulators
705  *                     2. discover resources
706  *                     3. get remote SceneList instance
707  *                     4. get remote SceneCollection pointer by adding SceneCollection
708  *                     5. Get scene pointer by adding scene
709  * @procedure call getName and check if name is returned
710  * @post_condition stop the simulators
711  * @expected getName will return name of scene and no exceptions occur
712  */
713 #if defined(__LINUX__)
714 TEST_F(SMRemoteSceneTest_btc, RemoteSceneGetName_SRC_P)
715 {
716     std::string receivedName = "";
717     try
718     {
719         receivedName = m_pRemoteScene->getName();
720     }
721     catch (exception& e)
722     {
723         SET_FAILURE("Exception occurred inside getName: " + std::string(e.what()));
724         return;
725     }
726
727     if(receivedName == EMPTY_STRING)
728     {
729         SET_FAILURE("Get name did not receive the scene name");
730     }
731 }
732 #endif
733
734 /**
735  * @since 2016-03-09
736  * @see void Configure(const PlatformConfig& config);
737  * @see DiscoveryTask::Ptr discoverResourceByTypes(const RCSAddress& address,
738  *                   const std::vector< std::string >& resourceTypes,
739  *                   ResourceDiscoveredCallback cb);
740  * @see static void createInstance(
741  *         RCSRemoteResourceObject::Ptr sceneListResource, CreateInstanceCallback cb);
742  * @see void addNewSceneCollection(AddNewSceneCollectionCallback cb);
743  * @see void addNewScene(const std::string &name, AddNewSceneCallback cb)
744  * @see void addNewSceneAction(RCSRemoteResourceObject::Ptr targetResource,
745  *                                    const std::string &key,
746  *                                  const RCSResourceAttributes::Value &value,
747  *                                  AddNewSceneActionCallback cb)
748  * @objective Test execute function on positive basic way
749  * @target void execute(RemoteSceneExecuteCallback cb)
750  * @test_data RemoteSceneExecuteCallback A callback to receive result of Scene execution
751  * @pre_condition     1. Start SceneList and light type resource using SCENE_SERVER and LIGHT_SERVER simulators
752  *                     2. discover resources
753  *                     3. get remote SceneList instance
754  *                     4. get remote SceneCollection pointer by adding SceneCollection
755  *                     5. Get scene pointer by adding scene
756  *                     6. call addNewSceneAction to add new SceneAction to
757  *                        the Scene on remote side
758  * @procedure call execute to to execute the Scene on remote side
759  * @post_condition stop the simulators
760  * @expected execute will succeed and no exceptions occur
761  */
762 #if defined(__LINUX__)
763 TEST_F(SMRemoteSceneTest_btc, RemoteExecuteAction_RSV_P)
764 {
765     m_pRemoteScene->addNewSceneAction(m_pRemoteResource, KEY_POWER, RCSResourceAttributes::Value(VALUE_OFF),
766             std::bind(&SMRemoteSceneTest_btc::onRemoteSceneActionCreated, this,placeholders::_1, placeholders::_2));
767     CommonUtil::waitInSecond(CALLBACK_WAIT_MIN);
768     ASSERT_NE(m_pRemoteSceneAction,NULL_PTR) << "remote scene action is not added";
769
770     try
771     {
772         m_pRemoteScene->execute(std::bind(&SMRemoteSceneTest_btc::onRemoteSceneExecuted, this,placeholders::_1, placeholders::_2));
773     }
774     catch (exception& e)
775     {
776         SET_FAILURE("Exception occurred inside execute: " + std::string(e.what()));
777     }
778 }
779 #endif
780
781 /**
782  * @since 2016-03-09
783  * @see void Configure(const PlatformConfig& config);
784  * @see DiscoveryTask::Ptr discoverResourceByTypes(const RCSAddress& address,
785  *                   const std::vector< std::string >& resourceTypes,
786  *                   ResourceDiscoveredCallback cb);
787  * @see static void createInstance(
788  *         RCSRemoteResourceObject::Ptr sceneListResource, CreateInstanceCallback cb);
789  * @see void addNewSceneCollection(AddNewSceneCollectionCallback cb);
790  * @see void addNewScene(const std::string &name, AddNewSceneCallback cb)
791  * @see void addNewSceneAction(RCSRemoteResourceObject::Ptr targetResource,
792  *                                    const std::string &key,
793  *                                  const RCSResourceAttributes::Value &value,
794  *                                  AddNewSceneActionCallback cb)
795  * @objective Test execute function on negative way using null callback
796  * @target void execute(RemoteSceneExecuteCallback cb)
797  * @test_data RemoteSceneExecuteCallback Null
798  * @pre_condition     1. Start SceneList and light type resource using SCENE_SERVER and LIGHT_SERVER simulators
799  *                     2. discover resources
800  *                     3. get remote SceneList instance
801  *                     4. get remote SceneCollection pointer by adding SceneCollection
802  *                     5. Get scene pointer by adding scene
803  *                     6. call addNewSceneAction to add new SceneAction to
804  *                        the Scene on remote side
805  * @procedure call execute with null callback and check if
806  *             RCSInvalidParameterException has occured
807  * @post_condition stop the simulators
808  * @expected RCSInvalidParameterException exception should occur due to Invalid parameter
809  */
810 #if defined(__LINUX__)
811 TEST_F(SMRemoteSceneTest_btc, RemoteExecuteAction_NV_N)
812 {
813     m_pRemoteScene->addNewSceneAction(m_pRemoteResource, KEY_POWER, RCSResourceAttributes::Value(VALUE_OFF),
814             std::bind(&SMRemoteSceneTest_btc::onRemoteSceneActionCreated, this,placeholders::_1, placeholders::_2));
815     CommonUtil::waitInSecond(CALLBACK_WAIT_MIN);
816     ASSERT_NE(m_pRemoteSceneAction,NULL_PTR) << "remote scene action is not added";
817
818     try
819     {
820         m_pRemoteScene->execute(NULL);
821     }
822     catch(const RCSInvalidParameterException& e)
823     {
824         m_isException = true;
825     }
826     catch (exception& e)
827     {
828         SET_FAILURE("Unexpected Exception occurred inside execute: " + std::string(e.what()));
829         return;
830     }
831
832     if(!m_isException)
833     {
834         SET_FAILURE("RCSInvalidParameterException should be occurred due to Null Parameter");
835     }
836 }
837 #endif