Add unittests 37/243737/6
authorJihoon Kim <jihoon48.kim@samsung.com>
Wed, 9 Sep 2020 11:48:29 +0000 (20:48 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Mon, 14 Sep 2020 02:40:31 +0000 (11:40 +0900)
Change-Id: I0706d0bfc8ebd75d63b6149e5885b696a9afcaea
Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
13 files changed:
CMakeLists.txt
client/vc_setting.c
packaging/voice-control.spec
tests/CMakeLists.txt [new file with mode: 0644]
tests/org.tizen.vc-unittests.manifest [new file with mode: 0644]
tests/org.tizen.vc-unittests.xml [new file with mode: 0644]
tests/src/cynara_mock.cpp [new file with mode: 0644]
tests/src/cynara_mock.h [new file with mode: 0644]
tests/src/main.cpp [new file with mode: 0644]
tests/src/system_info_mock.cpp [new file with mode: 0644]
tests/src/system_info_mock.h [new file with mode: 0644]
tests/src/vc_denied_unittests.cpp [new file with mode: 0644]
tests/src/vc_unittests.cpp [new file with mode: 0644]

index b93d8c6e8889685c441e0125f1a0a68f39d726d4..eb9b3f6a5256035fbe6e52f8785fddd936717588 100644 (file)
@@ -48,12 +48,12 @@ INCLUDE(FindPkgConfig)
 IF("${_TV_PRODUCT}" STREQUAL "TRUE")
 pkg_check_modules(pkgs REQUIRED
     aul buxton2 capi-appfw-app-control capi-appfw-app-manager capi-base-common capi-media-audio-io capi-media-sound-manager ecore-wl2
-    capi-network-bluetooth capi-network-bluetooth-tv capi-system-info cynara-client cynara-session dbus-1 db-util dlog ecore glib-2.0 json-glib-1.0 libgum libtzplatform-config libxml-2.0 sqlite3 vconf msfapi farfield-voice-api multi-assistant
+    capi-network-bluetooth capi-network-bluetooth-tv capi-system-info cynara-client cynara-session dbus-1 db-util dlog ecore glib-2.0 json-glib-1.0 libgum libtzplatform-config libxml-2.0 sqlite3 vconf msfapi farfield-voice-api multi-assistant gmock
 )
 ELSE()
 pkg_check_modules(pkgs REQUIRED
     aul buxton2 capi-appfw-app-control capi-appfw-app-manager capi-base-common capi-media-audio-io capi-media-sound-manager ecore-wl2
-    capi-system-info cynara-client cynara-session dbus-1 db-util dlog ecore glib-2.0 json-glib-1.0 libgum libtzplatform-config libxml-2.0 sqlite3 vconf multi-assistant
+    capi-system-info cynara-client cynara-session dbus-1 db-util dlog ecore glib-2.0 json-glib-1.0 libgum libtzplatform-config libxml-2.0 sqlite3 vconf multi-assistant gmock
 )
 ENDIF()
 
@@ -91,3 +91,13 @@ INSTALL(PROGRAMS ${CMAKE_SOURCE_DIR}/bin/aarch64/vc_getengine DESTINATION ${TZ_S
 ELSEIF("${ARCH}" MATCHES "^x86_64.*")
 INSTALL(PROGRAMS ${CMAKE_SOURCE_DIR}/bin/x86_64/vc_getengine DESTINATION ${TZ_SYS_BIN})
 ENDIF()
+
+## Test
+IF(NOT DEFINED MINIMUM_BUILD)
+ENABLE_TESTING()
+SET(UNITTEST_VC vc-unittests)
+ADD_TEST(NAME ${UNITTEST_VC} COMMAND ${UNITTEST_VC}
+                                    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests)
+
+ADD_SUBDIRECTORY(tests)
+ENDIF(NOT DEFINED MINIMUM_BUILD)
index cbba8ad93635e8b4180b6aa02e3a5fc1fc0d2d4d..4a8ca0e880cff2d1295a446117469a71976b61ad 100644 (file)
@@ -45,11 +45,6 @@ static void* g_enabled_changed_user_data = NULL;
 static vc_setting_current_language_changed_cb g_current_language_changed_cb = NULL;
 static void* g_current_language_changed_user_data = NULL;
 
-const char* vc_tag()
-{
-       return TAG_VCS;
-}
-
 void __config_lang_changed_cb(const char* before_lang, const char* current_lang)
 {
        SLOG(LOG_DEBUG, TAG_VCS, "Lang changed : before(%s) current(%s)", before_lang, current_lang);
index 69aa1e191a032ec33a577024615dc5faebdbc0c7..2bdd9e85fb0d708e656b2b9decaead5d774e4d72 100644 (file)
@@ -42,6 +42,12 @@ BuildRequires:  pkgconfig(farfield-voice-api)
 BuildRequires:  pkgconfig(vconf)
 BuildRequires:  pkgconfig(multi-assistant)
 BuildRequires:  cmake
+BuildRequires:  pkgconfig(gmock)
+
+%if 0%{?gcov:1}
+BuildRequires:  lcov
+BuildRequires:  zip
+%endif
 
 %description
 Voice Control client library and daemon
@@ -99,6 +105,14 @@ Group:              Graphics & UI Framework/Voice Framework
 Voice control gcov objects
 %endif
 
+%package unittests
+Summary:    Voice control tests
+Group:      Development/Libraries
+Requires:   %{name} = %{version}-%{release}
+
+%description unittests
+GTest for Voice Control
+
 
 %prep
 %setup -q -n %{name}-%{version}
@@ -116,10 +130,10 @@ export LDFLAGS="$LDFLAGS -lgcov"
 %if "%{tizen_profile_name}" == "tv"
 export CFLAGS="$CFLAGS -DTV_PRODUCT"
 cmake . -DCMAKE_INSTALL_PREFIX=/usr -DLIBDIR=%{_libdir} -DBINDIR=%{_bindir} -DINCLUDEDIR=%{_includedir} \
-        -DTZ_SYS_RO_SHARE=%TZ_SYS_RO_SHARE -D_TV_PRODUCT=TRUE -DTZ_SYS_BIN=%TZ_SYS_BIN
+        -DTZ_SYS_RO_SHARE=%TZ_SYS_RO_SHARE -D_TV_PRODUCT=TRUE -DTZ_SYS_BIN=%TZ_SYS_BIN -DTZ_SYS_RO_PACKAGES=%TZ_SYS_RO_PACKAGES -DTZ_SYS_RO_APP=%TZ_SYS_RO_APP
 %else
 cmake . -DCMAKE_INSTALL_PREFIX=/usr -DLIBDIR=%{_libdir} -DBINDIR=%{_bindir} -DINCLUDEDIR=%{_includedir} \
-        -DTZ_SYS_RO_SHARE=%TZ_SYS_RO_SHARE -DTZ_SYS_BIN=%TZ_SYS_BIN
+        -DTZ_SYS_RO_SHARE=%TZ_SYS_RO_SHARE -DTZ_SYS_BIN=%TZ_SYS_BIN -DTZ_SYS_RO_PACKAGES=%TZ_SYS_RO_PACKAGES -DTZ_SYS_RO_APP=%TZ_SYS_RO_APP
 %endif
 make %{?jobs:-j%jobs}
 
@@ -225,3 +239,9 @@ mkdir -p %{_libdir}/voice/vc
 %files gcov
 %{_datadir}/gcov/obj/*
 %endif
+
+%files unittests
+%manifest tests/org.tizen.vc-unittests.manifest
+%defattr(-,root,root,-)
+%{TZ_SYS_RO_PACKAGES}/org.tizen.vc-unittests.xml
+%{TZ_SYS_RO_APP}/org.tizen.vc-unittests/bin/vc-unittests
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
new file mode 100644 (file)
index 0000000..ec00560
--- /dev/null
@@ -0,0 +1,46 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(gtest-voice-control CXX)
+
+SET(PKGNAME "org.tizen.vc-unittests")
+SET(BINDIR "${TZ_SYS_RO_APP}/${PKGNAME}/bin")
+
+FOREACH(flag ${pkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden -Wall -Werror")
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fPIE")
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -Werror")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -std=c++11")
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS}")
+
+SET(SOURCES "")
+
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../include)
+
+AUX_SOURCE_DIRECTORY(src SOURCES)
+AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/../client VC_CLIENT_SOURCES)
+AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/../common VC_COMMON_SOURCES)
+
+ADD_DEFINITIONS("-DFULLVER=\"${FULLVER}\"")
+
+ADD_EXECUTABLE(${UNITTEST_VC}
+       ${VC_COMMON_SOURCES}
+       ${VC_CLIENT_SOURCES}
+       ${SOURCES}
+       )
+TARGET_LINK_LIBRARIES(${UNITTEST_VC} ${GTEST_LIBRARIES} ${pkgs_LDFLAGS} ${EXTRA_LDFLAGS})
+SET_TARGET_PROPERTIES(${UNITTEST_VC} PROPERTIES
+       COMPILE_FLAGS "-fPIE"
+       #Never add any space for LINKFLAGS
+       LINK_FLAGS "-Wl,\
+--wrap=system_info_get_platform_bool,\
+--wrap=cynara_initialize,\
+--wrap=cynara_finish,\
+--wrap=cynara_session_from_pid,\
+--wrap=cynara_check")
+
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/tests/${PKGNAME}.xml DESTINATION ${TZ_SYS_RO_PACKAGES})
+INSTALL(TARGETS ${UNITTEST_VC} DESTINATION ${BINDIR})
diff --git a/tests/org.tizen.vc-unittests.manifest b/tests/org.tizen.vc-unittests.manifest
new file mode 100644 (file)
index 0000000..97e8c31
--- /dev/null
@@ -0,0 +1,5 @@
+<manifest>
+       <request>
+               <domain name="_"/>
+       </request>
+</manifest>
diff --git a/tests/org.tizen.vc-unittests.xml b/tests/org.tizen.vc-unittests.xml
new file mode 100644 (file)
index 0000000..663ba43
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="3.0" package="org.tizen.vc-unittests" version="0.6.2" install-location="internal-only">
+        <label>Voice Control unittests</label>
+        <author email="jihoon48.kim" href="www.samsung.com">Jihoon Kim</author>
+        <description>Voice Control unittests</description>
+        <service-application appid="org.tizen.vc-unittests" launch_mode="caller" exec="vc-unittests" hw-acceleration="use-GL" nodisplay="true" multiple="false" type="capp" taskmanage="false">
+            <label>Voice Control unittests</label>
+            <background-category value="media"/>
+        </service-application>
+        <privileges>
+            <privilege>http://tizen.org/privilege/recorder</privilege>
+        </privileges>
+</manifest>
diff --git a/tests/src/cynara_mock.cpp b/tests/src/cynara_mock.cpp
new file mode 100644 (file)
index 0000000..ff6e88f
--- /dev/null
@@ -0,0 +1,34 @@
+#include "cynara_mock.h"
+#include <string.h>
+#include <stdio.h>
+#include <tizen.h>
+
+static int check_result = CYNARA_API_ACCESS_ALLOWED;
+
+void cynara_check_set_result(int result)
+{
+    check_result = result;
+}
+
+EXPORT_API int __wrap_cynara_initialize(cynara** c, const cynara_configuration* conf)
+{
+    *c = (void *)0x1;
+    return 0;
+}
+
+EXPORT_API int __wrap_cynara_finish(cynara* c)
+{
+    return 0;
+}
+
+EXPORT_API int __wrap_cynara_check(cynara* c, const char* client, const char* client_session,
+    const char* user,
+    const char* privilege)
+{
+    return check_result;
+}
+
+EXPORT_API char *__wrap_cynara_session_from_pid(pid_t pid)
+{
+    return strdup("session");
+}
diff --git a/tests/src/cynara_mock.h b/tests/src/cynara_mock.h
new file mode 100644 (file)
index 0000000..1becb42
--- /dev/null
@@ -0,0 +1,87 @@
+#ifndef MOCK_CYNARA_H_
+#define MOCK_CYNARA_H_
+
+#include <sys/types.h>
+#include <unistd.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef void cynara;
+typedef void* cynara_configuration;
+
+/*! \brief  indicating that API call was interrupted by user*/
+#define CYNARA_API_INTERRUPTED                  4
+
+/*! \brief  indicating access that cannot be resolved without further actions*/
+#define CYNARA_API_ACCESS_NOT_RESOLVED          3
+
+/*! \brief   indicating access that was checked is allowed */
+#define CYNARA_API_ACCESS_ALLOWED               2
+
+/*! \brief   indicating that access that was checked is denied */
+#define CYNARA_API_ACCESS_DENIED                1
+
+/*! \brief   indicating the result of the one specific API is successful */
+#define CYNARA_API_SUCCESS                      0
+
+/*! \brief   indicating that value is not present in cache */
+#define CYNARA_API_CACHE_MISS                   -1
+
+/*! \brief   indicating that pending requests reached maximum */
+#define CYNARA_API_MAX_PENDING_REQUESTS         -2
+
+/*! \brief   indicating system is running out of memory state */
+#define CYNARA_API_OUT_OF_MEMORY                -3
+
+/*! \brief   indicating the API's parameter is malformed */
+#define CYNARA_API_INVALID_PARAM                -4
+
+/*! \brief   indicating that service is not available */
+#define CYNARA_API_SERVICE_NOT_AVAILABLE        -5
+
+/*! \brief   indicating that provided method is not supported by library */
+#define CYNARA_API_METHOD_NOT_SUPPORTED         -6
+
+/*! \brief   cynara service does not allow to perform requested operation */
+#define CYNARA_API_OPERATION_NOT_ALLOWED        -7
+
+/*! \brief   cynara service failed to perform requested operation */
+#define CYNARA_API_OPERATION_FAILED             -8
+
+/*! \brief   cynara service hasn't found requested bucket */
+#define CYNARA_API_BUCKET_NOT_FOUND             -9
+
+/*! \brief   indicating an unknown error */
+#define CYNARA_API_UNKNOWN_ERROR                -10
+
+/*! \brief   indicating configuration error */
+#define CYNARA_API_CONFIGURATION_ERROR          -11
+
+/*! \brief   indicating invalid parameter in command-line */
+#define CYNARA_API_INVALID_COMMANDLINE_PARAM    -12
+
+/*! \brief   indicating that provided buffer is too short */
+#define CYNARA_API_BUFFER_TOO_SHORT             -13
+
+/*! \brief   indicating that database is corrupted */
+#define CYNARA_API_DATABASE_CORRUPTED           -14
+
+/*! \brief   indicating that user doesn't have enough permission to perform action */
+#define CYNARA_API_PERMISSION_DENIED            -15
+
+void cynara_check_set_result(int result);
+
+int __wrap_cynara_initialize(cynara** c, const cynara_configuration* conf);
+int __wrap_cynara_finish(cynara* c);
+int __wrap_cynara_check(cynara* c, const char* client, const char* client_session,
+                        const char* user,
+                        const char* privilege);
+
+char *__wrap_cynara_session_from_pid(pid_t pid);
+
+#ifdef __cplusplus
+}
+#endif
+#endif  /* MOCK_CYNARA_H_ */
diff --git a/tests/src/main.cpp b/tests/src/main.cpp
new file mode 100644 (file)
index 0000000..a37d671
--- /dev/null
@@ -0,0 +1,7 @@
+#include <gtest/gtest.h>
+#include <gmock/gmock.h>
+
+int main(int argc, char** argv) {
+    testing::InitGoogleTest(&argc, argv);
+    return RUN_ALL_TESTS();
+}
diff --git a/tests/src/system_info_mock.cpp b/tests/src/system_info_mock.cpp
new file mode 100644 (file)
index 0000000..0e00a70
--- /dev/null
@@ -0,0 +1,11 @@
+#include "system_info_mock.h"
+#include <stdio.h>
+#include <tizen.h>
+
+EXPORT_API int __wrap_system_info_get_platform_bool(const char *key, bool *value)
+{
+    if (value)
+        *value = true;
+
+    return 0;
+}
diff --git a/tests/src/system_info_mock.h b/tests/src/system_info_mock.h
new file mode 100644 (file)
index 0000000..075c93b
--- /dev/null
@@ -0,0 +1,16 @@
+#ifndef MOCK_SYSTEM_INFO_H_
+#define MOCK_SYSTEM_INFO_H_
+
+#include <sys/types.h>
+#include <unistd.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int __wrap_system_info_get_platform_bool(const char *key, bool *value);
+
+#ifdef __cplusplus
+}
+#endif
+#endif  /* MOCK_SYSTEM_INFO_H_ */
diff --git a/tests/src/vc_denied_unittests.cpp b/tests/src/vc_denied_unittests.cpp
new file mode 100644 (file)
index 0000000..c133af6
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <gtest/gtest.h>
+#include <voice_control.h>
+
+#include "cynara_mock.h"
+#include "system_info_mock.h"
+
+namespace {
+
+class VCDeniedTest : public testing::Test {
+    public:
+        virtual void SetUp() {
+            /* start of TC */
+            cynara_check_set_result(CYNARA_API_ACCESS_DENIED);
+        }
+        virtual void TearDown() {
+            /* end of TC */
+            cynara_check_set_result(CYNARA_API_ACCESS_ALLOWED);
+        }
+};
+
+TEST_F(VCDeniedTest, utc_stt_create_denied)
+{
+    int ret = VC_ERROR_NONE;
+
+    ret = vc_initialize();
+    EXPECT_EQ(ret, VC_ERROR_PERMISSION_DENIED);
+}
+
+} // namespace
diff --git a/tests/src/vc_unittests.cpp b/tests/src/vc_unittests.cpp
new file mode 100644 (file)
index 0000000..531f36f
--- /dev/null
@@ -0,0 +1,3170 @@
+/*
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <gtest/gtest.h>
+#include <Ecore.h>
+#include <system_info.h>
+
+#include <voice_control.h>
+#include "system_info_mock.h"
+#include "cynara_mock.h"
+
+static int g_vc_init = false;
+static vc_state_e g_vc_state = VC_STATE_NONE;
+static bool g_vc_supported = false;
+
+static void __vc_result_cb(vc_result_event_e event, vc_cmd_list_h vc_cmd_list, const char* result, void* user_data)
+{
+}
+
+static void __vc_current_language_changed_cb(const char* previous, const char* current, void* user_data)
+{
+}
+
+static bool __vc_supported_language_cb(const char* language, void* user_data)
+{
+       return true;
+}
+
+static void __vc_state_changed_cb(vc_state_e previous, vc_state_e current, void* user_data)
+{
+       g_vc_state = current;
+}
+
+static void __vc_service_state_changed_cb(vc_service_state_e previous, vc_service_state_e current, void* user_data)
+{
+}
+
+static void __vc_error_cb(vc_error_e reason, void* user_data)
+{
+}
+
+static bool __vc_cmd_list_cb(vc_cmd_h vc_command, void* user_data)
+{
+       return true;
+}
+
+namespace {
+
+class VCTest : public testing::Test {
+    public:
+        virtual void SetUp() {
+                       ecore_init();
+                       ecore_main_loop_glib_integrate();
+
+                       cynara_check_set_result(CYNARA_API_ACCESS_ALLOWED);
+
+                       g_vc_supported = false;
+                       bool mic_supported = false;
+                       bool vc_supported = false;
+                       if (0 == system_info_get_platform_bool("http://tizen.org/feature/speech.control", &vc_supported))
+                       {
+                               if (0 == system_info_get_platform_bool("http://tizen.org/feature/microphone", &mic_supported))
+                               {
+                                       if (true == vc_supported && true == mic_supported)
+                                       {
+                                               g_vc_supported = true;
+                                       }
+                               }
+                       }
+
+                       g_vc_init = false;
+                       if (true == g_vc_supported)
+                       {
+                               int ret = VC_ERROR_NONE;
+                               ret = vc_initialize();
+                               if (VC_ERROR_NONE == ret)
+                               {
+                                       ret = vc_set_state_changed_cb(__vc_state_changed_cb, NULL);
+                                       if (VC_ERROR_NONE != ret)
+                                       {
+                                               g_vc_init = false;
+                                       }
+                                       else
+                                       {
+                                               g_vc_init = true;
+                                       }
+                               }
+                               else
+                               {
+                                       g_vc_init = false;
+                               }
+                       }
+               }
+
+               virtual void TearDown()
+               {
+                       if (true == g_vc_supported)
+                       {
+                               vc_unset_state_changed_cb();
+
+                               vc_deinitialize();
+                       }
+
+                       g_vc_init = false;
+
+                       ecore_shutdown();
+               }
+};
+
+TEST_F(VCTest, utc_vc_initialize_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+       }
+}
+
+/**
+ * @testcase           utc_vc_deinitialize_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for deinitialize voice control handle
+ */
+TEST_F(VCTest, vc_deinitialize_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_deinitialize();
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_deinitialize();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_deinitialize_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for deinitialize voice control handle (Already deinitialized)
+ */
+TEST_F(VCTest, vc_deinitialize_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_deinitialize();
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_deinitialize();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_deinitialize();
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_prepare_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for connect service daemon
+ */
+TEST_F(VCTest, vc_prepare_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_prepare();
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_prepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               while (VC_STATE_READY != g_vc_state) {
+                       ecore_main_loop_iterate();
+               }
+
+               ret = vc_unprepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_prepare_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for connect service daemon (Invalid state)
+ */
+TEST_F(VCTest, vc_prepare_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_prepare();
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               vc_deinitialize();
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_prepare();
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_unprepare_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for disconnect service daemon
+ */
+TEST_F(VCTest, vc_unprepare_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_unprepare();
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_prepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               while (VC_STATE_READY != g_vc_state) {
+                       ecore_main_loop_iterate();
+               }
+
+               ret = vc_unprepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_unprepare_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for disconnect service daemon (Invalid state)
+ */
+TEST_F(VCTest, vc_unprepare_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_unprepare();
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_unprepare();
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_unprepare_n2
+ * @since_tizen                2.4
+ * @description                Negative UTC for disconnect service daemon (Invalid state)
+ */
+TEST_F(VCTest, vc_unprepare_n2)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_unprepare();
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_deinitialize();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_unprepare();
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_foreach_supported_languages_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for get supported language list
+ */
+TEST_F(VCTest, vc_foreach_supported_languages_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_foreach_supported_languages(__vc_supported_language_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_foreach_supported_languages(__vc_supported_language_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_foreach_supported_languages_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for get supported language list (Invalid parameter)
+ */
+TEST_F(VCTest, vc_foreach_supported_languages_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_foreach_supported_languages(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_foreach_supported_languages(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_foreach_supported_languages_n2
+ * @since_tizen                2.4
+ * @description                Negative UTC for get supported language list (Invalid state)
+ */
+TEST_F(VCTest, vc_foreach_supported_languages_n2)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_foreach_supported_languages(__vc_supported_language_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_deinitialize();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_foreach_supported_languages(__vc_supported_language_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_get_current_language_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for get current language
+ */
+TEST_F(VCTest, vc_get_current_language_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               char *lang = NULL;
+               ret = vc_get_current_language(&lang);
+               if (NULL != lang) {
+                               free(lang);
+                               lang = NULL;
+               }
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               char *lang = NULL;
+               ret = vc_get_current_language(&lang);
+               if (NULL != lang) {
+                               free(lang);
+                               lang = NULL;
+               }
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_get_current_language_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for get current language (Invalid parameter)
+ */
+TEST_F(VCTest, vc_get_current_language_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_get_current_language(NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_get_current_language(NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_get_current_language_n2
+ * @since_tizen                2.4
+ * @description                Negative UTC for get current language (Invalid state)
+ */
+TEST_F(VCTest, vc_get_current_language_n2)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               char *lang = NULL;
+               ret = vc_get_current_language(&lang);
+               if (NULL != lang) {
+                               free(lang);
+                               lang = NULL;
+               }
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               char *lang = NULL;
+               ret = vc_deinitialize();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_get_current_language(&lang);
+               if (NULL != lang) {
+                               free(lang);
+                               lang = NULL;
+               }
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_get_state_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for get current state
+ */
+TEST_F(VCTest, vc_get_state_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_state_e state = VC_STATE_NONE;
+               ret = vc_get_state(&state);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               vc_state_e state = VC_STATE_NONE;
+               ret = vc_get_state(&state);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_get_state_p2
+ * @since_tizen                2.4
+ * @description                Positive UTC for get current state after connection
+ */
+TEST_F(VCTest, vc_get_state_p2)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_state_e state = VC_STATE_NONE;
+               ret = vc_get_state(&state);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_prepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               while (VC_STATE_READY != g_vc_state) {
+                       ecore_main_loop_iterate();
+               }
+
+               vc_state_e state = VC_STATE_NONE;
+               ret = vc_get_state(&state);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_unprepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_get_state_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for get current state (Invalid parameter)
+ */
+TEST_F(VCTest, vc_get_state_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_get_state(NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_get_state(NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_get_state_n2
+ * @since_tizen                2.4
+ * @description                Negative UTC for get current state (Invalid state)
+ */
+TEST_F(VCTest, vc_get_state_n2)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_state_e state = VC_STATE_NONE;
+               ret = vc_get_state(&state);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_deinitialize();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_state_e state = VC_STATE_NONE;
+               ret = vc_get_state(&state);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_get_service_state_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for get current state of service daemon
+ */
+TEST_F(VCTest, vc_get_service_state_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_service_state_e state = VC_SERVICE_STATE_NONE;
+               ret = vc_get_service_state(&state);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_prepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               while (VC_STATE_READY != g_vc_state) {
+                       ecore_main_loop_iterate();
+               }
+
+               vc_service_state_e state = VC_SERVICE_STATE_NONE;
+               ret = vc_get_service_state(&state);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_unprepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_get_service_state_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for get current state of service daemon (Invalid parameter)
+ */
+TEST_F(VCTest, vc_get_service_state_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_get_service_state(NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_get_service_state(NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_get_service_state_n2
+ * @since_tizen                2.4
+ * @description                Negative UTC for get current state of service daemon (Invalid state)
+ */
+TEST_F(VCTest, vc_get_service_state_n2)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_service_state_e state = VC_SERVICE_STATE_NONE;
+               ret = vc_get_service_state(&state);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_deinitialize();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_service_state_e state = VC_SERVICE_STATE_NONE;
+               ret = vc_get_service_state(&state);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_get_system_command_list_p
+ * @since_tizen                3.0
+ * @description                Positive UTC for get the system command list
+ */
+TEST_F(VCTest, vc_get_system_command_list_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               ret = vc_get_system_command_list(&list);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_prepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               while (VC_STATE_READY != g_vc_state) {
+                       ecore_main_loop_iterate();
+               }
+
+               vc_cmd_list_h list = NULL;
+               ret = vc_get_system_command_list(&list);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_unprepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_get_system_command_list_n
+ * @since_tizen                3.0
+ * @description                Negative UTC for get the system command list (Invalid parameter)
+ */
+TEST_F(VCTest, vc_get_system_command_list_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_get_system_command_list(NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_get_system_command_list(NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_get_system_command_list_n2
+ * @since_tizen                3.0
+ * @description                Negative UTC for get the system command list (Invalid state)
+ */
+TEST_F(VCTest, vc_get_system_command_list_n2)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               ret = vc_get_system_command_list(&list);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_deinitialize();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_list_h list = NULL;
+               ret = vc_get_system_command_list(&list);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_set_command_list_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for set command list used as candidate set
+ */
+TEST_F(VCTest, vc_set_command_list_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               ret = vc_set_command_list(list, VC_COMMAND_TYPE_BACKGROUND);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_prepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               while (VC_STATE_READY != g_vc_state) {
+                       ecore_main_loop_iterate();
+               }
+
+               vc_cmd_list_h list = NULL;
+               ret = vc_cmd_list_create(&list);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_h cmd = NULL;
+               ret = vc_cmd_create(&cmd);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_set_command(cmd, "voice");
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_set_type(cmd, VC_COMMAND_TYPE_BACKGROUND);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_list_add(list, cmd);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_set_command_list(list, VC_COMMAND_TYPE_BACKGROUND);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_list_destroy(list, true);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_unprepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_set_command_list_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for set command list used as candidate set (Invalid parameter)
+ */
+TEST_F(VCTest, vc_set_command_list_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_command_list(NULL, VC_COMMAND_TYPE_BACKGROUND);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_command_list(NULL, VC_COMMAND_TYPE_BACKGROUND);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_set_command_list_n2
+ * @since_tizen                2.4
+ * @description                Negative UTC for set command list used as candidate set (Invalid state)
+ */
+TEST_F(VCTest, vc_set_command_list_n2)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               ret = vc_set_command_list(list, VC_COMMAND_TYPE_BACKGROUND);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_deinitialize();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_list_h list = NULL;
+               ret = vc_cmd_list_create(&list);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_set_command_list(list, VC_COMMAND_TYPE_BACKGROUND);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+
+               ret = vc_cmd_list_destroy(list, true);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_set_command_list_n3
+ * @since_tizen                2.4
+ * @description                Negative UTC for set command list used as candidate set (Invalid state)
+ */
+TEST_F(VCTest, vc_set_command_list_n3)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               ret = vc_set_command_list(list, VC_COMMAND_TYPE_BACKGROUND);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               ret = vc_cmd_list_create(&list);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_set_command_list(list, VC_COMMAND_TYPE_BACKGROUND);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+
+               ret = vc_cmd_list_destroy(list, true);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_unset_command_list_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for unset command list used as candidate set
+ */
+TEST_F(VCTest, vc_unset_command_list_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_unset_command_list(VC_COMMAND_TYPE_BACKGROUND);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_prepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               while (VC_STATE_READY != g_vc_state) {
+                       ecore_main_loop_iterate();
+               }
+
+               vc_cmd_list_h list = NULL;
+               ret = vc_cmd_list_create(&list);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_h cmd = NULL;
+               ret = vc_cmd_create(&cmd);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_set_command(cmd, "voice");
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_set_type(cmd, VC_COMMAND_TYPE_BACKGROUND);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_list_add(list, cmd);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_set_command_list(list, VC_COMMAND_TYPE_BACKGROUND);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_unset_command_list(VC_COMMAND_TYPE_BACKGROUND);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_list_destroy(list, true);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_unprepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_unset_command_list_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for unset command list used as candidate set (Invalid state)
+ */
+TEST_F(VCTest, vc_unset_command_list_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_unset_command_list(VC_COMMAND_TYPE_BACKGROUND);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_unset_command_list(VC_COMMAND_TYPE_BACKGROUND);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_unset_command_list_n2
+ * @since_tizen                2.4
+ * @description                Negative UTC for unset command list used as candidate set (Invalid state)
+ */
+TEST_F(VCTest, vc_unset_command_list_n2)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_unset_command_list(VC_COMMAND_TYPE_BACKGROUND);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_deinitialize();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_unset_command_list(VC_COMMAND_TYPE_BACKGROUND);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_get_result_p
+ * @since_tizen                3.0
+ * @description                Positive UTC for getting the recognition result
+ */
+TEST_F(VCTest, vc_get_result_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_get_result(__vc_result_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_prepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               while (VC_STATE_READY != g_vc_state) {
+                       ecore_main_loop_iterate();
+               }
+
+               ret = vc_get_result(__vc_result_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_unprepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_get_result_n
+ * @since_tizen                3.0
+ * @description                Negative UTC for getting the recognition result (Invalid parameter)
+ */
+TEST_F(VCTest, vc_get_result_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_get_result(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_prepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               while (VC_STATE_READY != g_vc_state) {
+                       ecore_main_loop_iterate();
+               }
+
+               ret = vc_get_result(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+
+               ret = vc_unprepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_set_result_cb_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for set result callback
+ */
+TEST_F(VCTest, vc_set_result_cb_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_result_cb(__vc_result_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_result_cb(__vc_result_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_set_result_cb_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for set result callback (Invalid parameter)
+ */
+TEST_F(VCTest, vc_set_result_cb_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_result_cb(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_result_cb(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_set_result_cb_n2
+ * @since_tizen                2.4
+ * @description                Negative UTC for set result callback (Invalid state)
+ */
+TEST_F(VCTest, vc_set_result_cb_n2)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_result_cb(__vc_result_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_deinitialize();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_set_result_cb(__vc_result_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_set_result_cb_n3
+ * @since_tizen                2.4
+ * @description                Negative UTC for set result callback (Invalid state)
+ */
+TEST_F(VCTest, vc_set_result_cb_n3)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_result_cb(__vc_result_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_prepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               while (VC_STATE_READY != g_vc_state) {
+                       ecore_main_loop_iterate();
+               }
+
+               ret = vc_set_result_cb(__vc_result_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+
+               ret = vc_unprepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_unset_result_cb_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for unset result callback
+ */
+TEST_F(VCTest, vc_unset_result_cb_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_unset_result_cb();
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_result_cb(__vc_result_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_unset_result_cb();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_unset_result_cb_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for unset result callback (Invalid state)
+ */
+TEST_F(VCTest, vc_unset_result_cb_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_unset_result_cb();
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               vc_deinitialize();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_unset_result_cb();
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_unset_result_cb_n2
+ * @since_tizen                2.4
+ * @description                Negative UTC for unset result callback (Invalid state)
+ */
+TEST_F(VCTest, vc_unset_result_cb_n2)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_unset_result_cb();
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_prepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               while (VC_STATE_READY != g_vc_state) {
+                       ecore_main_loop_iterate();
+               }
+
+               ret = vc_unset_result_cb();
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+
+               ret = vc_unprepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_set_service_state_changed_cb_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for set service state changed callback
+ */
+TEST_F(VCTest, vc_set_service_state_changed_cb_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_service_state_changed_cb(__vc_service_state_changed_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_service_state_changed_cb(__vc_service_state_changed_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+
+
+}
+
+/**
+ * @testcase           utc_vc_set_service_state_changed_cb_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for set service state changed callback (Invalid parameter)
+ */
+TEST_F(VCTest, vc_set_service_state_changed_cb_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_service_state_changed_cb(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_service_state_changed_cb(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_set_service_state_changed_cb_n2
+ * @since_tizen                2.4
+ * @description                Negative UTC for set service state changed callback (Invalid state)
+ */
+TEST_F(VCTest, vc_set_service_state_changed_cb_n2)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_service_state_changed_cb(__vc_service_state_changed_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               vc_deinitialize();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_set_service_state_changed_cb(__vc_service_state_changed_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_set_service_state_changed_cb_n3
+ * @since_tizen                2.4
+ * @description                Nagative UTC for set service state changed callback (Invalid state)
+ */
+TEST_F(VCTest, vc_set_service_state_changed_cb_n3)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_service_state_changed_cb(__vc_service_state_changed_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_prepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               while (VC_STATE_READY != g_vc_state) {
+                       ecore_main_loop_iterate();
+               }
+
+               ret = vc_set_service_state_changed_cb(__vc_service_state_changed_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+
+               ret = vc_unprepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_unset_service_state_changed_cb_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for unset service state changed callback
+ */
+TEST_F(VCTest, vc_unset_service_state_changed_cb_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_unset_service_state_changed_cb();
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_service_state_changed_cb(__vc_service_state_changed_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_unset_service_state_changed_cb();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_unset_service_state_changed_cb_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for unset service state changed callback (Invalid state)
+ */
+TEST_F(VCTest, vc_unset_service_state_changed_cb_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_unset_service_state_changed_cb();
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               vc_deinitialize();
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_unset_service_state_changed_cb();
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_unset_service_state_changed_cb_n2
+ * @since_tizen                2.4
+ * @description                Negative UTC for unset service state changed callback (Invalid state)
+ */
+TEST_F(VCTest, vc_unset_service_state_changed_cb_n2)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_unset_service_state_changed_cb();
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_prepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               while (VC_STATE_READY != g_vc_state) {
+                       ecore_main_loop_iterate();
+               }
+
+               ret = vc_unset_service_state_changed_cb();
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+
+               ret = vc_unprepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_set_state_changed_cb_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for set state changed callback
+ */
+TEST_F(VCTest, vc_set_state_changed_cb_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_state_changed_cb(__vc_state_changed_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+       }
+}
+
+/**
+ * @testcase           utc_vc_set_state_changed_cb_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for set state changed callback (Invalid parameter)
+ */
+TEST_F(VCTest, vc_set_state_changed_cb_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_state_changed_cb(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_state_changed_cb(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_set_state_changed_cb_n2
+ * @since_tizen                2.4
+ * @description                Nagative UTC for set state changed callback (Invalid state)
+ */
+TEST_F(VCTest, vc_set_state_changed_cb_n2)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_state_changed_cb(__vc_state_changed_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               vc_deinitialize();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_set_state_changed_cb(__vc_state_changed_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_set_state_changed_cb_n3
+ * @since_tizen                2.4
+ * @description                Negative UTC for set state changed callback (Invalid state)
+ */
+TEST_F(VCTest, vc_set_state_changed_cb_n3)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_state_changed_cb(__vc_state_changed_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_prepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               while (VC_STATE_READY != g_vc_state) {
+                       ecore_main_loop_iterate();
+               }
+
+               ret = vc_set_state_changed_cb(__vc_state_changed_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+
+               ret = vc_unprepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_unset_state_changed_cb_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for unset state changed callback
+ */
+TEST_F(VCTest, vc_unset_state_changed_cb_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_unset_state_changed_cb();
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_unset_state_changed_cb();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_unset_state_changed_cb_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for unset state changed callback (Invalid state)
+ */
+TEST_F(VCTest, vc_unset_state_changed_cb_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_unset_state_changed_cb();
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               vc_deinitialize();
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_unset_state_changed_cb();
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_set_current_language_changed_cb_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for set current language changed callback
+ */
+TEST_F(VCTest, vc_set_current_language_changed_cb_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_current_language_changed_cb(__vc_current_language_changed_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_current_language_changed_cb(__vc_current_language_changed_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_set_current_language_changed_cb_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for set current language changed callback (invalid parameter)
+ */
+TEST_F(VCTest, vc_set_current_language_changed_cb_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_current_language_changed_cb(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_current_language_changed_cb(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_set_current_language_changed_cb_n2
+ * @since_tizen                2.4
+ * @description                Negative UTC for set current language changed callback (Invalid state)
+ */
+TEST_F(VCTest, vc_set_current_language_changed_cb_n2)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_current_language_changed_cb(__vc_current_language_changed_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_prepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               while (VC_STATE_READY != g_vc_state) {
+                       ecore_main_loop_iterate();
+               }
+
+               ret = vc_set_current_language_changed_cb(__vc_current_language_changed_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+
+               ret = vc_unprepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_set_current_language_changed_cb_n3
+ * @since_tizen                2.4
+ * @description                Negative UTC for set current language changed callback (Invalid state)
+ */
+TEST_F(VCTest, vc_set_current_language_changed_cb_n3)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_current_language_changed_cb(__vc_current_language_changed_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               vc_deinitialize();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_set_current_language_changed_cb(__vc_current_language_changed_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_unset_current_language_changed_cb_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for unset current language changed callback
+ */
+TEST_F(VCTest, vc_unset_current_language_changed_cb_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_unset_current_language_changed_cb();
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_current_language_changed_cb(__vc_current_language_changed_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_unset_current_language_changed_cb();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_unset_current_language_changed_cb_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for unset current language changed callback (Invalid state)
+ */
+TEST_F(VCTest, vc_unset_current_language_changed_cb_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_unset_current_language_changed_cb();
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               vc_deinitialize();
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_unset_current_language_changed_cb();
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_unset_current_language_changed_cb_n2
+ * @since_tizen                2.4
+ * @description                Negative UTC for unset current language changed callback (Invalid state)
+ */
+TEST_F(VCTest, vc_unset_current_language_changed_cb_n2)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_unset_current_language_changed_cb();
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_prepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               while (VC_STATE_READY != g_vc_state) {
+                       ecore_main_loop_iterate();
+               }
+
+               ret = vc_unset_current_language_changed_cb();
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+
+               ret = vc_unprepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_set_error_cb_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for set error callback
+ */
+TEST_F(VCTest, vc_set_error_cb_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_error_cb(__vc_error_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_error_cb(__vc_error_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_set_error_cb_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for set error callback (Invalid parameter)
+ */
+TEST_F(VCTest, vc_set_error_cb_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_error_cb(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_error_cb(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_set_error_cb_n2
+ * @since_tizen                2.4
+ * @description                Negative UTC for set error callback (Invalid state)
+ */
+TEST_F(VCTest, vc_set_error_cb_n2)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_error_cb(__vc_error_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               vc_deinitialize();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_set_error_cb(__vc_error_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_set_error_cb_n3
+ * @since_tizen                2.4
+ * @description                Negative UTC for set error callback (Invalid state)
+ */
+TEST_F(VCTest, vc_set_error_cb_n3)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_error_cb(__vc_error_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_prepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               while (VC_STATE_READY != g_vc_state) {
+                       ecore_main_loop_iterate();
+               }
+
+               ret = vc_set_error_cb(__vc_error_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+
+               ret = vc_unprepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_unset_error_cb_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for unset error callback
+ */
+TEST_F(VCTest, vc_unset_error_cb_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_unset_error_cb();
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_set_error_cb(__vc_error_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_unset_error_cb();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_unset_error_cb_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for unset error callback (Invalid state)
+ */
+TEST_F(VCTest, vc_unset_error_cb_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_unset_error_cb();
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               vc_deinitialize();
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_unset_error_cb();
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_unset_error_cb_n2
+ * @since_tizen                2.4
+ * @description                Negative UTC for unset error callback (Invalid state)
+ */
+TEST_F(VCTest, vc_unset_error_cb_n2)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_unset_error_cb();
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_prepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               while (VC_STATE_READY != g_vc_state) {
+                       ecore_main_loop_iterate();
+               }
+
+               ret = vc_unset_error_cb();
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+
+               ret = vc_unprepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_set_invocation_name_p
+ * @since_tizen                3.0
+ * @description                Positive UTC for setting the invocation name
+ */
+TEST_F(VCTest, vc_set_invocation_name_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               const char* invoc_name = "testapp";
+               ret = vc_set_invocation_name(invoc_name);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               const char* invoc_name = "testapp";
+
+               ret = vc_prepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               while (VC_STATE_READY != g_vc_state) {
+                       ecore_main_loop_iterate();
+               }
+
+               ret = vc_set_invocation_name(invoc_name);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_unprepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_set_invocation_name_n
+ * @since_tizen                3.0
+ * @description                Negative UTC for setting the invocation name (Invalid state)
+ */
+TEST_F(VCTest, vc_set_invocation_name_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               const char* invoc_name = "testapp";
+               ret = vc_set_invocation_name(invoc_name);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               const char* invoc_name = "testapp";
+
+               ret = vc_set_invocation_name(invoc_name);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_request_dialog_p
+ * @since_tizen                3.0
+ * @description                Positive UTC for requesting the dialog
+ */
+TEST_F(VCTest, vc_request_dialog_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               const char* disp_txt = "test";
+               const char* utt_txt = "test";
+               bool is_auto_start = true;
+               ret = vc_request_dialog(disp_txt, utt_txt, is_auto_start);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               const char* disp_txt = "test";
+               const char* utt_txt = "test";
+               bool is_auto_start = true;
+
+               ret = vc_prepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               while (VC_STATE_READY != g_vc_state) {
+                       ecore_main_loop_iterate();
+               }
+
+               ret = vc_request_dialog(disp_txt, utt_txt, is_auto_start);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_unprepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_request_dialog_n
+ * @since_tizen                3.0
+ * @description                Negative UTC for requesting the dialog (Invalid state)
+ */
+TEST_F(VCTest, vc_request_dialog_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               const char* disp_txt = "voice control test";
+               const char* utt_txt = "This is a test for requesting the dialog";
+               bool is_auto_start = true;
+               ret = vc_request_dialog(disp_txt, utt_txt, is_auto_start);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               vc_deinitialize();
+
+               int ret = VC_ERROR_NONE;
+               const char* disp_txt = "voice control test";
+               const char* utt_txt = "This is a test for requesting the dialog";
+               bool is_auto_start = true;
+               ret = vc_request_dialog(disp_txt, utt_txt, is_auto_start);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_STATE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_list_create_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for create command list handle
+ */
+TEST_F(VCTest, vc_cmd_list_create_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               ret = vc_cmd_list_create(&list);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               ret = vc_cmd_list_create(&list);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_list_destroy(list, false);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_list_create_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for create command list handle (Invalid parameter)
+ */
+TEST_F(VCTest, vc_cmd_list_create_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_list_create(NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_list_create(NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_list_destroy_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for destroy command list handle
+ */
+TEST_F(VCTest, vc_cmd_list_destroy_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               ret = vc_cmd_list_destroy(list, false);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               ret = vc_cmd_list_create(&list);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_list_destroy(list, false);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_list_destroy_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for destroy command list handle (Invalid parameter)
+ */
+TEST_F(VCTest, vc_cmd_list_destroy_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_list_destroy(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_list_destroy(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_list_get_count_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for get count of command in command list
+ */
+TEST_F(VCTest, vc_cmd_list_get_count_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               int cnt = -1;
+               ret = vc_cmd_list_get_count(list, &cnt);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               ret = vc_cmd_list_create(&list);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               int cnt = -1;
+               ret = vc_cmd_list_get_count(list, &cnt);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_list_destroy(list, false);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_list_get_count_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for get count of command in command list (Invalid parameter)
+ */
+TEST_F(VCTest, vc_cmd_list_get_count_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_list_get_count(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_list_get_count(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_list_add_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for add command in command list
+ */
+TEST_F(VCTest, vc_cmd_list_add_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               vc_cmd_h cmd = NULL;
+               ret = vc_cmd_list_add(list, cmd);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               ret = vc_cmd_list_create(&list);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_h cmd = NULL;
+               ret = vc_cmd_create(&cmd);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_list_add(list, cmd);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_list_destroy(list, true);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_list_add_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for add command in command list (Invalid parameter)
+ */
+TEST_F(VCTest, vc_cmd_list_add_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_list_add(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_list_add(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_list_remove_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for remove command in command list
+ */
+TEST_F(VCTest, vc_cmd_list_remove_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               vc_cmd_h cmd = NULL;
+               ret = vc_cmd_list_remove(list, cmd);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               ret = vc_cmd_list_create(&list);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_h cmd = NULL;
+               ret = vc_cmd_create(&cmd);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_list_add(list, cmd);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_list_remove(list, cmd);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_list_destroy(list, true);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_list_remove_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for remove command in command list (Invalid parameter)
+ */
+TEST_F(VCTest, vc_cmd_list_remove_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_list_remove(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_list_remove(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_list_foreach_commands_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for get whole command in command list
+ */
+TEST_F(VCTest, vc_cmd_list_foreach_commands_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               ret = vc_cmd_list_foreach_commands(list, __vc_cmd_list_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               ret = vc_cmd_list_create(&list);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_h cmd = NULL;
+               ret = vc_cmd_create(&cmd);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_list_add(list, cmd);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_list_foreach_commands(list, __vc_cmd_list_cb, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_list_destroy(list, true);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_list_foreach_commands_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for get whole command in command list (Invalid parameter)
+ */
+TEST_F(VCTest, vc_cmd_list_foreach_commands_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_list_foreach_commands(NULL, NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_list_foreach_commands(NULL, NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_list_first_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for move pointer to the first of command list
+ */
+TEST_F(VCTest, vc_cmd_list_first_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               ret = vc_cmd_list_first(list);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               ret = vc_cmd_list_create(&list);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_h cmd = NULL;
+               ret = vc_cmd_create(&cmd);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_list_add(list, cmd);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_list_first(list);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_list_destroy(list, true);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_list_first_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for move pointer to the first of command list (Invalid parameter)
+ */
+TEST_F(VCTest, vc_cmd_list_first_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_list_first(NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_list_first(NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_list_last_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for move pointer to the last of command list
+ */
+TEST_F(VCTest, vc_cmd_list_last_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               ret = vc_cmd_list_last(list);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               ret = vc_cmd_list_create(&list);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_h cmd = NULL;
+               ret = vc_cmd_create(&cmd);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_list_add(list, cmd);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_list_last(list);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_list_destroy(list, true);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_list_last_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for move pointer to the last of command list (Invalid parameter)
+ */
+TEST_F(VCTest, vc_cmd_list_last_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_list_last(NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_list_last(NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_list_next_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for move pointer to next command in command list
+ */
+TEST_F(VCTest, vc_cmd_list_next_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               ret = vc_cmd_list_next(list);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               ret = vc_cmd_list_create(&list);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_h cmd = NULL;
+               int i;
+               for (i = 0; i < 2; i++) {
+                       ret = vc_cmd_create(&cmd);
+                       EXPECT_EQ(ret, VC_ERROR_NONE);
+
+                       ret = vc_cmd_list_add(list, cmd);
+                       EXPECT_EQ(ret, VC_ERROR_NONE);
+               }
+
+               ret = vc_cmd_list_first(list);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_list_next(list);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_list_destroy(list, true);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_list_next_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for move pointer to next command in command list (Invalid parameter)
+ */
+TEST_F(VCTest, vc_cmd_list_next_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_list_next(NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_list_next(NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_list_prev_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for move pointer to previous command in command list
+ */
+TEST_F(VCTest, vc_cmd_list_prev_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               ret = vc_cmd_list_prev(list);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               ret = vc_cmd_list_create(&list);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_h cmd = NULL;
+               int i;
+               for (i = 0; i < 2; i++) {
+                       ret = vc_cmd_create(&cmd);
+                       EXPECT_EQ(ret, VC_ERROR_NONE);
+
+                       ret = vc_cmd_list_add(list, cmd);
+                       EXPECT_EQ(ret, VC_ERROR_NONE);
+               }
+
+               ret = vc_cmd_list_last(list);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_list_prev(list);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_list_destroy(list, true);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_list_prev_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for move pointer to previous command in command list (Invalid parameter)
+ */
+TEST_F(VCTest, vc_cmd_list_prev_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_list_prev(NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_list_prev(NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_list_get_current_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for get command handle of current pointer
+ */
+TEST_F(VCTest, vc_cmd_list_get_current_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               vc_cmd_h cur = NULL;
+               ret = vc_cmd_list_get_current(list, &cur);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               ret = vc_cmd_list_create(&list);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_h cmd = NULL;
+               ret = vc_cmd_create(&cmd);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_list_add(list, cmd);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_list_first(list);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_h cur = NULL;
+               ret = vc_cmd_list_get_current(list, &cur);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_list_destroy(list, true);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_list_get_current_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for get command handle of current pointer (Invalid parameter)
+ */
+TEST_F(VCTest, vc_cmd_list_get_current_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_list_get_current(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_list_get_current(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_create_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for create command handle
+ */
+TEST_F(VCTest, vc_cmd_create_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_h cmd = NULL;
+               ret = vc_cmd_create(&cmd);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_h cmd = NULL;
+               ret = vc_cmd_create(&cmd);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_destroy(cmd);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_create_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for create command handle
+ */
+TEST_F(VCTest, vc_cmd_create_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_create(NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_create(NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_destroy_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for destroy command handle
+ */
+TEST_F(VCTest, vc_cmd_destroy_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_h cmd = NULL;
+               ret = vc_cmd_destroy(cmd);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_h cmd = NULL;
+               ret = vc_cmd_create(&cmd);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_destroy(cmd);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_destroy_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for destroy command handle (Invalid parameter)
+ */
+TEST_F(VCTest, vc_cmd_destroy_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_destroy(NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_destroy(NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_set_command_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for set command text in handle
+ */
+TEST_F(VCTest, vc_cmd_set_command_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_h cmd = NULL;
+               ret = vc_cmd_set_command(cmd, "voice");
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_h cmd = NULL;
+               ret = vc_cmd_create(&cmd);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_set_command(cmd, "voice");
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_destroy(cmd);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_set_command_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for set command text in handle (Invalid parameter)
+ */
+TEST_F(VCTest, vc_cmd_set_command_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_set_command(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_set_command(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_get_command_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for get command text in handle
+ */
+TEST_F(VCTest, vc_cmd_get_command_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_h cmd = NULL;
+               char *text = NULL;
+               ret = vc_cmd_get_command(cmd, &text);
+               if (NULL != text) {
+                               free(text);
+                               text = NULL;
+               }
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_h cmd = NULL;
+               ret = vc_cmd_create(&cmd);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_set_command(cmd, "voice");
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               char *text = NULL;
+               ret = vc_cmd_get_command(cmd, &text);
+               if (NULL != text) {
+                               free(text);
+                               text = NULL;
+               }
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_destroy(cmd);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_get_command_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for get command text in handle (Invalid parameter)
+ */
+TEST_F(VCTest, vc_cmd_get_command_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_get_command(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_get_command(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_get_unfixed_command_p
+ * @since_tizen                3.0
+ * @description                Positive UTC for getting the unfixed command text in handle
+ */
+TEST_F(VCTest, vc_cmd_get_unfixed_command_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_h cmd = NULL;
+               char *text = NULL;
+               ret = vc_cmd_create(&cmd);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+
+               ret = vc_cmd_get_unfixed_command(cmd, &text);
+               if (NULL != text) {
+                       free(text);
+                       text = NULL;
+               }
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_h cmd = NULL;
+               ret = vc_cmd_create(&cmd);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               char *text = NULL;
+               ret = vc_cmd_get_unfixed_command(cmd, &text);
+               if (NULL != text) {
+                       free(text);
+                       text = NULL;
+               }
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_destroy(cmd);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_get_unfixed_command_n
+ * @since_tizen                3.0
+ * @description                Negative UTC for getting the unfixed command text in handle (Invalid parameter)
+ */
+TEST_F(VCTest, vc_cmd_get_unfixed_command_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_get_unfixed_command(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_get_unfixed_command(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_set_type_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for set command type in handle
+ */
+TEST_F(VCTest, vc_cmd_set_type_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_h cmd = NULL;
+               ret = vc_cmd_set_type(cmd, VC_COMMAND_TYPE_BACKGROUND);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_h cmd = NULL;
+               ret = vc_cmd_create(&cmd);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_set_type(cmd, VC_COMMAND_TYPE_BACKGROUND);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_destroy(cmd);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_set_type_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for set command type in handle (Invalid parameter)
+ */
+TEST_F(VCTest, vc_cmd_set_type_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_set_type(NULL, VC_COMMAND_TYPE_BACKGROUND);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_set_type(NULL, VC_COMMAND_TYPE_BACKGROUND);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_get_type_p
+ * @since_tizen                2.4
+ * @description                Positive UTC for get command type in handle
+ */
+TEST_F(VCTest, vc_cmd_get_type_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_h cmd = NULL;
+               int type;
+               ret = vc_cmd_get_type(cmd, &type);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_h cmd = NULL;
+               ret = vc_cmd_create(&cmd);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_set_type(cmd, VC_COMMAND_TYPE_BACKGROUND);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               int type;
+               ret = vc_cmd_get_type(cmd, &type);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_destroy(cmd);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_get_type_n
+ * @since_tizen                2.4
+ * @description                Negative UTC for get command type in handle (invalid parameter)
+ */
+TEST_F(VCTest, vc_cmd_get_type_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_get_type(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_get_type(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_set_format_p
+ * @since_tizen                3.0
+ * @description                Positive UTC for setting command format in handle
+ */
+TEST_F(VCTest, vc_cmd_set_format_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_h cmd = NULL;
+               ret = vc_cmd_create(&cmd);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+
+               ret = vc_cmd_set_format(cmd, VC_COMMAND_FORMAT_FIXED);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+
+               vc_cmd_destroy(cmd);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_h cmd = NULL;
+               ret = vc_cmd_create(&cmd);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_set_format(cmd, VC_COMMAND_FORMAT_FIXED);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_destroy(cmd);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_set_format_n
+ * @since_tizen                3.0
+ * @description                Negative UTC for setting command format in handle (Invalid parameter)
+ */
+TEST_F(VCTest, vc_cmd_set_format_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_set_format(NULL, VC_COMMAND_FORMAT_FIXED);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_set_format(NULL, VC_COMMAND_FORMAT_FIXED);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_get_format_p
+ * @since_tizen                3.0
+ * @description                Positive UTC for getting command format in handle
+ */
+TEST_F(VCTest, vc_cmd_get_format_p)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_h cmd = NULL;
+               int format;
+               ret = vc_cmd_get_format(cmd, &format);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_h cmd = NULL;
+               ret = vc_cmd_create(&cmd);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               ret = vc_cmd_set_format(cmd, VC_COMMAND_FORMAT_FIXED);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               int format;
+               ret = vc_cmd_get_format(cmd, &format);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               vc_cmd_destroy(cmd);
+       }
+}
+
+/**
+ * @testcase           utc_vc_cmd_get_format_n
+ * @since_tizen                3.0
+ * @description                Negative UTC for getting command format in handle(invalid parameter)
+ */
+TEST_F(VCTest, vc_cmd_get_format_n)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_get_format(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_cmd_get_format(NULL, NULL);
+               EXPECT_EQ(ret, VC_ERROR_INVALID_PARAMETER);
+       }
+}
+
+} // namespace