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
#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************************************/
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;
+}
+
/** @} */
-/** @} */
+/** @} */