Improve coverage of test
authorYoungjae Shin <yj99.shin@samsung.com>
Fri, 17 Jul 2020 02:33:20 +0000 (11:33 +0900)
committerYoungjae Shin <yj99.shin@samsung.com>
Fri, 17 Jul 2020 02:34:20 +0000 (11:34 +0900)
Change-Id: I61bf8fea355d87b3380a88a51e07147441b1797a

example/mode/tizen_normalEx2_mode.xml
packaging/modes.spec
plugin/TestPluginAction.cpp
plugin/tizen_test_rule.xml
supervisor/CMakeLists.txt
supervisor/RequestHandler.cpp
tests/modes_test_plugin.cpp

index 6d30f7147d252f460351fa4f8b11ee9bb377b01a..058e7edf588fc66c525944915b6bf92b3535e948 100644 (file)
@@ -3,6 +3,6 @@
   <mode ID="http://tizen.org/mode/example.ex2" name="ex2" type="normal" hidden="true">
     <action ID="1" rule="test.printInt" stopOnErr="true" restrict="lock">PRINT_FOUR</action>
     <action ID="wifiOff" rule="test.printBool" restrict="lock">off</action>
-    <action rule="test.alwaySameValue">test</action>
+    <action rule="test.alwaysSameValue">test</action>
   </mode>
 </tizenModes>
index 863fcaca420916fb2cc27f7ea87a2f4e6e106d9a..244039c303d62814636c5605f4a62d463c4c60b0 100644 (file)
@@ -88,7 +88,7 @@ cp %{SOURCE1001} ./%{name}.manifest
 export CFLAGS+=" -fprofile-arcs -ftest-coverage"
 export CXXFLAGS+=" -fprofile-arcs -ftest-coverage"
 export FFLAGS+=" -fprofile-arcs -ftest-coverage"
-export LDFLAGS+=" -lgcov"
+export LDFLAGS+=" -lgcov -Wl,--dynamic-list-data"
 %endif
 
 MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'`
