[ITC][tts][ACR-1716] Added two new TC for newly added APIs 91/280391/4
authorAnkit Srivastava <ankit.sri1@samsung.com>
Mon, 29 Aug 2022 10:24:26 +0000 (15:54 +0530)
committershobhit verma <shobhit.v@samsung.com>
Tue, 30 Aug 2022 10:36:44 +0000 (10:36 +0000)
Change-Id: I3337edfad5a0027c32be8f3a7f7cbb09024e02dc
Signed-off-by: Ankit Srivastava <ankit.sri1@samsung.com>
src/itc/tts/ITs-tts-common.h
src/itc/tts/ITs-tts.c [changed mode: 0755->0644]
src/itc/tts/tct-tts-native_mobile.h
src/itc/tts/tct-tts-native_tizeniot.h
src/itc/tts/tct-tts-native_tv.h [changed mode: 0755->0644]
src/itc/tts/tct-tts-native_wearable.h

index 434363a6183033b849eb8e0e7bebfd150568a0dd..07bb1befa4d65a46262c01019e10bb9b7ecdbf14 100644 (file)
@@ -44,6 +44,7 @@ int g_nUixUttIdCmp;
 int g_nUixUttId;
 const char* g_pszUixLanguage;
 tts_state_e g_eCurrent_state;
+tts_service_state_e g_eCurrent_service_state;
 int g_eUixVoiceType;
 bool g_bTtsCreation;
 bool g_bTtsSupportedVoiceCallback;
old mode 100755 (executable)
new mode 100644 (file)
index 0cd6638..56de6ab
@@ -41,6 +41,23 @@ static bool TtsIsStateChanged(tts_state_e state, int sleep_time)
        return true;
 }
 
+static bool TtsIsServiceStateChanged(tts_service_state_e service_state, int sleep_time)
+{
+       int max_count = sleep_time * CONSTANT;
+       int count = 0;
+       while (max_count > count && service_state != g_eCurrent_service_state) {
+               ecore_main_loop_iterate();
+               usleep(TIMEOUT);
+               count++;
+       }
+
+       if (service_state != g_eCurrent_service_state) {
+               return false;
+       }
+
+       return true;
+}
+
 /**
 * @function            ITs_tts_startup
 * @description         Called before each test, created tts handle
@@ -310,6 +327,23 @@ static void TtsScreenReaderChangedCallback(tts_h tts, const char* engine_id, con
 #endif
        return;
 }
+/**
+* @function                                    TtsServiceStateChangedCallback
+* @description                                         callback is called when the option of screen reader is changed.
+* @parameter[in]                               tts, previous state, current state, user data
+* @return                                      true or false
+*/
+static void TtsServiceStateChangedCallback(tts_h tts, tts_service_state_e previous, tts_service_state_e current, void* user_data)
+{
+#if DEBUG
+       FPRINTF("[Line : %d][%s] TtsScreenReaderChangedCallback callback is called. \\n", __LINE__, API_NAMESPACE);
+#endif
+       g_bTtsStateChangedCallback = true;
+       g_CallBackValue = true;
+       g_eCurrent_service_state = current;
+
+       return;
+}
 
 /***************************************************************CallBack End************************************/
 
@@ -1482,5 +1516,250 @@ int ITc_tts_set_unset_screen_reader_changed_cb_p(void)
        return 0;
 }
 
