Imported Upstream version 1.2.0
[platform/upstream/iotivity.git] / service / scene-manager / unittests / RemoteSceneCollectionTest.cpp
old mode 100644 (file)
new mode 100755 (executable)
index bcc0888..a82a86e
@@ -29,6 +29,8 @@
 #include "RCSResourceObject.h"
 #include "RCSRemoteResourceObject.h"
 #include "OCPlatform.h"
+#include "RCSDiscoveryManager.h"
+#include "RCSAddress.h"
 
 using namespace std;
 using namespace OIC::Service;
@@ -36,6 +38,25 @@ using namespace OC;
 
 constexpr int DEFAULT_WAITTIME = 2000;
 
+SceneList* g_sceneList = SceneList::getInstance();
+RCSRemoteResourceObject::Ptr pListResource = nullptr;
+RemoteSceneList::Ptr pSceneList = nullptr;
+RemoteSceneCollection::Ptr pSceneCollection = nullptr;
+RemoteScene::Ptr pScene = nullptr;
+
+void discoverSceneListServer()
+{
+    if(pListResource == nullptr)
+    {
+        std::vector< std::string > vecRT{ SCENE_LIST_RT };
+        std::vector< std::string > vecIF{ OC_RSRVD_INTERFACE_DEFAULT, OC::BATCH_INTERFACE };
+
+        pListResource = SceneUtils::createRCSResourceObject(
+                            "coap://" + SceneUtils::getNetAddress() + SCENE_LIST_URI,
+                            SCENE_CONNECTIVITY, vecRT, vecIF);
+    }
+}
+
 class RemoteSceneCollectionTest : public TestWithMock
 {
 protected:
@@ -43,24 +64,15 @@ protected:
     {
         TestWithMock::SetUp();
 
-        SceneList::getInstance()->getName();
-        createListServer();
-
-        RemoteSceneList::createInstance(pListResource, std::bind(
-            &RemoteSceneCollectionTest::onRemoteSceneListCreated, this,
-            placeholders::_1, placeholders::_2));
+        g_sceneList->getName();
+        discoverSceneListServer();
 
-        waitForCallback();
-    }
-
-    void createListServer()
-    {
-        std::vector< std::string > vecRT{ SCENE_LIST_RT };
-        std::vector< std::string > vecIF{ OC_RSRVD_INTERFACE_DEFAULT, OC::BATCH_INTERFACE };
-
-        pListResource = SceneUtils::createRCSResourceObject(
-            "coap://" + SceneUtils::getNetAddress() + SCENE_LIST_URI,
-            SCENE_CONNECTIVITY, vecRT, vecIF);
+        if(pSceneList == nullptr){
+            RemoteSceneList::createInstance(pListResource, std::bind(
+                &RemoteSceneCollectionTest::onRemoteSceneListCreated, this,
+                placeholders::_1, placeholders::_2));
+            waitForCallback();
+        }
     }
 
     void waitForCallback(int waitingTime = DEFAULT_WAITTIME)
@@ -70,9 +82,6 @@ protected:
     }
 
 public:
-    RCSRemoteResourceObject::Ptr pListResource;
-    RemoteSceneList::Ptr pSceneList;
-    RemoteSceneCollection::Ptr pSceneCollection;
     std::condition_variable cond;
     std::mutex mutex;
 
@@ -88,8 +97,9 @@ public:
         cond.notify_all();
     }
 
-    void onRemoteSceneCreated(RemoteScene::Ptr, int)
+    void onRemoteSceneCreated(RemoteScene::Ptr remoteScene, int)
     {
+        pScene = remoteScene;
         cond.notify_all();
     }
 
@@ -101,17 +111,21 @@ public:
 
 TEST_F(RemoteSceneCollectionTest, addNewRemoteSceneCollection)
 {
-    pSceneList->addNewSceneCollection(std::bind(
-        &RemoteSceneCollectionTest::onRemoteSceneCollectionCreated, this,
-        placeholders::_1, placeholders::_2));
-
-    waitForCallback();
-
-    pSceneCollection->addNewScene("Default", std::bind(
-        &RemoteSceneCollectionTest::onRemoteSceneCreated, this,
-        placeholders::_1, placeholders::_2));
+    if(pSceneCollection == nullptr)
+    {
+        pSceneList->addNewSceneCollection(std::bind(
+            &RemoteSceneCollectionTest::onRemoteSceneCollectionCreated, this,
+            placeholders::_1, placeholders::_2));
+        waitForCallback();
+    }
 
-    waitForCallback();
+    if(pScene == nullptr)
+    {
+        pSceneCollection->addNewScene("Default", std::bind(
+            &RemoteSceneCollectionTest::onRemoteSceneCreated, this,
+            placeholders::_1, placeholders::_2));
+        waitForCallback();
+    }
 
     EXPECT_NE(nullptr, pSceneCollection);
 }
@@ -144,17 +158,21 @@ TEST_F(RemoteSceneCollectionTest, getRemoteSceneCollectionList)
 
 TEST_F(RemoteSceneCollectionTest, setAndGetSceneCollectionName)
 {
-    pSceneList->addNewSceneCollection(std::bind(
-        &RemoteSceneCollectionTest::onRemoteSceneCollectionCreated, this,
-        placeholders::_1, placeholders::_2));
-
-    waitForCallback();
-
-    pSceneCollection->addNewScene("Default", std::bind(
-        &RemoteSceneCollectionTest::onRemoteSceneCreated, this,
-        placeholders::_1, placeholders::_2));
+    if(pSceneCollection == nullptr)
+    {
+        pSceneList->addNewSceneCollection(std::bind(
+            &RemoteSceneCollectionTest::onRemoteSceneCollectionCreated, this,
+            placeholders::_1, placeholders::_2));
+        waitForCallback();
+    }
 
-    waitForCallback();
+    if(pScene == nullptr)
+    {
+        pSceneCollection->addNewScene("Default", std::bind(
+            &RemoteSceneCollectionTest::onRemoteSceneCreated, this,
+            placeholders::_1, placeholders::_2));
+        waitForCallback();
+    }
 
     pSceneCollection->setName("Kitchen", std::bind(
         &RemoteSceneCollectionTest::onSetName, this, placeholders::_1));