[ITC][multi-assistant][ACR-1294][Added new APIs for supporting multi-assistant]
authorPriya Kohli <priya.kohli@samsung.com>
Wed, 17 Oct 2018 06:25:58 +0000 (11:55 +0530)
committerAmritanshu Pandia <a.pandia1@samsung.com>
Mon, 29 Oct 2018 07:28:12 +0000 (07:28 +0000)
Change-Id: Ief740d4c13c3a66f3d7cbbf617cb80d45d274ec7
Signed-off-by: Priya Kohli <priya.kohli@samsung.com>
12 files changed:
packaging/TCT.spec
packaging/itc/native-multi-assistant-itc.spec [new file with mode: 0755]
packaging/itc/native-multi-assistant-itc.xml [new file with mode: 0755]
src/CMakeLists.txt
src/itc/multi-assistant/CMakeLists.txt [new file with mode: 0755]
src/itc/multi-assistant/ITs-multi-assistant-common.c [new file with mode: 0755]
src/itc/multi-assistant/ITs-multi-assistant-common.h [new file with mode: 0755]
src/itc/multi-assistant/ITs-multi-assistant.c [new file with mode: 0755]
src/itc/multi-assistant/tct-multi-assistant-native.c [new file with mode: 0755]
src/itc/multi-assistant/tct-multi-assistant-native_mobile.h [new file with mode: 0644]
src/itc/multi-assistant/tct-multi-assistant-native_tizeniot.h [new file with mode: 0644]
src/itc/multi-assistant/tct-multi-assistant-native_wearable.h [new file with mode: 0644]

index 61f42f2a03834bde7437e339d9be4dac300d57cb..6ff91b7469bfe1bc44619c64984b1fd11c3fd77c 100755 (executable)
@@ -543,6 +543,12 @@ Group:      Development/Tools
 %description -n native-wifi-itc
 Native API Integration TC for wifi
 
+%package -n native-multi-assistant-itc
+Summary:    Native API Integration TC for multi-assistant
+Group:      Development/Tools
+
+%description -n native-multi-assistant-itc
+Native API Integration TC for multi-assistant
 #************End Adding ITC******************************
 
 %package -n core-accounts-svc-tests
@@ -1578,6 +1584,12 @@ mkdir -p %{buildroot}/opt/usr/apps/native-wifi-itc/data/
 cp src/itc/wifi/cert.crt %{buildroot}/opt/usr/apps/native-wifi-itc/data/cert.crt
 cp src/itc/wifi/testing.pem %{buildroot}/opt/usr/apps/native-wifi-itc/data/testing.pem
 
+#native-multi-assistant-itc
+cp LICENSE %{buildroot}/opt/usr/share/license/native-multi-assistant-itc
+cp packaging/itc/native-multi-assistant-itc.xml %{buildroot}/opt/share/packages/
+mkdir -p %{buildroot}/opt/usr/apps/native-multi-assistant-itc/bin
+#cp templates/external_wrapper.sh %{buildroot}/opt/usr/apps/native-multi-assistant-itc/bin
+
 #*********End Adding ITC*********
 
 #core-accounts-svc-tests
@@ -2461,6 +2473,10 @@ pkgcmd -un org.tizen.testapp &
 /opt/share/packages/native-wifi-itc.xml
 /opt/usr/share/license/native-wifi-itc
 