+//& type: auto
+//& purpose: To detect test whether state is gotten properly when client requests to play.
+/**
+* @testcase                            ITc_tts_get_service_state_p
+* @since_tizen                                 7.0
+* @author                      SRID(ankit.sri1)
+* @reviewer                    SRID(shobhit.v)
+* @type                                        auto
+* @scenario                                    Set service state changed through callback, prepare state using add text using tts_prepare(), tts_add_text(), play the text using tts_play(), stop the text using tts_stop(), unprepare state using tts_unprepare()
+* @apicovered                          tts_set_service_state_changed_cb, tts_prepare, tts_add_text, tts_play, tts_stop, tts_unset_service_state_changed_cb, tts_unprepare
+* @passcase                                    if API is successful
+* @failcase                                    if API is not successful
+* @precondition                                NA
+* @postcondition                       NA
+*/
+int ITc_tts_get_service_state_p(void)
+{
+       START_TEST;
+
+       if (TtsSetStateChangedCallBacks(TtsStateChangedCallback) == 1)
+       {
+               FPRINTF("[Line: %d][%s] TtsSetStateChangedCallBacks failed\\n", __LINE__, API_NAMESPACE);
+               return 1;
+       }
+       tts_service_state_e state;
+
+       int nRet = tts_set_service_state_changed_cb(g_pstTts, TtsServiceStateChangedCallback, NULL);
+       PRINT_RESULT_CLEANUP(TTS_ERROR_NONE, nRet, "tts_set_service_state_changed_cb", TtsGetError(nRet), TtsUnSetStateChangedCallBacks());
+
+       g_bTtsStateChangedCallback = false;
+
+       nRet = tts_prepare(g_pstTts);
+       PRINT_RESULT_CLEANUP(TTS_ERROR_NONE, nRet, "tts_prepare", TtsGetError(nRet), TtsUnSetStateChangedCallBacks());
+
+       if (TtsIsStateChanged(TTS_STATE_READY, SLEEP_TIME) == false) {
+               FPRINTF("[Line : %d][%s] TtsIsStateChanged failed \\n", __LINE__, API_NAMESPACE);
+               tts_unprepare(g_pstTts);
+               TtsUnSetStateChangedCallBacks();
+               return 1;
+       }
+
+       if (!g_bTtsStateChangedCallback)
+       {
+               FPRINTF("[Line : %d][%s] tts_set_state_changed_cb failed, error returned = callback not invoked\\n \\n", __LINE__, API_NAMESPACE);
+               tts_unprepare(g_pstTts);
+               TtsUnSetStateChangedCallBacks();
+               return 1;
+       }
+
+       if (!g_CallBackValue)
+       {
+               FPRINTF("[Line : %d][%s] Callback input values are invalid \n", __LINE__, API_NAMESPACE);
+               tts_unprepare(g_pstTts);
+               TtsUnSetStateChangedCallBacks();
+               return 1;
+       }
+
+       //Target API
+       nRet = tts_get_service_state(g_pstTts, &state);
+       PRINT_RESULT_CLEANUP(TTS_ERROR_NONE, nRet, "tts_get_service_state", TtsGetError(nRet), TtsUnSetStateChangedCallBacks(); tts_unprepare(g_pstTts));
+
+       if (state != TTS_SERVICE_STATE_READY)
+       {
+               FPRINTF("[Line : %d][%s] get state is not matched \\n", __LINE__, API_NAMESPACE);
+               tts_unprepare(g_pstTts);
+               TtsUnSetStateChangedCallBacks();
+               return 1;
+       }
+
+       int nGetUtteranceId = 0;
+       int eGetvoicetype;
+       char* pszGetLanguage = NULL;
+
+       nRet = tts_get_default_voice(g_pstTts, &pszGetLanguage, &eGetvoicetype);
+       PRINT_RESULT_CLEANUP(TTS_ERROR_NONE, nRet, "tts_get_default_voice", TtsGetError(nRet), TtsUnSetStateChangedCallBacks(); tts_unprepare(g_pstTts); FREE_MEMORY(pszGetLanguage));
+       CHECK_HANDLE_CLEANUP(pszGetLanguage, "tts_get_default_voice", TtsUnSetStateChangedCallBacks(); tts_unprepare(g_pstTts); FREE_MEMORY(pszGetLanguage));
+
+       if (eGetvoicetype<0 || eGetvoicetype>3)
+       {
+               FPRINTF("[Line: %d][%s] tts_get_default_voice returned incorrect value of voice type.\\n", __LINE__, API_NAMESPACE);
+               FREE_MEMORY(pszGetLanguage);
+               tts_unprepare(g_pstTts);
+               TtsUnSetStateChangedCallBacks();
+               return 1;
+       }
+
+       nRet = tts_add_text(g_pstTts, INPUT_TEXT, pszGetLanguage, eGetvoicetype, TTS_SPEED_AUTO, &nGetUtteranceId);
+       PRINT_RESULT_CLEANUP(TTS_ERROR_NONE, nRet, "tts_add_text", TtsGetError(nRet), TtsUnSetStateChangedCallBacks(); tts_unprepare(g_pstTts); FREE_MEMORY(pszGetLanguage));
+
+       nRet = tts_play(g_pstTts);
+       PRINT_RESULT_CLEANUP(TTS_ERROR_NONE, nRet, "tts_play", TtsGetError(nRet), TtsUnSetStateChangedCallBacks(); tts_unprepare(g_pstTts); FREE_MEMORY(pszGetLanguage));
+
+
+       //Target API
+       nRet = tts_get_service_state(g_pstTts, &state);
+       PRINT_RESULT_CLEANUP(TTS_ERROR_NONE, nRet, "tts_get_service_state", TtsGetError(nRet), TtsUnSetStateChangedCallBacks(); tts_unprepare(g_pstTts); FREE_MEMORY(pszGetLanguage));
+
+       if (state != TTS_SERVICE_STATE_SYNTHESIZING)
+       {
+               FPRINTF("[Line : %d][%s] get state is not matched \\n", __LINE__, API_NAMESPACE);
+               FREE_MEMORY(pszGetLanguage);
+               tts_unprepare(g_pstTts);
+               TtsUnSetStateChangedCallBacks();
+               return 1;
+       }
+
+       if (TtsIsServiceStateChanged(TTS_SERVICE_STATE_PLAYING, SLEEP_TIME) == false) {
+               FPRINTF("[Line : %d][%s] TtsIsStateChanged failed \\n", __LINE__, API_NAMESPACE);
+               FREE_MEMORY(pszGetLanguage);
+               tts_unprepare(g_pstTts);
+               TtsUnSetStateChangedCallBacks();
+               return 1;
+       }
+
+       //Target API
+       nRet = tts_get_service_state(g_pstTts, &state);
+       PRINT_RESULT_CLEANUP(TTS_ERROR_NONE, nRet, "tts_get_service_state", TtsGetError(nRet), TtsUnSetStateChangedCallBacks(); tts_unprepare(g_pstTts); FREE_MEMORY(pszGetLanguage));
+
+       if (state != TTS_SERVICE_STATE_PLAYING)
+       {
+               FPRINTF("[Line : %d][%s] get state is not matched \\n", __LINE__, API_NAMESPACE);
+               FREE_MEMORY(pszGetLanguage);
+               tts_unprepare(g_pstTts);
+               TtsUnSetStateChangedCallBacks();
+               return 1;
+       }
+
+       nRet = tts_stop(g_pstTts);
+       PRINT_RESULT_CLEANUP(TTS_ERROR_NONE, nRet, "tts_stop", TtsGetError(nRet), TtsUnSetStateChangedCallBacks(); tts_unprepare(g_pstTts); FREE_MEMORY(pszGetLanguage));
+
+       FREE_MEMORY(pszGetLanguage);
+       TtsUnSetStateChangedCallBacks();
+
+       nRet = tts_unprepare(g_pstTts);
+       PRINT_RESULT_NORETURN(TTS_ERROR_NONE, nRet, "tts_unprepare", TtsGetError(nRet));
+       sleep(1);
+       return 0;
+}
+
+//& type: auto
+//& purpose: To test whether service_state_changed callback function is set and unset properly.
+/**
+* @testcase                            ITc_tts_set_unset_service_state_changed_cb_p
+* @since_tizen                                 7.0
+* @author                      SRID(ankit.sri1)
+* @reviewer                    SRID(shobhit.v)
+* @type                                        auto
+* @scenario                                    Set service state changed through callback, prepare state using add text using tts_prepare(), tts_add_text(), play the text using tts_play(), stop the text using tts_stop(), unset service state changed, unprepare state using tts_unprepare()
+* @apicovered                          tts_set_service_state_changed_cb, tts_prepare, tts_add_text, tts_play, tts_stop, tts_unset_service_state_changed_cb, tts_unprepare
+* @passcase                                    if all APIs are successful
+* @failcase                                    if API is not successful
+* @precondition                                NA
+* @postcondition                       NA
+*/
+int ITc_tts_set_unset_service_state_changed_cb_p(void)
+{
+       START_TEST;
+
+       if (TtsSetStateChangedCallBacks(TtsStateChangedCallback) == 1)
+       {
+               FPRINTF("[Line: %d][%s] TtsSetStateChangedCallBacks failed\\n", __LINE__, API_NAMESPACE);
+               return 1;
+       }
+
+       //Target API
+       int nRet = tts_set_service_state_changed_cb(g_pstTts, TtsServiceStateChangedCallback, NULL);
+       PRINT_RESULT_CLEANUP(TTS_ERROR_NONE, nRet, "tts_set_service_state_changed_cb", TtsGetError(nRet), TtsUnSetStateChangedCallBacks());
+
+       g_bTtsStateChangedCallback = false;
+
+       nRet = tts_prepare(g_pstTts);
+       PRINT_RESULT_CLEANUP(TTS_ERROR_NONE, nRet, "tts_prepare", TtsGetError(nRet), tts_unset_service_state_changed_cb(g_pstTts); TtsUnSetStateChangedCallBacks());
+
+
+       if (TtsIsStateChanged(TTS_STATE_READY, SLEEP_TIME) == false) {
+               FPRINTF("[Line : %d][%s] TtsIsStateChanged failed \\n", __LINE__, API_NAMESPACE);
+               tts_unprepare(g_pstTts);
+               TtsUnSetStateChangedCallBacks();
+               return 1;
+       }
+
+       if (!g_bTtsStateChangedCallback)
+       {
+               FPRINTF("[Line : %d][%s] tts_set_state_changed_cb failed, error returned = callback not invoked\\n \\n", __LINE__, API_NAMESPACE);
+               tts_unprepare(g_pstTts);
+               TtsUnSetStateChangedCallBacks();
+               return 1;
+       }
+
+       if (!g_CallBackValue)
+       {
+               FPRINTF("[Line : %d][%s] Callback input values are invalid \n", __LINE__, API_NAMESPACE);
+               tts_unprepare(g_pstTts);
+               TtsUnSetStateChangedCallBacks();
+               return 1;
+       }
+
+       int nGetUtteranceId = 0;
+       int eGetvoicetype;
+       char* pszGetLanguage = NULL;
+
+       nRet = tts_get_default_voice(g_pstTts, &pszGetLanguage, &eGetvoicetype);
+       PRINT_RESULT_CLEANUP(TTS_ERROR_NONE, nRet, "tts_get_default_voice", TtsGetError(nRet), tts_unprepare(g_pstTts); FREE_MEMORY(pszGetLanguage); tts_unset_service_state_changed_cb(g_pstTts); TtsUnSetStateChangedCallBacks());
+       CHECK_HANDLE_CLEANUP(pszGetLanguage, "tts_get_default_voice", tts_unprepare(g_pstTts); FREE_MEMORY(pszGetLanguage); tts_unset_service_state_changed_cb(g_pstTts); TtsUnSetStateChangedCallBacks());
+       if (eGetvoicetype<0 || eGetvoicetype>3)
+       {
+               FPRINTF("[Line: %d][%s] tts_get_default_voice returned incorrect value of voice type.\\n", __LINE__, API_NAMESPACE);
+               FREE_MEMORY(pszGetLanguage);
+               tts_unprepare(g_pstTts);
+               TtsUnSetStateChangedCallBacks();
+               return 1;
+       }
+
+       nRet = tts_add_text(g_pstTts, INPUT_TEXT, pszGetLanguage, eGetvoicetype, TTS_SPEED_AUTO, &nGetUtteranceId);
+       PRINT_RESULT_CLEANUP(TTS_ERROR_NONE, nRet, "tts_add_text", TtsGetError(nRet), tts_unprepare(g_pstTts); FREE_MEMORY(pszGetLanguage); tts_unset_service_state_changed_cb(g_pstTts); TtsUnSetStateChangedCallBacks());
+
+       nRet = tts_play(g_pstTts);
+       PRINT_RESULT_CLEANUP(TTS_ERROR_NONE, nRet, "tts_play", TtsGetError(nRet), tts_unprepare(g_pstTts); FREE_MEMORY(pszGetLanguage); tts_unset_service_state_changed_cb(g_pstTts); TtsUnSetStateChangedCallBacks());
+
+       if (TtsIsServiceStateChanged(TTS_SERVICE_STATE_SYNTHESIZING, SLEEP_TIME) == false) {
+               FPRINTF("[Line : %d][%s] TtsIsStateChanged failed \\n", __LINE__, API_NAMESPACE);
+               FREE_MEMORY(pszGetLanguage);
+               tts_unprepare(g_pstTts);
+               TtsUnSetStateChangedCallBacks();
+               return 1;
+       }
+
+       nRet = tts_stop(g_pstTts);
+       PRINT_RESULT_CLEANUP(TTS_ERROR_NONE, nRet, "tts_stop", TtsGetError(nRet), tts_unprepare(g_pstTts); FREE_MEMORY(pszGetLanguage); tts_unset_service_state_changed_cb(g_pstTts); TtsUnSetStateChangedCallBacks());
+
+       FREE_MEMORY(pszGetLanguage);
+
+       nRet = tts_unprepare(g_pstTts);
+       PRINT_RESULT_CLEANUP(TTS_ERROR_NONE, nRet, "tts_unprepare", TtsGetError(nRet), tts_unset_service_state_changed_cb(g_pstTts); TtsUnSetStateChangedCallBacks());
+
+       //Target API
+       nRet = tts_unset_service_state_changed_cb(g_pstTts);
+       PRINT_RESULT_CLEANUP(TTS_ERROR_NONE, nRet, "tts_unset_service_state_changed_cb", TtsGetError(nRet), TtsUnSetStateChangedCallBacks());
+
+       TtsUnSetStateChangedCallBacks();
+
+       sleep(1);
+       return 0;
+}
+
 /** @} */ 
