Refine RequestHandler in RE.
authorcoderhyme <jhyo.kim@samsung.com>
Mon, 29 Feb 2016 00:24:36 +0000 (16:24 -0800)
committerJungHo Kim <jhyo.kim@samsung.com>
Mon, 29 Feb 2016 06:53:46 +0000 (06:53 +0000)
Eliminate useless codes and add unittests.

Change-Id: I95ca4493b0d2ea3d121503336bb6bf94c484fe89
Signed-off-by: coderhyme <jhyo.kim@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/5241
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Uze Choi <uzchoi@samsung.com>
service/resource-encapsulation/android/service/src/main/jni/Android.mk
service/resource-encapsulation/src/serverBuilder/include/RequestHandler.h
service/resource-encapsulation/src/serverBuilder/src/RequestHandler.cpp
service/resource-encapsulation/src/serverBuilder/unittests/RequestHandlerTest.cpp

index 01d8daf..9ab9118 100644 (file)
@@ -23,6 +23,7 @@ OIC_SRC_DIR := ../../../../../..
 LOCAL_MODULE := rcs_jni
 
 LOCAL_C_INCLUDES := $(LOCAL_PATH)/util
+LOCAL_C_INCLUDES += $(OIC_SRC_DIR)/resource/include
 LOCAL_C_INCLUDES += $(OIC_SRC_DIR)/resource/c_common
 LOCAL_C_INCLUDES += $(OIC_SRC_DIR)/resource/csdk/stack/include
 LOCAL_C_INCLUDES += $(OIC_SRC_DIR)/extlibs/boost/boost_1_58_0
index 41a7285..6e0f2b6 100644 (file)
 #include "RCSResponse.h"
 #include "RCSResourceAttributes.h"
 
-namespace OC
-{
-    class OCRepresentation;
-}
+#include "OCRepresentation.h"
 
 namespace OIC
 {
@@ -38,11 +35,7 @@ namespace OIC
 
         class RequestHandler
         {
-        private:
-            typedef std::function< OC::OCRepresentation() > RepresentationBuilder;
-
         public:
-
             RequestHandler();
 
             RequestHandler(const RequestHandler&) = delete;
@@ -67,7 +60,8 @@ namespace OIC
 
         private:
             const int m_errorCode;
-            const RepresentationBuilder m_repBuilder;
+            const bool m_customRep;
+            const OC::OCRepresentation m_ocRep;
         };
 
         class SetRequestHandler: public RequestHandler
@@ -77,8 +71,6 @@ namespace OIC
             typedef std::vector< AttrKeyValuePair > AttrKeyValuePairs;
 
         public:
-            typedef std::shared_ptr< SetRequestHandler > Ptr;
-
             SetRequestHandler(const SetRequestHandler&) = delete;
             SetRequestHandler(SetRequestHandler&&) = default;
 
index e7e41a2..04967dc 100644 (file)
 //
 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
-#include <RequestHandler.h>
+#include "RequestHandler.h"
 
-#include <OCResourceResponse.h>
-#include <ResourceAttributesConverter.h>
-#include <RCSResourceObject.h>
-#include <ResourceAttributesUtils.h>
-
-#include <octypes.h>
+#include "ResourceAttributesConverter.h"
+#include "RCSResourceObject.h"
+#include "ResourceAttributesUtils.h"
 
 namespace
 {
@@ -87,27 +84,30 @@ namespace OIC
 
         RequestHandler::RequestHandler() :
                 m_errorCode{ DEFAULT_ERROR_CODE },
-                m_repBuilder{ }
+                m_customRep{ false },
+                m_ocRep{ }
         {
         }
 
         RequestHandler::RequestHandler(int errorCode) :
                 m_errorCode{ errorCode },
-                m_repBuilder{ }
+                m_customRep{ false },
+                m_ocRep{ }
 
         {
         }
 
         RequestHandler::RequestHandler(const RCSResourceAttributes& attrs, int errorCode) :
                 m_errorCode{ errorCode },
-                m_repBuilder{ std::bind(ResourceAttributesConverter::toOCRepresentation, attrs) }
+                m_customRep{ true },
+                m_ocRep{ ResourceAttributesConverter::toOCRepresentation(attrs) }
         {
         }
 
         RequestHandler::RequestHandler(RCSResourceAttributes&& attrs, int errorCode) :
                 m_errorCode{ errorCode },
-                m_repBuilder{ std::bind(ResourceAttributesConverter::toOCRepresentation,
-                        std::move(attrs)) }
+                m_customRep{ true },
+                m_ocRep{ ResourceAttributesConverter::toOCRepresentation(std::move(attrs)) }
         {
         }
 
@@ -118,13 +118,12 @@ namespace OIC
 
         bool RequestHandler::hasCustomRepresentation() const
         {
-            return m_repBuilder != nullptr;
+            return m_customRep;
         }
 
         OC::OCRepresentation RequestHandler::getRepresentation() const
         {
-            assert(m_repBuilder);
-            return m_repBuilder();
+            return m_ocRep;
         }
 
         SetRequestHandler::SetRequestHandler() :
index d675634..bc3b53e 100644 (file)
 //
 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
-#include <UnitTestHelper.h>
+#include "UnitTestHelper.h"
 
-#include <RequestHandler.h>
-#include <RCSResourceObject.h>
+#include "RequestHandler.h"
+#include "RCSResourceObject.h"
+#include "ResourceAttributesConverter.h"
 
-#include <OCPlatform.h>
+#include "OCPlatform.h"
 
 using namespace std;
 
@@ -37,12 +38,37 @@ constexpr int NEW_VALUE{ 1 };
 typedef OCStackResult (*RegisterResource)(OCResourceHandle&, std::string&,
         const std::string&, const std::string&, OC::EntityHandler, uint8_t);
 
+TEST(RequestHandlerTest, DefaultHasNoCustomRepresntation)
+{
+    ASSERT_FALSE(RequestHandler().hasCustomRepresentation());
+}
 
-class RequestHandlerTest: public TestWithMock
+TEST(RequestHandlerTest, HasCustomRepresentationIfConstructedWithAttributes)
+{
+    ASSERT_TRUE(RequestHandler(RCSResourceAttributes{ }).hasCustomRepresentation());
+}
+
+TEST(RequestHandlerTest, CustomRepresentationContainsSameAttributesPassedToConstructor)
+{
+    RCSResourceAttributes attrs;
+    attrs[EXISTING] = ORIGIN_VALUE;
+
+    RequestHandler handler(attrs);
+
+    auto converted = ResourceAttributesConverter::fromOCRepresentation(handler.getRepresentation());
+    ASSERT_EQ(attrs, converted);
+}
+
+
+class SetRequestHandlerAcceptanceTest: public TestWithMock
 {
 public:
     RCSResourceObject::Ptr server;
 
+    std::shared_ptr< SetRequestHandler > setRequestHandler;
+
+    RCSResourceAttributes requestAttrs;
+
 protected:
     void SetUp()
     {
@@ -57,20 +83,6 @@ protected:
 
         server->setAutoNotifyPolicy(RCSResourceObject::AutoNotifyPolicy::NEVER);
         server->setAttribute(EXISTING, ORIGIN_VALUE);
-    }
-};
-
-class SetRequestHandlerAcceptanceTest: public RequestHandlerTest
-{
-public:
-    SetRequestHandler::Ptr setRequestHandler;
-
-    RCSResourceAttributes requestAttrs;
-
-protected:
-    void SetUp()
-    {
-        RequestHandlerTest::SetUp();
 
         setRequestHandler = make_shared< SetRequestHandler >();