+%files -n native-multi-assistant-itc
+/opt/usr/apps/native-multi-assistant-itc/*
+/opt/share/packages/native-multi-assistant-itc.xml
+/opt/usr/share/license/native-multi-assistant-itc
 
 #******************End Adding ITC******************
 
diff --git a/packaging/itc/native-multi-assistant-itc.spec b/packaging/itc/native-multi-assistant-itc.spec
new file mode 100755 (executable)
index 0000000..913c6ac
--- /dev/null
@@ -0,0 +1,71 @@
+%define MODULE_NAME multi-assistant
+%define MODULE_LIBNAME multi-assistant
+Name:       native-%{MODULE_NAME}-tests
+Summary:    Native API Integration TC (%{name})
+Version:    0.1
+Release:    0
+Group:      Development/Tools
+License:    Apache License, Version 2.0
+Source0:    %{name}-%{version}.tar.gz
+BuildRequires: pkgconfig(%{MODULE_LIBNAME})
+BuildRequires: cmake
+%description
+Native API Integration TC (%{name})
+
+%prep
+%setup -q
+
+%build
+
+%define PREFIX "%{_libdir}/%{name}"
+
+export LDFLAGS+="-Wl,--rpath=%{PREFIX} -Wl,--as-needed"
+
+%if %{?ASAN_BUILD:1}0
+       %if %{?DEVICE_BUILD_TYPE_MOBILE:1}0
+       cmake . -DMODULE="%{MODULE_NAME}" -DBUILDTCTYPE="itc" -DDEVICE_BUILD_TYPE="mobile" -DASANBUILD="true" -DCMAKE_INSTALL_PREFIX=%{_prefix}
+       %endif
+       %if %{?DEVICE_BUILD_TYPE_WEARABLE:1}0
+       cmake . -DMODULE="%{MODULE_NAME}" -DBUILDTCTYPE="itc" -DDEVICE_BUILD_TYPE="wearable" -DASANBUILD="true" -DCMAKE_INSTALL_PREFIX=%{_prefix}
+       %endif
+       %if %{?DEVICE_BUILD_TYPE_TV:1}0
+       cmake . -DMODULE="%{MODULE_NAME}" -DBUILDTCTYPE="itc" -DDEVICE_BUILD_TYPE="tv" -DASANBUILD="true" -DCMAKE_INSTALL_PREFIX=%{_prefix}
+       %endif
+       %if %{?DEVICE_BUILD_TYPE_TIZENIOT:1}0
+       cmake . -DMODULE="%{MODULE_NAME}" -DBUILDTCTYPE="itc" -DDEVICE_BUILD_TYPE="tizeniot" -DASANBUILD="true" -DCMAKE_INSTALL_PREFIX=%{_prefix}
+       %endif
+%else
+       %if %{?DEVICE_BUILD_TYPE_MOBILE:1}0
+       cmake . -DMODULE="%{MODULE_NAME}" -DBUILDTCTYPE="itc" -DDEVICE_BUILD_TYPE="mobile" -DASANBUILD="false" -DCMAKE_INSTALL_PREFIX=%{_prefix}
+       %endif
+       %if %{?DEVICE_BUILD_TYPE_WEARABLE:1}0
+       cmake . -DMODULE="%{MODULE_NAME}" -DBUILDTCTYPE="itc" -DDEVICE_BUILD_TYPE="wearable" -DASANBUILD="false" -DCMAKE_INSTALL_PREFIX=%{_prefix}
+       %endif
+       %if %{?DEVICE_BUILD_TYPE_TV:1}0
+       cmake . -DMODULE="%{MODULE_NAME}" -DBUILDTCTYPE="itc" -DDEVICE_BUILD_TYPE="tv" -DASANBUILD="false" -DCMAKE_INSTALL_PREFIX=%{_prefix}
+       %endif
+       %if %{?DEVICE_BUILD_TYPE_TIZENIOT:1}0
+       cmake . -DMODULE="%{MODULE_NAME}" -DBUILDTCTYPE="itc" -DDEVICE_BUILD_TYPE="tizeniot" -DASANBUILD="false" -DCMAKE_INSTALL_PREFIX=%{_prefix}
+       %endif
+%endif
+
+make %{?jobs:-j%jobs}
+
+%install
+rm -rf %{buildroot}
+%make_install
+mkdir -p %{buildroot}/usr/share/license
+cp LICENSE %{buildroot}/usr/share/license/%{name}
+mkdir -p %{buildroot}/usr/share/packages/
+cp packaging/itc/native-%{MODULE_NAME}-itc.xml %{buildroot}/usr/share/packages/
+mkdir -p %{buildroot}/usr/apps/%{name}/bin
+#cp templates/external_wrapper.sh %{buildroot}/usr/apps/%{name}/bin
+%post
+
+%postun
+
+
+%files
+%{APP_PATH}%{name}/*
+/usr/share/packages/native-%{MODULE_NAME}-itc.xml
+/usr/share/license/%{name}
diff --git a/packaging/itc/native-multi-assistant-itc.xml b/packaging/itc/native-multi-assistant-itc.xml
new file mode 100755 (executable)
index 0000000..dbc500a
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="native-multi-assistant-itc" version="0.1.0" api-version="3.0">
+    <label>nativeMultiAssistantTest</label>
+    <author email="test@tizen.org" href="www.tizen.org">test</author>
+    <description>native API test Application</description>
+    <ui-application appid="native.multi-assistant-tests" exec="/usr/apps/core-multi-assistant-tests/bin/tct-multi-assistant-native" nodisplay="false" multiple="false" type="capp" taskmanage="true">
+    <background-category value="background-network"/>
+       <background-category value="download"/>
+       <background-category value="iot-communication"/>
+       <background-category value="location"/>
+       <background-category value="media"/>
+       <background-category value="sensor"/>
+    </ui-application>
+       <privileges>
+               <privilege>http://tizen.org/privilege/recorder</privilege>
+       </privileges>
+</manifest>
index 3068673dc38100f97b929f1f0855ab59b4317a93..addcc7dd769946851ed27ff8d8ebfab4a37cb3ec 100755 (executable)
@@ -318,6 +318,8 @@ ELSE( DEFINED MODULE )
        ADD_SUBDIRECTORY(itc/wifi-direct)
        MESSAGE(STATUS "Building: ${CMAKE_CURRENT_SOURCE_DIR}/itc/wifi")
        ADD_SUBDIRECTORY(itc/wifi)
+       MESSAGE(STATUS "Building: ${CMAKE_CURRENT_SOURCE_DIR}/itc/multi-assistant")
+       ADD_SUBDIRECTORY(itc/multi-assistant)
        MESSAGE(STATUS "Building: ${CMAKE_CURRENT_SOURCE_DIR}/ctc/audio-io")
        ADD_SUBDIRECTORY(ctc/audio-io)
        MESSAGE(STATUS "Building: ${CMAKE_CURRENT_SOURCE_DIR}/ctc/camera")
diff --git a/src/itc/multi-assistant/CMakeLists.txt b/src/itc/multi-assistant/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..ffea2cf
--- /dev/null
@@ -0,0 +1,35 @@
+SET(PKG_NAME "multi-assistant")
+
+SET(EXEC_NAME "tct-${PKG_NAME}-native")
+SET(RPM_NAME "native-${PKG_NAME}-itc")
+
+SET(CAPI_LIB "multi-assistant")
+SET(TC_SOURCES
+       ITs-multi-assistant-common.c
+    ITs-multi-assistant.c
+)
+
+PKG_CHECK_MODULES(${CAPI_LIB} REQUIRED
+    ${CAPI_LIB}
+)
+
+INCLUDE_DIRECTORIES(
+    ${${CAPI_LIB}_INCLUDE_DIRS}
+)
+
+ADD_EXECUTABLE(${EXEC_NAME} ${EXEC_NAME}.c ${TC_SOURCES} ${COMMON_FILE})
+TARGET_LINK_LIBRARIES(${EXEC_NAME}
+    ${${CAPI_LIB}_LIBRARIES}
+)
+
+INSTALL(PROGRAMS ${EXEC_NAME}
+    DESTINATION ${BIN_DIR}/${RPM_NAME}/bin
+)
+
+IF( DEFINED ASAN )
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -Wall -pie -g -fsanitize=address -fsanitize-recover=address -U_FORTIFY_SOURCE -fno-omit-frame-pointer")
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -Wl,--rpath=/usr/lib -Wl,-fsanitize=address")
+ELSE()
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -g -fPIE -Wall")
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -Wl,--rpath=/usr/lib -pie")
+ENDIF()
diff --git a/src/itc/multi-assistant/ITs-multi-assistant-common.c b/src/itc/multi-assistant/ITs-multi-assistant-common.c
new file mode 100755 (executable)
index 0000000..34d862a
--- /dev/null
@@ -0,0 +1,71 @@
+//
+// Copyright (c) 2018 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 <stdio.h>
+#include <string.h>
+#include "tct_common.h"
+#include <bundle.h>
+
+#include <malloc.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+#include <glib.h>
+#include <stdbool.h>
+#include <app.h>
+#include <dlog.h>
+
+#include "ITs-multi-assistant-common.h"
+
+/** @addtogroup itc-multi-assistant
+*  @ingroup itc
+*  @{
+*/
+
+//Add helper function definitions here
+
+/**
+* @function            MaGetError
+* @description         Maps error enumerators to string values
+* @parameter           nRet : error code returned
+* @return                      error string
+*/
+char *MaGetError(int nRet)
+{
+       char *szErrorVal = NULL;
+
+       switch ( nRet )
+       {
+               case MA_ERROR_NONE:                                             szErrorVal = "MA_ERROR_NONE";                                   break;
+               case MA_ERROR_OUT_OF_MEMORY:                    szErrorVal = "MA_ERROR_OUT_OF_MEMORY";                  break;
+               case MA_ERROR_IO_ERROR:                                 szErrorVal = "MA_ERROR_IO_ERROR";                               break;
+               case MA_ERROR_INVALID_PARAMETER:                szErrorVal = "MA_ERROR_INVALID_PARAMETER";              break;
+               case MA_ERROR_TIMED_OUT:                                szErrorVal = "MA_ERROR_TIMED_OUT";                              break;
+               case MA_ERROR_RECORDER_BUSY:                    szErrorVal = "MA_ERROR_RECORDER_BUSY";                  break;
+               case MA_ERROR_PERMISSION_DENIED:                szErrorVal = "MA_ERROR_PERMISSION_DENIED";              break;
+               case MA_ERROR_NOT_SUPPORTED:                    szErrorVal = "MA_ERROR_NOT_SUPPORTED";                  break;
+               case MA_ERROR_INVALID_STATE:                    szErrorVal = "MA_ERROR_INVALID_STATE";                  break;
+               case MA_ERROR_INVALID_LANGUAGE:                 szErrorVal = "MA_ERROR_INVALID_LANGUAGE";               break;
+               case MA_ERROR_ENGINE_NOT_FOUND:                 szErrorVal = "MA_ERROR_ENGINE_NOT_FOUND";               break;
+               case MA_ERROR_OPERATION_FAILED:                 szErrorVal = "MA_ERROR_OPERATION_FAILED";               break;
+               case MA_ERROR_SERVICE_RESET:                    szErrorVal = "MA_ERROR_SERVICE_RESET";                  break;
+               case MA_ERROR_NOT_SUPPORTED_FEATURE:    szErrorVal = "MA_ERROR_NOT_SUPPORTED_FEATURE";  break;
+               default:                                                                szErrorVal = "Unknown Error";                                   break;
+       }
+       return szErrorVal;
+}
+
+/** @} */
diff --git a/src/itc/multi-assistant/ITs-multi-assistant-common.h b/src/itc/multi-assistant/ITs-multi-assistant-common.h
new file mode 100755 (executable)
index 0000000..d05146b
--- /dev/null
@@ -0,0 +1,95 @@
+//
+// Copyright (c) 2014 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.
+//
+
+#ifndef _MULTI_ASSISTANT_COMMON_H_
+#define _MULTI_ASSISTANT_H_
+
+#include <stdio.h>
+#include <string.h>
+#include "tct_common.h"
+#include <bundle.h>
+#include <multi_assistant.h>
+#include <multi_assistant_common.h>
+
+/** @addtogroup itc-dlog
+*  @ingroup itc
+*  @{
+*/
+
+#define API_NAMESPACE                                  "MULTI_ASSISTANT_ITC"
+#define FEATURE_MULTI_ASSISTANT                        "http://tizen.org/feature/multi_assistant"
+#define FEATURE_MICROPHONE                             "http://tizen.org/feature/microphone"
+#define TIME_LIMIT                                             20
+
+static bool g_CallBackHit = false;
+static bool g_bMultiAssistant = false;
+static bool g_bMicrophone = false;
+static bool g_bIsFeatureMismatched = false;
+static bool g_bFeatureNotSupported = false;
+static bool g_bMAInit = false;
+static ma_state_e g_nCurrentState = MA_STATE_NONE;
+
+void MaLanguageChangedCb(const char* previous, const char* current, void* user_data);
+void MaAudioStreamingCb(ma_audio_streaming_event_e event, char* buffer, int len, void* user_data);
+void MaStateChangedCb(ma_state_e previous, ma_state_e current, void* user_data);
+void MaErrorCb(ma_error_e reason, void* user_data);
+char *MaGetError(int error);
+
+#define START_TEST {\
+       if(g_bFeatureNotSupported)\
+       {\
+               FPRINTF("[Line:%d][%s] Feature Multi-Assistant not supported\\n", __LINE__, API_NAMESPACE);\
+               return 0;\
+       }\
+\
+       if( g_bIsFeatureMismatched )\
+       {\
+               FPRINTF("[Line:%d][%s] Feature Mismatch Error\\n", __LINE__, API_NAMESPACE);\
+               return 1;\
+       }\
+\
+       if ( !g_bMAInit )\
+       {\
+               FPRINTF("[Line : %d] [API_NAMESPACE] Precondition of multi-assistant failed\\n", __LINE__);\
+               return 1;\
+       }\
+}
+
+#define CHECK_HANDLE_CLEANUP(Handle, API, FreeResource) {\
+       if ( Handle == NULL )\
+       {\
+               FPRINTF("[Line : %d][%s] %s failed, error returned = Handle returned is NULL\\n", __LINE__, API_NAMESPACE, API);\
+               FreeResource;\
+               return 1;\
+       }\
+}
+
+#define WAIT_FOR_CALLBACK(state) {\
+       time_t time1 = time(NULL);\
+       while(state != g_nCurrentState)\
+       {\
+               time_t time2 = time(NULL);\
+               int diff = (int)difftime(time2, time1);\
+               if ( diff > TIME_LIMIT )\
+               {\
+                       break;\
+               }\
+               ecore_main_loop_iterate();\
+       }\
+}\
+
+/** @} */
+#endif  //_ITS_MULTI_ASSISTANT_COMMON_H_
diff --git a/src/itc/multi-assistant/ITs-multi-assistant.c b/src/itc/multi-assistant/ITs-multi-assistant.c
new file mode 100755 (executable)
index 0000000..b862462
--- /dev/null
@@ -0,0 +1,550 @@
+//
+// Copyright (c) 2014 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 "assert.h"
+#include <stdlib.h>
+#include <system_info.h>
+#include <Ecore.h>
+#include <multi_assistant.h>
+
+#include "ITs-multi-assistant-common.h"
+
+/** @addtogroup itc-multi-assistant
+*  @ingroup itc
+*  @{
+*/
+
+//& set: multi-assistant
+
+
+/****************************************************Callback Start****************************************************/
+
+/**
+* @function            MaLanguageChangedCb
+* @description         Callback Function
+* @parameters          const char* previous, const char* current, void* user_data
+* @return                      NA
+*/
+void MaLanguageChangedCb(const char* previous, const char* current, void* user_data)
+{
+       FPRINTF("[Line : %d][%s] %s Callback Invoked\\n", __LINE__, API_NAMESPACE, "MaLanguageChangedCb");
+       g_CallBackHit = true;
+       return;
+}
+
+/**
+* @function            MaAudioStreamingCb
+* @description         Callback Function
+* @parameters          ma_audio_streaming_event_e event, char* buffer, int len, void* user_data
+* @return                      NA
+*/
+void MaAudioStreamingCb(ma_audio_streaming_event_e event, char* buffer, int len, void* user_data)
+{
+       FPRINTF("[Line : %d][%s] %s Callback Invoked\\n", __LINE__, API_NAMESPACE, "MaAudioStreamingCb");
+       g_CallBackHit = true;
+       return;
+}
+
+/**
+* @function            MaStateChangedCb
+* @description         Callback Function
+* @parameters          ma_state_e previous, ma_state_e current, void* user_data
+* @return                      NA
+*/
+void MaStateChangedCb(ma_state_e previous, ma_state_e current, void* user_data)
+{
+       FPRINTF("[Line : %d][%s] %s Callback Invoked\\n", __LINE__, API_NAMESPACE, "MaStateChangedCb");
+       g_CallBackHit = true;
+       g_nCurrentState = current;
+       return;
+}
+
+/**
+* @function            MaErrorCb
+* @description         Callback Function
+* @parameters          ma_error_e reason, void* user_data
+* @return                      NA
+*/
+void MaErrorCb(ma_error_e reason, void* user_data)
+{
+       FPRINTF("[Line : %d][%s] %s Callback Invoked\\n", __LINE__, API_NAMESPACE, "MaErrorCb");
+       g_CallBackHit = true;
+       return;
+}
+
+/*****************************************************Callback End*****************************************************/
+
+/**
+* @testcase                    ITs_ma_startup
+* @author              SRID(priya.kohli)
+* @reviewer            SRID(awadhesh1.s)
+* @type                                auto
+* @since_tizen                         5.0
+* @description                 NA
+* @scenario                            Called before each test, creates connection to push service
+* @apicovered                  NA
+* @passcase                            NA
+* @failcase                            NA
+* @precondition                        NA
+* @postcondition               NA
+*/
+void ITs_ma_startup(void)
+{
+       int nRet = -1;
+       g_bMAInit = true;
+       g_bFeatureNotSupported = false;
+       g_bIsFeatureMismatched = false;
+       struct stat stBuff;
+       if ( stat(ERR_LOG, &stBuff) == 0 )
+       {
+               remove(ERR_LOG);
+       }
+
+#if DEBUG
+       FPRINTF("[Line : %d][%s] TEST SUIT start-up: ITs_Multi_Assistant_p\\n", __LINE__, API_NAMESPACE);
+#endif
+
+       g_bMultiAssistant = TCTCheckSystemInfoFeatureSupported(FEATURE_MULTI_ASSISTANT, API_NAMESPACE);
+       g_bMicrophone = TCTCheckSystemInfoFeatureSupported(FEATURE_MICROPHONE, API_NAMESPACE);
+
+       nRet = ma_initialize();
+       if(!g_bMultiAssistant || !g_bMicrophone)
+       {
+               if(nRet != MA_ERROR_NOT_SUPPORTED)
+               {
+                       FPRINTF("[Line : %d][%s] Feature mismatch.\\n", __LINE__, API_NAMESPACE);
+                       g_bIsFeatureMismatched = true;
+                       return;
+               }
+               else
+               {
+                       g_bFeatureNotSupported = true;
+                       return;
+               }
+       }
+       if (nRet != MA_ERROR_NONE)
+               g_bMAInit = false;
+
+       return;
+}
+
+/**
+* @testcase                    ITs_ma_cleanup
+* @author              SRID(priya.kohli)
+* @reviewer            SRID(awadhesh1.s)
+* @type                                auto
+* @since_tizen                         5.0
+* @description                 NA
+* @scenario                            Called after each test, Closes the connection and releases all its resources
+* @apicovered                  NA
+* @passcase                            NA
+* @failcase                            NA
+* @precondition                        NA
+* @postcondition               NA
+*/
+void ITs_ma_cleanup(void)
+{
+#if DEBUG
+       FPRINTF("[Line : %d][%s] TEST SUIT clean-up: ITs_Multi_Assistant_p\\n", __LINE__, API_NAMESPACE);
+#endif
+
+       int nRet = -1;
+       if(g_bMAInit)
+       {
+               nRet = ma_deinitialize();
+               PRINT_RESULT_NORETURN(nRet, MA_ERROR_NONE, "ma_deinitialize", MaGetError(nRet));
+       }
+}
+
+/**
+* @testcase                            ITc_ma_initialize_deinitialize_p
+* @since_tizen                         5.0
+* @author                              SRID(priya.kohli)
+* @reviewer                            SRID(awadhesh1.s)
+* @type                                        auto
+* @description                         Initializes and deinitializes multi-assistant client.
+* @scenario                            Initializes and deinitializes multi-assistant client.
+* @apicovered                          ma_initialize, ma_deinitialize
+* @passcase                            ma_initialize, ma_deinitialize returns 0
+* @failcase                            ma_initialize, ma_deinitialize returns 1
+* @precondition                                N/A
+* @postcondition                       If this function is called, the state will be #MA_STATE_INITIALIZED.
+* */
+int ITc_ma_initialize_deinitialize_p(void)
+{
+       START_TEST;
+       int nRet = -1;
+
+       nRet = ma_deinitialize();
+       PRINT_RESULT(nRet, MA_ERROR_NONE, "ma_deinitialize", MaGetError(nRet));
+
+       nRet = ma_initialize();
+       PRINT_RESULT(nRet, MA_ERROR_NONE, "ma_initialize", MaGetError(nRet));
+
+       return 0;
+}
+
+/**
+* @testcase                            ITc_ma_get_state_p
+* @since_tizen                         5.0
+* @author                              SRID(priya.kohli)
+* @reviewer                            SRID(awadhesh1.s)
+* @type                                        auto
+* @description                         Gets the current state of the multi-assistant client.
+* @scenario                            Gets the current state of the multi-assistant client.
+* @apicovered                          ma_get_state
+* @passcase                            ma_get_state returns 0
+* @failcase                            ma_get_state returns 1
+* @precondition                                N/A
+* @postcondition                       N/A
+* */
+int ITc_ma_get_state_p(void)
+{
+       START_TEST;
+       int nRet = -1;
+       ma_state_e eState = -1;
+
+       nRet = ma_get_state(&eState);
+       PRINT_RESULT(nRet, MA_ERROR_NONE, "ma_get_state", MaGetError(nRet));
+       if( eState < MA_STATE_NONE || eState > MA_STATE_READY )
+       {
+               FPRINTF("[Line : %d][%s] %s failed. eState = %d\\n", __LINE__, API_NAMESPACE, "ma_get_state", eState);
+               return 1;
+       }
+
+       return 0;
+}
+
+/**
+* @testcase                            ITc_ma_get_current_language_p
+* @since_tizen                         5.0
+* @author                              SRID(priya.kohli)
+* @reviewer                            SRID(awadhesh1.s)
+* @type                                        auto
+* @description                         Gets the current language of multi-assistant client.
+* @scenario                            Gets the current language of multi-assistant client.
+* @apicovered                          ma_get_current_language
+* @passcase                            ma_get_current_language returns 0
+* @failcase                            ma_get_current_language returns 1
+* @precondition                                N/A
+* @postcondition                       N/A
+* */
+int ITc_ma_get_current_language_p(void)
+{
+       START_TEST;
+       char *pszGetCurrentLanguage = NULL;
+       int nRet = -1;
+
+       nRet = ma_get_current_language(&pszGetCurrentLanguage);
+       PRINT_RESULT(nRet, MA_ERROR_NONE, "ma_get_current_language", MaGetError(nRet));
+       CHECK_HANDLE(pszGetCurrentLanguage, "ma_get_current_language");
+
+       FREE_MEMORY(pszGetCurrentLanguage);
+
+       return 0;
+}
+
+/**
+* @testcase                            ITc_ma_get_recording_audio_format_p
+* @since_tizen                         5.0
+* @author                              SRID(priya.kohli)
+* @reviewer                            SRID(awadhesh1.s)
+* @type                                        auto
+* @description                         Gets the recording audio format.
+* @scenario                            Gets the recording audio format.
+* @apicovered                          ma_get_recording_audio_format
+* @passcase                            ma_get_recording_audio_format returns 0
+* @failcase                            ma_get_recording_audio_format returns 1
+* @precondition                                N/A
+* @postcondition                       N/A
+* */
+int ITc_ma_get_recording_audio_format_p(void)
+{
+       START_TEST;
+
+       int nRate = -1;
+       int nRet = -1;
+       ma_audio_channel_e eChannel = -1;
+       ma_audio_type_e eAudioType = -1;
+       void* user_data = NULL;
+       g_CallBackHit = false;
+
+       nRet = ma_set_state_changed_cb(MaStateChangedCb, user_data);
+       PRINT_RESULT(nRet, MA_ERROR_NONE, "ma_set_state_changed_cb", MaGetError(nRet));
+
+       nRet = ma_prepare();
+       PRINT_RESULT_CLEANUP(nRet, MA_ERROR_NONE, "ma_prepare", MaGetError(nRet), ma_unset_state_changed_cb());
+       WAIT_FOR_CALLBACK(MA_STATE_READY);
+       PRINT_RESULT_CLEANUP(g_CallBackHit, true, "MaStateChangedCb", "Callback not invoked", ma_unprepare(); ma_unset_state_changed_cb());
+
+       nRet = ma_get_recording_audio_format(&nRate, &eChannel, &eAudioType);
+       PRINT_RESULT_CLEANUP(nRet, MA_ERROR_NONE, "ma_get_recording_audio_format", MaGetError(nRet), ma_unprepare(); ma_unset_state_changed_cb());
+       if( nRate < 0 )
+       {
+               FPRINTF("[Line : %d][%s] %s failed. nRate = %d\\n", __LINE__, API_NAMESPACE, "ma_get_recording_audio_format", nRate);
+               ma_unprepare();
+               ma_unset_state_changed_cb();
+               return 1;
+       }
+       if( eChannel < MA_AUDIO_CHANNEL_MONO || eChannel > MA_AUDIO_CHANNEL_STEREO )
+       {
+               FPRINTF("[Line : %d][%s] %s failed. eChannel = %d\\n", __LINE__, API_NAMESPACE, "ma_get_recording_audio_format", eChannel);
+               ma_unprepare();
+               ma_unset_state_changed_cb();
+               return 1;
+       }
+       if( eAudioType < MA_AUDIO_TYPE_PCM_S16_LE || eAudioType > MA_AUDIO_TYPE_PCM_U8 )
+       {
+               FPRINTF("[Line : %d][%s] %s failed. eAudioType = %d\\n", __LINE__, API_NAMESPACE, "ma_get_recording_audio_format", eAudioType);
+               ma_unprepare();
+               ma_unset_state_changed_cb();
+               return 1;
+       }
+
+       nRet = ma_unprepare();
+       PRINT_RESULT_NORETURN(nRet, MA_ERROR_NONE, "ma_unprepare", MaGetError(nRet));
+
+       nRet = ma_unset_state_changed_cb();
+       PRINT_RESULT_NORETURN(nRet, MA_ERROR_NONE, "ma_unset_state_changed_cb", MaGetError(nRet));
+
+       return 0;
+}
+
+/**
+* @testcase                            ITc_ma_prepare_unprepare_set_unset_state_changed_cb_p
+* @since_tizen                         5.0
+* @author                              SRID(priya.kohli)
+* @reviewer                            SRID(awadhesh1.s)
+* @type                                        auto
+* @description                         Prepares/unprepares multi-assistant client and sets and unsets a state changed callback.
+* @scenario                            Prepares/unprepares multi-assistant client and sets and unsets a state changed callback.
+* @apicovered                          ma_set_state_changed_cb, ma_unset_state_changed_cb, ma_prepare, ma_unprepare
+* @passcase                            ma_set_state_changed_cb, ma_unset_state_changed_cb returns, ma_prepare, ma_unprepare 0
+* @failcase                            either of ma_set_state_changed_cb, ma_unset_state_changed_cb, ma_prepare, ma_unprepare returns 1
+* @precondition                                N/A
+* @postcondition                       N/A
+* */
+int ITc_ma_prepare_unprepare_set_unset_state_changed_cb_p(void)
+{
+       START_TEST;
+
+       int nRet = -1;
+       void* user_data = NULL;
+       g_CallBackHit = false;
+
+       nRet = ma_set_state_changed_cb(MaStateChangedCb, user_data);
+       PRINT_RESULT(nRet, MA_ERROR_NONE, "ma_set_state_changed_cb", MaGetError(nRet));
+
+       nRet = ma_prepare();
+       PRINT_RESULT_CLEANUP(nRet, MA_ERROR_NONE, "ma_prepare", MaGetError(nRet), ma_unset_state_changed_cb());
+       WAIT_FOR_CALLBACK(MA_STATE_READY);
+       PRINT_RESULT_CLEANUP(g_CallBackHit, true, "MaStateChangedCb", "Callback not invoked", ma_unprepare();ma_unset_state_changed_cb());
+
+       nRet = ma_unprepare();
+       PRINT_RESULT_CLEANUP(nRet, MA_ERROR_NONE, "ma_unprepare", MaGetError(nRet), ma_unset_state_changed_cb());
+
+       nRet = ma_unset_state_changed_cb();
+       PRINT_RESULT(nRet, MA_ERROR_NONE, "ma_unset_state_changed_cb", MaGetError(nRet));
+
+       return 0;
+}
+
+/**
+* @testcase                            ITc_ma_set_unset_error_cb_p
+* @since_tizen                         5.0
+* @author                              SRID(priya.kohli)
+* @reviewer                            SRID(awadhesh1.s)
+* @type                                        auto
+* @description                         Sets and unsets an error callback.
+* @scenario                            Sets and unsets an error callback.
+* @apicovered                          ma_set_error_cb, ma_unset_error_cb
+* @passcase                            ma_set_error_cb, ma_unset_error_cb returns 0
+* @failcase                            ma_set_error_cb, ma_unset_error_cb returns 1
+* @precondition                                The state should be #MA_STATE_INITIALIZED.
+* @postcondition                       N/A
+* */
+int ITc_ma_set_unset_error_cb_p(void)
+{
+       START_TEST;
+
+       int nRet = -1;
+       void* user_data = NULL;
+
+       nRet = ma_set_error_cb(MaErrorCb, user_data);
+       PRINT_RESULT(nRet, MA_ERROR_NONE, "ma_set_error_cb", MaGetError(nRet));
+
+       nRet = ma_unset_error_cb();
+       PRINT_RESULT(nRet, MA_ERROR_NONE, "ma_unset_error_cb", MaGetError(nRet));
+
+       return 0;
+}
+
+/**
+* @testcase                            ITc_ma_set_unset_language_changed_cb_p
+* @since_tizen                         5.0
+* @author                              SRID(priya.kohli)
+* @reviewer                            SRID(awadhesh1.s)
+* @type                                        auto
+* @description                         Sets and unsets a language changed callback.
+* @scenario                            Sets and unsets a language changed callback.
+* @apicovered                          ma_set_language_changed_cb, ma_unset_language_changed_cb
+* @passcase                            ma_set_language_changed_cb, ma_unset_language_changed_cb returns 0
+* @failcase                            ma_set_language_changed_cb, ma_unset_language_changed_cb returns 1
+* @precondition                                The state should be #MA_STATE_INITIALIZED.
+* @postcondition                       N/A
+* */
+int ITc_ma_set_unset_language_changed_cb_p(void)
+{
+       START_TEST;
+
+       int nRet = -1;
+       void* user_data = NULL;
+
+       nRet = ma_set_language_changed_cb(MaLanguageChangedCb, user_data);
+       PRINT_RESULT(nRet, MA_ERROR_NONE, "ma_set_language_changed_cb", MaGetError(nRet));
+
+       nRet = ma_unset_language_changed_cb();
+       PRINT_RESULT(nRet, MA_ERROR_NONE, "ma_unset_language_changed_cb", MaGetError(nRet));
+
+       return 0;
+}
+
+/**
+* @testcase                            ITc_ma_set_unset_audio_streaming_cb_p
+* @since_tizen                         5.0
+* @author                              SRID(priya.kohli)
+* @reviewer                            SRID(awadhesh1.s)
+* @type                                        auto
+* @description                         Sets and unsets an audio streaming callback.
+* @scenario                            Sets and unsets an audio streaming callback.
+* @apicovered                          ma_set_audio_streaming_cb, ma_unset_audio_streaming_cb
+* @passcase                            ma_set_audio_streaming_cb, ma_unset_audio_streaming_cb returns 0
+* @failcase                            ma_set_audio_streaming_cb, ma_unset_audio_streaming_cb returns 1
+* @precondition                                The state should be #MA_STATE_INITIALIZED.
+* @postcondition                       N/A
+* */
+int ITc_ma_set_unset_audio_streaming_cb_p(void)
+{
+       START_TEST;
+
+       int nRet = -1;
+       void* user_data = NULL;
+
+       nRet = ma_set_audio_streaming_cb(MaAudioStreamingCb, user_data);
+       PRINT_RESULT(nRet, MA_ERROR_NONE, "ma_set_audio_streaming_cb", MaGetError(nRet));
+
+       nRet = ma_unset_audio_streaming_cb();
+       PRINT_RESULT(nRet, MA_ERROR_NONE, "ma_unset_audio_streaming_cb", MaGetError(nRet));
+
+       return 0;
+}
+
+/**
+* @testcase                            ITc_ma_send_asr_result_p
+* @since_tizen                         5.0
+* @author                              SRID(priya.kohli)
+* @reviewer                            SRID(awadhesh1.s)
+* @type                                        auto
+* @description                         Sends ASR(auto speech recognition) results to the multi-assistant service.
+* @scenario                            Sends ASR(auto speech recognition) results to the multi-assistant service.
+* @apicovered                          ma_send_asr_result
+* @passcase                            ma_send_asr_result returns 0
+* @failcase                            ma_send_asr_result returns 1
+* @precondition                                N/A
+* @postcondition                       N/A
+* */
+int ITc_ma_send_asr_result_p(void)
+{
+       START_TEST;
+
+       char *pszAsrResult = "Hello";
+       int nRet = -1;
+       void* user_data = NULL;
+       g_CallBackHit = false;
+
+       ma_asr_result_event_e eEvent[] = {
+               MA_ASR_RESULT_EVENT_PARTIAL_RESULT,
+               MA_ASR_RESULT_EVENT_FINAL_RESULT,
+               MA_ASR_RESULT_EVENT_ERROR,
+       };
+
+       nRet = ma_set_state_changed_cb(MaStateChangedCb, user_data);
+       PRINT_RESULT(nRet, MA_ERROR_NONE, "ma_set_state_changed_cb", MaGetError(nRet));
+
+       nRet = ma_prepare();
+       PRINT_RESULT_CLEANUP(nRet, MA_ERROR_NONE, "ma_prepare", MaGetError(nRet), ma_unset_state_changed_cb());
+       WAIT_FOR_CALLBACK(MA_STATE_READY);
+       PRINT_RESULT_CLEANUP(g_CallBackHit, true, "MaStateChangedCb", "Callback not invoked", ma_unprepare(); ma_unset_state_changed_cb());
+
+       int nEventSize = sizeof(eEvent)/sizeof(eEvent[0]);
+       for(int nEvent = 0; nEvent<nEventSize; nEvent++)
+       {
+               nRet = ma_send_asr_result(eEvent[nEvent], pszAsrResult);
+               PRINT_RESULT_CLEANUP(nRet, MA_ERROR_NONE, "ma_send_asr_result", MaGetError(nRet), ma_unprepare(); ma_unset_state_changed_cb());
+       }
+
+       nRet = ma_unprepare();
+       PRINT_RESULT_NORETURN(nRet, MA_ERROR_NONE, "ma_unprepare", MaGetError(nRet));
+
+       nRet = ma_unset_state_changed_cb();
+       PRINT_RESULT_NORETURN(nRet, MA_ERROR_NONE, "ma_unset_state_changed_cb", MaGetError(nRet));
+
+       return 0;
+}
+
+/**
+* @testcase                            ITc_ma_send_result_p
+* @since_tizen                         5.0
+* @author                              SRID(priya.kohli)
+* @reviewer                            SRID(awadhesh1.s)
+* @type                                        auto
+* @description                         Sends results to the multi-assistant service.
+* @scenario                            Sends results to the multi-assistant service.
+* @apicovered                          ma_send_result
+* @passcase                            ma_send_result returns 0
+* @failcase                            ma_send_result returns 1
+* @precondition                                N/A
+* @postcondition                       N/A
+* */
+int ITc_ma_send_result_p(void)
+{
+       START_TEST;
+
+       char *pszDisplayText = "display text";
+       char *pszUtteranceText = "utterance text";
+       char *pszResultJson = "json result";
+       int nRet = -1;
+       void* user_data = NULL;
+       g_CallBackHit = false;
+
+       nRet = ma_set_state_changed_cb(MaStateChangedCb, user_data);
+       PRINT_RESULT(nRet, MA_ERROR_NONE, "ma_set_state_changed_cb", MaGetError(nRet));
+
+       nRet = ma_prepare();
+       PRINT_RESULT_CLEANUP(nRet, MA_ERROR_NONE, "ma_prepare", MaGetError(nRet), ma_unset_state_changed_cb());
+       WAIT_FOR_CALLBACK(MA_STATE_READY);
+       PRINT_RESULT_CLEANUP(g_CallBackHit, true, "MaStateChangedCbf", "Callback not invoked", ma_unprepare(); ma_unset_state_changed_cb());
+
+       nRet = ma_send_result(pszDisplayText, pszUtteranceText, pszResultJson);
+       PRINT_RESULT_CLEANUP(nRet, MA_ERROR_NONE, "ma_send_result", MaGetError(nRet), ma_unprepare(); ma_unset_state_changed_cb());
+
+       nRet = ma_unprepare();
+       PRINT_RESULT_NORETURN(nRet, MA_ERROR_NONE, "ma_unprepare", MaGetError(nRet));
+
+       nRet = ma_unset_state_changed_cb();
+       PRINT_RESULT_NORETURN(nRet, MA_ERROR_NONE, "ma_unset_state_changed_cb", MaGetError(nRet));
+
+       return 0;
+}
diff --git a/src/itc/multi-assistant/tct-multi-assistant-native.c b/src/itc/multi-assistant/tct-multi-assistant-native.c
new file mode 100755 (executable)
index 0000000..8a0a984
--- /dev/null
@@ -0,0 +1,132 @@
+//
+// Copyright (c) 2018 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 <stdio.h>
+#include <string.h>
+#include "tct_common.h"
+#include <bundle.h>
+
+#ifdef MOBILE
+#include "tct-multi-assistant-native_mobile.h"
+#endif
+
+#ifdef WEARABLE
+#include "tct-multi-assistant-native_wearable.h"
+#endif
+
+#ifdef TV
+#include "tct-multi-assistant-native_tv.h"
+#endif
+
+#ifdef TIZENIOT
+#include "tct-multi-assistant-native_tizeniot.h"
+#endif //TIZENIOT
+
+#include <malloc.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+#include <glib.h>
+#include <stdbool.h>
+#include <app.h>
+#include <dlog.h>
+
+static bool app_create(void *data)
+{
+       return true;
+}
+
+static void app_control(app_control_h app_control, void *data)
+{
+       char* pszGetTCName = NULL;
+       int i=0, result=0, nRet=0;
+       nRet = app_control_get_extra_data(app_control, "testcase_name", &pszGetTCName);
+       if(nRet != APP_CONTROL_ERROR_NONE)
+       {
+               dlog_print(DLOG_ERROR, "NativeTCT", "[%s:%d] app_control_get_extra_data returns error = %d", __FUNCTION__, __LINE__, nRet);
+               PRINT_UTC_LOG("\\n[%s][Line : %d]Unable to fetch test case name: app_control_get_extra_data API call fails\\n", __FILE__, __LINE__);
+               PRINT_TC_RESULT("%d",1);
+               FREE_MEMORY_TC(pszGetTCName);
+               return;
+       }
+
+       dlog_print(DLOG_INFO, "NativeTCT", "[%s:%d] Executing TC Name = %s", __FUNCTION__, __LINE__, pszGetTCName);
+       for ( i = 0; tc_array[i].name; i++ )
+       {
+               if ( 0 == strncmp(pszGetTCName, tc_array[i].name, strlen(pszGetTCName)) )
+               {
+                       dlog_print(DLOG_INFO, "NativeTCT", "%s : Startup begin", pszGetTCName);
+                       if ( tc_array[i].startup )
+                       {
+                               tc_array[i].startup();
+                       }
+                       dlog_print(DLOG_INFO, "NativeTCT", "%s : Startup end", pszGetTCName);
+
+                       dlog_print(DLOG_INFO, "NativeTCT", "%s : Body begin", pszGetTCName);
+                       result = tc_array[i].function();
+                       dlog_print(DLOG_INFO, "NativeTCT", "%s returns value = %d", pszGetTCName, result);
+                       dlog_print(DLOG_INFO, "NativeTCT", "%s : Body end", pszGetTCName);
+
+                       dlog_print(DLOG_INFO, "NativeTCT", "%s : Cleanup begin", pszGetTCName);
+                       if ( tc_array[i].cleanup )
+                       {
+                               tc_array[i].cleanup();
+                       }
+                       dlog_print(DLOG_INFO, "NativeTCT", "%s : Cleanup end", pszGetTCName);
+                       PRINT_TC_RESULT("%d",result);
+                       FREE_MEMORY_TC(pszGetTCName);
+                       return;
+               }
+       }
+
+       dlog_print(DLOG_ERROR, "NativeTCT", "[%s:%d] Unable to execute %s : Unknown Test Case Name", __FUNCTION__, __LINE__, pszGetTCName);
+       PRINT_UTC_LOG("\\n[%s][Line : %d]Unable to execute %s : Unknown Test Case Name\\n", __FILE__, __LINE__, pszGetTCName);
+       PRINT_TC_RESULT("%d",1);
+       FREE_MEMORY_TC(pszGetTCName);
+       return;
+}
+
+static void app_terminate(void *data)
+{
+       dlog_print(DLOG_INFO, "NativeTCT", "[%s:%d] Application Package is now Terminating", __FUNCTION__, __LINE__);
+}
+
+int main(int argc, char *argv[])
+{
+       int ret = 0;
+
+       ui_app_lifecycle_callback_s event_callback = {0,};
+       event_callback.create = app_create;
+       event_callback.terminate = app_terminate;
+       event_callback.app_control = app_control;
+
+       //setting gcda file location for coverage
+       setenv("GCOV_PREFIX","/tmp",1);
+       dlog_print(DLOG_INFO, "NativeTCT", "[%s:%d] Coverage *.gcda File location set to /tmp/home/abuild/rpmbuild/BUILD/ ", __FUNCTION__, __LINE__);
+
+       dlog_print(DLOG_INFO, "NativeTCT", "[%s:%d] Application Main Function is Invoked", __FUNCTION__, __LINE__);
+       ret = ui_app_main(argc, argv, &event_callback, NULL);
+       if (ret != APP_ERROR_NONE)
+       {
+               dlog_print(DLOG_ERROR, "NativeTCT", "Application ui_app_main call gets failed. err = %d", ret);
+               PRINT_UTC_LOG("\\n[%s][Line : %d]Application ui_app_main call gets failed. err = %d\\n", __FILE__, __LINE__, ret);
+               PRINT_TC_RESULT("%d",1);
+               return ret;
+       }
+
+       dlog_print(DLOG_INFO, "NativeTCT", "[%s:%d] Application Package is Terminated", __FUNCTION__, __LINE__);
+       return ret;
+}
diff --git a/src/itc/multi-assistant/tct-multi-assistant-native_mobile.h b/src/itc/multi-assistant/tct-multi-assistant-native_mobile.h
new file mode 100644 (file)
index 0000000..b63abf9
--- /dev/null
@@ -0,0 +1,50 @@
+//
+// Copyright (c) 2014 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.
+//
+#ifndef __TCT_MULTI-ASSISTANT-NATIVE_H__
+#define __TCT_MULTI-ASSISTANT-NATIVE_H__
+
+#include "testcase.h"
+#include "tct_common.h"
+
+extern void ITs_ma_startup(void);
+extern void ITs_ma_cleanup(void);
+
+extern int ITc_ma_initialize_deinitialize_p(void);
+extern int ITc_ma_get_state_p(void);
+extern int ITc_ma_get_current_language_p(void);
+extern int ITc_ma_get_recording_audio_format_p(void);
+extern int ITc_ma_prepare_unprepare_set_unset_state_changed_cb_p(void);
+extern int ITc_ma_set_unset_error_cb_p(void);
+extern int ITc_ma_set_unset_language_changed_cb_p(void);
+extern int ITc_ma_set_unset_audio_streaming_cb_p(void);
+extern int ITc_ma_send_asr_result_p(void);
+extern int ITc_ma_send_result_p(void);
+
+testcase tc_array[] = {
+       {"ITc_ma_initialize_deinitialize_p",ITc_ma_initialize_deinitialize_p,ITs_ma_startup,ITs_ma_cleanup},
+       {"ITc_ma_get_state_p",ITc_ma_get_state_p,ITs_ma_startup,ITs_ma_cleanup},
+       {"ITc_ma_get_current_language_p",ITc_ma_get_current_language_p,ITs_ma_startup,ITs_ma_cleanup},
+       {"ITc_ma_get_recording_audio_format_p",ITc_ma_get_recording_audio_format_p,ITs_ma_startup,ITs_ma_cleanup},
+       {"ITc_ma_prepare_unprepare_set_unset_state_changed_cb_p",ITc_ma_prepare_unprepare_set_unset_state_changed_cb_p,ITs_ma_startup,ITs_ma_cleanup},
+       {"ITc_ma_set_unset_error_cb_p",ITc_ma_set_unset_error_cb_p,ITs_ma_startup,ITs_ma_cleanup},
+       {"ITc_ma_set_unset_language_changed_cb_p",ITc_ma_set_unset_language_changed_cb_p,ITs_ma_startup,ITs_ma_cleanup},
+       {"ITc_ma_set_unset_audio_streaming_cb_p",ITc_ma_set_unset_audio_streaming_cb_p,ITs_ma_startup,ITs_ma_cleanup},
+       {"ITc_ma_send_asr_result_p",ITc_ma_send_asr_result_p,ITs_ma_startup,ITs_ma_cleanup},
+       {"ITc_ma_send_result_p",ITc_ma_send_result_p,ITs_ma_startup,ITs_ma_cleanup},
+       {NULL, NULL}
+};
+
+#endif // __TCT_MULTI-ASSISTANT-NATIVE_H__
diff --git a/src/itc/multi-assistant/tct-multi-assistant-native_tizeniot.h b/src/itc/multi-assistant/tct-multi-assistant-native_tizeniot.h
new file mode 100644 (file)
index 0000000..b63abf9
--- /dev/null
@@ -0,0 +1,50 @@
+//
+// Copyright (c) 2014 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.
+//
+#ifndef __TCT_MULTI-ASSISTANT-NATIVE_H__
+#define __TCT_MULTI-ASSISTANT-NATIVE_H__
+
+#include "testcase.h"
+#include "tct_common.h"
+
+extern void ITs_ma_startup(void);
+extern void ITs_ma_cleanup(void);
+
+extern int ITc_ma_initialize_deinitialize_p(void);
+extern int ITc_ma_get_state_p(void);
+extern int ITc_ma_get_current_language_p(void);
+extern int ITc_ma_get_recording_audio_format_p(void);
+extern int ITc_ma_prepare_unprepare_set_unset_state_changed_cb_p(void);
+extern int ITc_ma_set_unset_error_cb_p(void);
+extern int ITc_ma_set_unset_language_changed_cb_p(void);
+extern int ITc_ma_set_unset_audio_streaming_cb_p(void);
+extern int ITc_ma_send_asr_result_p(void);
+extern int ITc_ma_send_result_p(void);
+
+testcase tc_array[] = {
+       {"ITc_ma_initialize_deinitialize_p",ITc_ma_initialize_deinitialize_p,ITs_ma_startup,ITs_ma_cleanup},
+       {"ITc_ma_get_state_p",ITc_ma_get_state_p,ITs_ma_startup,ITs_ma_cleanup},
+       {"ITc_ma_get_current_language_p",ITc_ma_get_current_language_p,ITs_ma_startup,ITs_ma_cleanup},
+       {"ITc_ma_get_recording_audio_format_p",ITc_ma_get_recording_audio_format_p,ITs_ma_startup,ITs_ma_cleanup},
+       {"ITc_ma_prepare_unprepare_set_unset_state_changed_cb_p",ITc_ma_prepare_unprepare_set_unset_state_changed_cb_p,ITs_ma_startup,ITs_ma_cleanup},
+       {"ITc_ma_set_unset_error_cb_p",ITc_ma_set_unset_error_cb_p,ITs_ma_startup,ITs_ma_cleanup},
+       {"ITc_ma_set_unset_language_changed_cb_p",ITc_ma_set_unset_language_changed_cb_p,ITs_ma_startup,ITs_ma_cleanup},
+       {"ITc_ma_set_unset_audio_streaming_cb_p",ITc_ma_set_unset_audio_streaming_cb_p,ITs_ma_startup,ITs_ma_cleanup},
+       {"ITc_ma_send_asr_result_p",ITc_ma_send_asr_result_p,ITs_ma_startup,ITs_ma_cleanup},
+       {"ITc_ma_send_result_p",ITc_ma_send_result_p,ITs_ma_startup,ITs_ma_cleanup},
+       {NULL, NULL}
+};
+
+#endif // __TCT_MULTI-ASSISTANT-NATIVE_H__
diff --git a/src/itc/multi-assistant/tct-multi-assistant-native_wearable.h b/src/itc/multi-assistant/tct-multi-assistant-native_wearable.h
new file mode 100644 (file)
index 0000000..b63abf9
--- /dev/null
@@ -0,0 +1,50 @@
+//
+// Copyright (c) 2014 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.
+//
+#ifndef __TCT_MULTI-ASSISTANT-NATIVE_H__
+#define __TCT_MULTI-ASSISTANT-NATIVE_H__
+
+#include "testcase.h"
+#include "tct_common.h"
+
+extern void ITs_ma_startup(void);
+extern void ITs_ma_cleanup(void);
+
+extern int ITc_ma_initialize_deinitialize_p(void);
+extern int ITc_ma_get_state_p(void);
+extern int ITc_ma_get_current_language_p(void);
+extern int ITc_ma_get_recording_audio_format_p(void);
+extern int ITc_ma_prepare_unprepare_set_unset_state_changed_cb_p(void);
+extern int ITc_ma_set_unset_error_cb_p(void);
+extern int ITc_ma_set_unset_language_changed_cb_p(void);
+extern int ITc_ma_set_unset_audio_streaming_cb_p(void);
+extern int ITc_ma_send_asr_result_p(void);
+extern int ITc_ma_send_result_p(void);
+
+testcase tc_array[] = {
+       {"ITc_ma_initialize_deinitialize_p",ITc_ma_initialize_deinitialize_p,ITs_ma_startup,ITs_ma_cleanup},
+       {"ITc_ma_get_state_p",ITc_ma_get_state_p,ITs_ma_startup,ITs_ma_cleanup},
+       {"ITc_ma_get_current_language_p",ITc_ma_get_current_language_p,ITs_ma_startup,ITs_ma_cleanup},
+       {"ITc_ma_get_recording_audio_format_p",ITc_ma_get_recording_audio_format_p,ITs_ma_startup,ITs_ma_cleanup},
+       {"ITc_ma_prepare_unprepare_set_unset_state_changed_cb_p",ITc_ma_prepare_unprepare_set_unset_state_changed_cb_p,ITs_ma_startup,ITs_ma_cleanup},
+       {"ITc_ma_set_unset_error_cb_p",ITc_ma_set_unset_error_cb_p,ITs_ma_startup,ITs_ma_cleanup},
+       {"ITc_ma_set_unset_language_changed_cb_p",ITc_ma_set_unset_language_changed_cb_p,ITs_ma_startup,ITs_ma_cleanup},
+       {"ITc_ma_set_unset_audio_streaming_cb_p",ITc_ma_set_unset_audio_streaming_cb_p,ITs_ma_startup,ITs_ma_cleanup},
+       {"ITc_ma_send_asr_result_p",ITc_ma_send_asr_result_p,ITs_ma_startup,ITs_ma_cleanup},
+       {"ITc_ma_send_result_p",ITc_ma_send_result_p,ITs_ma_startup,ITs_ma_cleanup},
+       {NULL, NULL}
+};
+
+#endif // __TCT_MULTI-ASSISTANT-NATIVE_H__