-/** @} */ 
+/** @} */
index 9f5abd5be54540c04437bc27d298922f0f30478f..c87f523ba47eac590c0d298088f2db489d11bfcb 100644 (file)
@@ -53,6 +53,8 @@ extern int ITc_tts_prepare_sync_p(void);
 extern int ITc_ttse_terminate_p(void);
 extern int ITc_ttse_set_activated_mode_changed_cb_p(void);
 extern int ITc_ttse_get_activated_mode_p(void);
+extern int ITc_tts_get_service_state_p(void);
+extern int ITc_tts_set_unset_service_state_changed_cb_p(void);
 
 testcase tc_array[] = {
        {"ITc_tts_create_destroy_p",ITc_tts_create_destroy_p,ITs_tts_startup,ITs_tts_cleanup},
@@ -84,6 +86,8 @@ testcase tc_array[] = {
        {"ITc_ttse_terminate_p",ITc_ttse_terminate_p,ITs_ttse_startup,ITs_ttse_cleanup},
        {"ITc_ttse_set_activated_mode_changed_cb_p",ITc_ttse_set_activated_mode_changed_cb_p,ITs_ttse_startup,ITs_ttse_cleanup},
        {"ITc_ttse_get_activated_mode_p",ITc_ttse_get_activated_mode_p,ITs_ttse_startup,ITs_ttse_cleanup},
+       {"ITc_tts_get_service_state_p",ITc_tts_get_service_state_p,ITs_tts_startup,ITs_tts_cleanup},
+       {"ITc_tts_set_unset_service_state_changed_cb_p",ITc_tts_set_unset_service_state_changed_cb_p,ITs_tts_startup,ITs_tts_cleanup},
        {NULL, NULL}
 };
 
index 28ff49e63e1f92440ebf1b6a80336d3d6d2befde..c834ce42c14164d53e6e96a8532fedd73fac09dc 100644 (file)
@@ -52,6 +52,8 @@ extern int ITc_tts_prepare_sync_p(void);
 extern int ITc_ttse_terminate_p(void);
 extern int ITc_ttse_set_activated_mode_changed_cb_p(void);
 extern int ITc_ttse_get_activated_mode_p(void);
+extern int ITc_tts_get_service_state_p(void);
+extern int ITc_tts_set_unset_service_state_changed_cb_p(void);
 
 testcase tc_array[] = {
        {"ITc_tts_create_destroy_p",ITc_tts_create_destroy_p,ITs_tts_startup,ITs_tts_cleanup},
@@ -82,6 +84,8 @@ testcase tc_array[] = {
        {"ITc_ttse_terminate_p",ITc_ttse_terminate_p,ITs_ttse_startup,ITs_ttse_cleanup},
        {"ITc_ttse_set_activated_mode_changed_cb_p",ITc_ttse_set_activated_mode_changed_cb_p,ITs_ttse_startup,ITs_ttse_cleanup},
        {"ITc_ttse_get_activated_mode_p",ITc_ttse_get_activated_mode_p,ITs_ttse_startup,ITs_ttse_cleanup},
+       {"ITc_tts_get_service_state_p",ITc_tts_get_service_state_p,ITs_tts_startup,ITs_tts_cleanup},
+       {"ITc_tts_set_unset_service_state_changed_cb_p",ITc_tts_set_unset_service_state_changed_cb_p,ITs_tts_startup,ITs_tts_cleanup},
        {NULL, NULL}
 };
 
old mode 100755 (executable)
new mode 100644 (file)
index a896bda..67244ac
@@ -45,6 +45,8 @@ extern int ITc_tts_set_unset_engine_changed_cb_p(void);
 extern int ITc_tts_check_screen_reader_on_p(void);
 extern int ITc_tts_set_unset_screen_reader_changed_cb_p(void);
 extern int ITc_tts_prepare_sync_p(void);
+extern int ITc_tts_get_service_state_p(void);
+extern int ITc_tts_set_unset_service_state_changed_cb_p(void);
 
 testcase tc_array[] = {
        {"ITc_tts_create_destroy_p",ITc_tts_create_destroy_p,ITs_tts_startup,ITs_tts_cleanup},
@@ -68,6 +70,8 @@ testcase tc_array[] = {
        {"ITc_tts_check_screen_reader_on_p",ITc_tts_check_screen_reader_on_p,ITs_tts_startup,ITs_tts_cleanup},
        {"ITc_tts_set_unset_screen_reader_changed_cb_p",ITc_tts_set_unset_screen_reader_changed_cb_p,ITs_tts_startup,ITs_tts_cleanup},
        {"ITc_tts_prepare_sync_p",ITc_tts_prepare_sync_p,ITs_tts_startup,ITs_tts_cleanup},
+       {"ITc_tts_get_service_state_p",ITc_tts_get_service_state_p,ITs_tts_startup,ITs_tts_cleanup},
+       {"ITc_tts_set_unset_service_state_changed_cb_p",ITc_tts_set_unset_service_state_changed_cb_p,ITs_tts_startup,ITs_tts_cleanup},
        {NULL, NULL}
 };
 
index 9f5abd5be54540c04437bc27d298922f0f30478f..c87f523ba47eac590c0d298088f2db489d11bfcb 100644 (file)
@@ -53,6 +53,8 @@ extern int ITc_tts_prepare_sync_p(void);
 extern int ITc_ttse_terminate_p(void);
 extern int ITc_ttse_set_activated_mode_changed_cb_p(void);
 extern int ITc_ttse_get_activated_mode_p(void);
+extern int ITc_tts_get_service_state_p(void);
+extern int ITc_tts_set_unset_service_state_changed_cb_p(void);
 
 testcase tc_array[] = {
        {"ITc_tts_create_destroy_p",ITc_tts_create_destroy_p,ITs_tts_startup,ITs_tts_cleanup},
@@ -84,6 +86,8 @@ testcase tc_array[] = {
        {"ITc_ttse_terminate_p",ITc_ttse_terminate_p,ITs_ttse_startup,ITs_ttse_cleanup},
        {"ITc_ttse_set_activated_mode_changed_cb_p",ITc_ttse_set_activated_mode_changed_cb_p,ITs_ttse_startup,ITs_ttse_cleanup},
        {"ITc_ttse_get_activated_mode_p",ITc_ttse_get_activated_mode_p,ITs_ttse_startup,ITs_ttse_cleanup},
+       {"ITc_tts_get_service_state_p",ITc_tts_get_service_state_p,ITs_tts_startup,ITs_tts_cleanup},
+       {"ITc_tts_set_unset_service_state_changed_cb_p",ITc_tts_set_unset_service_state_changed_cb_p,ITs_tts_startup,ITs_tts_cleanup},
        {NULL, NULL}
 };