From: Ankit Srivastava Date: Mon, 29 Aug 2022 10:24:26 +0000 (+0530) Subject: [ITC][tts][ACR-1716] Added two new TC for newly added APIs X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=eb771d3f1273139ecaaec3287fff75d3a69e9377;p=test%2Ftct%2Fnative%2Fapi.git [ITC][tts][ACR-1716] Added two new TC for newly added APIs Change-Id: I3337edfad5a0027c32be8f3a7f7cbb09024e02dc Signed-off-by: Ankit Srivastava --- diff --git a/src/itc/tts/ITs-tts-common.h b/src/itc/tts/ITs-tts-common.h index 434363a61..07bb1befa 100644 --- a/src/itc/tts/ITs-tts-common.h +++ b/src/itc/tts/ITs-tts-common.h @@ -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; diff --git a/src/itc/tts/ITs-tts.c b/src/itc/tts/ITs-tts.c old mode 100755 new mode 100644 index 0cd6638b8..56de6abc6 --- a/src/itc/tts/ITs-tts.c +++ b/src/itc/tts/ITs-tts.c @@ -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; +} + /** @} */ -/** @} */ +/** @} */ diff --git a/src/itc/tts/tct-tts-native_mobile.h b/src/itc/tts/tct-tts-native_mobile.h index 9f5abd5be..c87f523ba 100644 --- a/src/itc/tts/tct-tts-native_mobile.h +++ b/src/itc/tts/tct-tts-native_mobile.h @@ -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} }; diff --git a/src/itc/tts/tct-tts-native_tizeniot.h b/src/itc/tts/tct-tts-native_tizeniot.h index 28ff49e63..c834ce42c 100644 --- a/src/itc/tts/tct-tts-native_tizeniot.h +++ b/src/itc/tts/tct-tts-native_tizeniot.h @@ -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} }; diff --git a/src/itc/tts/tct-tts-native_tv.h b/src/itc/tts/tct-tts-native_tv.h old mode 100755 new mode 100644 index a896bda69..67244ac0c --- a/src/itc/tts/tct-tts-native_tv.h +++ b/src/itc/tts/tct-tts-native_tv.h @@ -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} }; diff --git a/src/itc/tts/tct-tts-native_wearable.h b/src/itc/tts/tct-tts-native_wearable.h index 9f5abd5be..c87f523ba 100644 --- a/src/itc/tts/tct-tts-native_wearable.h +++ b/src/itc/tts/tct-tts-native_wearable.h @@ -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} };