index 90f7777bb89a1e746718ba0296e62ef4fe3fca26..acb1ee9d3c33464f72ba8ab353690405d7f2ce13 100644 (file)
@@ -104,7 +104,7 @@ int TestPluginAction::set(const std::string &val)
 {
        DBG("TestPlugin::set string (%s, %s)", key.c_str(), val.c_str());
 
-       if ("alwaySameValue" == key) {
+       if ("alwaysSameValue" == key) {
                ERR("key(%s) should not reach here", key.c_str());
                return MODES_ERROR_NOT_SUPPORTED;
        }
index d27fa64bdad9f9abd3fc7b70a79b1a38764081da..8f4101ebc6dde1dc38fa22918f5c0043e405288d 100644 (file)
@@ -72,7 +72,7 @@
       <desc>Call Change callback after value seconds</desc>
       <domain>System</domain>
     </rule>
-    <rule name="test.alwaySameValue" type="string" since="6.0">
+    <rule name="test.alwaysSameValue" type="string" since="6.0">
       <desc>IsCurrentValue() Always returns true</desc>
       <domain>System</domain>
     </rule>
index 03cd03d0e45636e368e642ceb85345a18c36a480..76c590e0d9455f94771ed3d7b73f2fd9af9d2608 100644 (file)
@@ -7,21 +7,15 @@ SET_SOURCE_FILES_PROPERTIES(${CMAKE_SOURCE_DIR}/common/dbus.c
 SET(PKG_MODULES gio-2.0 dlog gio-unix-2.0 libxml-2.0 cynara-client cynara-creds-gdbus cynara-session)
 
 pkg_check_modules(daemon_pkgs REQUIRED ${PKG_MODULES})
-FOREACH(flag ${daemon_pkgs_CFLAGS_OTHER})
-       IF(${flag} MATCHES "\\-D+")
-               ADD_DEFINITIONS(${flag})
-       ENDIF(${flag} MATCHES "\\-D+")
-ENDFOREACH(flag)
 INCLUDE_DIRECTORIES(${daemon_pkgs_INCLUDE_DIRS})
 LINK_DIRECTORIES(${daemon_pkgs_LIBRARY_DIRS})
 
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIE")
-SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIE")
 ADD_DEFINITIONS("-DMDS_SUPERVISOR")
 
 ADD_EXECUTABLE(${DAEMON} ${DAEMON_SRCS})
 ADD_DEPENDENCIES(${DAEMON} GENERATED_DBUS_CODE)
 TARGET_LINK_LIBRARIES(${DAEMON} ${daemon_pkgs_LIBRARIES} dl pthread)
+TARGET_COMPILE_OPTIONS(${DAEMON} PUBLIC ${daemon_pkgs_CFLAGS_OTHER} -fPIE)
 
 CONFIGURE_FILE(${DBUS_INTERFACE}.service.in ${DBUS_INTERFACE}.service @ONLY)
 CONFIGURE_FILE(${DBUS_INTERFACE}.conf.in ${DBUS_INTERFACE}.conf @ONLY)
index 4fba690e835a6542196dc46c0471d4e8a2503bf7..6441a0917ce71c55e09083ce7bbf94c78a0eeec1 100644 (file)
  * limitations under the License.
  */
 #include "RequestHandler.h"
+
+#ifdef TIZEN_TEST_GCOV
+extern "C" {
+#include <gcov.h>
+}
+#endif
 #include "mdss.h"
 #include "ModesEx.h"
 #include "common/dbus_def.h"
 #include "ClientPrivilege.h"
 
 MODES_NAMESPACE_USE;
-#ifdef TIZEN_TEST_GCOV
-extern "C" void __gcov_flush(void);
-#endif
 
 ModeManager *RequestHandler::modeMgr = NULL;
 RuleManager *RequestHandler::ruleMgr = NULL;
index fe146b7ac48c45621d150d7caccff9c9cdcdafc6..db837a549e3ef4ab8a9f3d6757322225cfd37b5c 100644 (file)
@@ -17,6 +17,7 @@
 #include <gtest/gtest.h>
 #include "supervisor/PluginMapper.h"
 #include "supervisor/ModesEx.h"
+#include "ModesPlugin.h"
 
 using namespace std;
 
@@ -27,9 +28,43 @@ public:
 
        bool emptyPluginMap();
        string getpluginDir();
+       void checkTestPlugin(Plugin *plugin);
 
        PluginMapper piMapper;
 };
+
+class TmpPlugin : public Plugin {
+private:
+       int count;
+       struct TmpAction : public PluginAction {
+               int &ref;
+               TmpAction(int &count)
+                       : PluginAction("tmp"), ref(count)
+               {
+                       ref++;
+               }
+               ~TmpAction()
+               {
+                       ref--;
+               }
+       };
+public:
+       TmpPlugin()
+       {
+               count = 0;
+               setName("temp");
+       }
+       ~TmpPlugin() override = default;
+
+       PluginAction* newAction(const std::string &key) override
+       {
+               return new TmpAction(count);
+       }
+       int getCount()
+       {
+               return count;
+       }
+};
 MODES_NAMESPACE_END
 
 MODES_NAMESPACE_USE;
@@ -49,6 +84,35 @@ string TestPluginBroker::getpluginDir()
        return piMapper.pluginDir;
 }
 
+void TestPluginBroker::checkTestPlugin(Plugin *plugin)
+{
+       PluginAction *piAction = plugin->newAction("changeAccuracy");
+       EXPECT_EQ(piAction->set(0), MODES_ERROR_NONE);
+       EXPECT_EQ(piAction->set(false), MODES_ERROR_NOT_SUPPORTED);
+       EXPECT_EQ(piAction->getUndoInfo(), string("changeAccuracy"));
+       EXPECT_EQ(piAction->setUndoInfo("test"), MODES_ERROR_NONE);
+       plugin->deleteAction(piAction);
+
+       piAction = plugin->newAction("printBool");
+       EXPECT_EQ(piAction->set(false), MODES_ERROR_NONE);
+       EXPECT_EQ(piAction->set(3), MODES_ERROR_NOT_SUPPORTED);
+       EXPECT_EQ(piAction->set(3.3), MODES_ERROR_NOT_SUPPORTED);
+       plugin->deleteAction(piAction);
+
+       piAction = plugin->newAction("alwaysSameValue");
+       EXPECT_EQ(piAction->IsCurrentValue(string("Always true")), true);
+       EXPECT_EQ(piAction->set(string("String value")), MODES_ERROR_NOT_SUPPORTED);
+       plugin->deleteAction(piAction);
+
+       piAction = plugin->newAction("exactness");
+       EXPECT_EQ(piAction->set(0), MODES_ERROR_NONE);
+       plugin->deleteAction(piAction);
+
+       piAction = plugin->newAction("nightLight");
+       EXPECT_EQ(piAction->set(0), MODES_ERROR_NONE);
+       plugin->deleteAction(piAction);
+}
+
 TEST(PluginMapper, readLibraryList)
 {
        TestPluginBroker broker;
@@ -85,40 +149,46 @@ TEST(PluginMapper, getPluginTest)
        Plugin *plugin = broker.piMapper.getPlugin("test");
        ASSERT_TRUE(plugin);
 
-       PluginAction *piAction = plugin->newAction("printInt");
-       ret = piAction->set(0);
-       EXPECT_EQ(ret, MODES_ERROR_NONE);
-
-       ret = piAction->set(false);
-       EXPECT_EQ(ret, MODES_ERROR_NOT_SUPPORTED);
-       plugin->deleteAction(piAction);
-
-       piAction = plugin->newAction("printFloat");
-       ret = piAction->set(1.234);
-       EXPECT_EQ(ret, MODES_ERROR_NONE);
-       plugin->deleteAction(piAction);
+       broker.checkTestPlugin(plugin);
 
-       piAction = plugin->newAction("printBool");
-       ret = piAction->set(false);
+       ret = broker.piMapper.unloadPlugins();
        EXPECT_EQ(ret, MODES_ERROR_NONE);
+       EXPECT_TRUE(broker.emptyPluginMap());
+}
 
-       ret = piAction->set(3);
-       EXPECT_EQ(ret, MODES_ERROR_NOT_SUPPORTED);
-       plugin->deleteAction(piAction);
+TEST(PluginMapper, defaultDeleteAction)
+{
+       TmpPlugin plugin;
+       EXPECT_EQ(plugin.getCount(), 0);
 
-       piAction = plugin->newAction("printString");
-       ret = piAction->set(string("String value"));
-       EXPECT_EQ(ret, MODES_ERROR_NONE);
-       plugin->deleteAction(piAction);
+       PluginAction *action = plugin.newAction("test");
+       EXPECT_EQ(plugin.getCount(), 1);
 
-       piAction = plugin->newAction("alwaySameValue");
-       bool same = piAction->IsCurrentValue(string("String value"));
-       EXPECT_EQ(same, true);
-       ret = piAction->set(string("String value"));
-       EXPECT_EQ(ret, MODES_ERROR_NOT_SUPPORTED);
-       plugin->deleteAction(piAction);
+       plugin.deleteAction(action);
+       EXPECT_EQ(plugin.getCount(), 0);
+}
 
-       ret = broker.piMapper.unloadPlugins();
-       EXPECT_EQ(ret, MODES_ERROR_NONE);
-       EXPECT_TRUE(broker.emptyPluginMap());
+TEST(PluginMapper, ActionDefaultMethod)
+{
+       TmpPlugin plugin;
+       PluginAction *action = plugin.newAction("test");
+
+       EXPECT_EQ(action->IsCurrentValue(1), false);
+       EXPECT_EQ(action->IsCurrentValue(1.1), false);
+       EXPECT_EQ(action->IsCurrentValue(true), false);
+       EXPECT_EQ(action->IsCurrentValue(string("test")), false);
+
+       EXPECT_EQ(action->set(1), MODES_ERROR_NOT_SUPPORTED);
+       EXPECT_EQ(action->set(1.1), MODES_ERROR_NOT_SUPPORTED);
+       EXPECT_EQ(action->set(true), MODES_ERROR_NOT_SUPPORTED);
+       EXPECT_EQ(action->set(string("test")), MODES_ERROR_NOT_SUPPORTED);
+
+       EXPECT_EQ(action->getUndoInfo().empty(), true);
+       EXPECT_EQ(action->setUndoInfo("test"), MODES_ERROR_NOT_SUPPORTED);
+       EXPECT_EQ(action->setChangedCallback(nullptr, nullptr), MODES_ERROR_NOT_SUPPORTED);
+
+       action->unSetChangedCallback(nullptr);
+       action->undo();
+       plugin.deleteAction(action);
+       EXPECT_EQ(plugin.getCount(), 0);
 }