static int is_created_hndl = -1;
static bool g_supported = false;
static tts_state_e g_current_state;
+static tts_service_state_e g_current_service_state = TTS_SERVICE_STATE_READY;
static bool g_utterance_started_cb = false;
static bool g_utterance_completed_cb = false;
static bool g_screen_reader_changed_cb = false;
static const int g_sample_rate = 24000;
static const char* ENGINE_VCONF_KEY = "db/voice/tts/engine/default";
+static const int STATE_CHECK_WAITING_TIME = 5;
static bool __tts_supported_voice_cb(tts_h tts, const char* language, int voice_type, void* user_data)
{
{
}
+static void __tts_service_state_changed_cb(tts_h tts, tts_service_state_e previous, tts_service_state_e current, void* user_data)
+{
+ g_current_service_state = current;
+}
+
static bool __is_state_changed(tts_state_e state, int wait_delay)
{
int max_count = wait_delay * 10;
return true;
}
+static bool __is_service_state_changed(tts_service_state_e service_state, int wait_delay)
+{
+ int max_count = wait_delay * 10;
+ int count = 0;
+ while (max_count > count && service_state != g_current_service_state) {
+ ecore_main_loop_iterate();
+ usleep(100000);
+ count++;
+ }
+
+ if (service_state != g_current_service_state) {
+ return false;
+ }
+
+ return true;
+}
+
static bool __is_screen_reader_changed(int wait_delay)
{
int max_count = wait_delay * 10;
}
+/**
+ * @testcase utc_tts_get_service_state_p
+ * @since_tizen 7.0
+ * @description test whether state is gotten properly in service state ready
+ */
+TEST_F(TTSPreparedTest, utc_tts_get_service_state_p)
+{
+ tts_service_state_e state;
+ if (g_supported == false) {
+ EXPECT_EQ(tts_get_service_state(g_tts, &state), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_get_service_state(g_tts, &state), TTS_ERROR_NONE);
+ EXPECT_EQ(state, TTS_SERVICE_STATE_READY);
+}
+
+/**
+ * @testcase utc_tts_get_service_state_p2
+ * @since_tizen 7.0
+ * @description test whether state is gotten properly when client requests to play.
+ */
+TEST_F(TTSTest, utc_tts_get_service_state_p2)
+{
+ tts_service_state_e state;
+ if (g_supported == false) {
+ EXPECT_EQ(tts_get_service_state(g_tts, &state), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ g_current_service_state = TTS_SERVICE_STATE_READY;
+ EXPECT_EQ(tts_set_service_state_changed_cb(g_tts, __tts_service_state_changed_cb, nullptr), TTS_ERROR_NONE);
+ EXPECT_EQ(tts_prepare(g_tts), TTS_ERROR_NONE);
+ EXPECT_EQ(__is_state_changed(TTS_STATE_READY, STATE_CHECK_WAITING_TIME), true);
+
+ EXPECT_EQ(tts_get_service_state(g_tts, &state), TTS_ERROR_NONE);
+ EXPECT_EQ(state, TTS_SERVICE_STATE_READY);
+
+ int utt_id = 0;
+ EXPECT_EQ(tts_add_text(g_tts, "1 2 3 4 5", g_language, g_voice_type, TTS_SPEED_AUTO, &utt_id), TTS_ERROR_NONE);
+ EXPECT_EQ(tts_play(g_tts), TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_get_service_state(g_tts, &state), TTS_ERROR_NONE);
+ EXPECT_EQ(state, TTS_SERVICE_STATE_SYNTHESIZING);
+
+ EXPECT_EQ(__is_service_state_changed(TTS_SERVICE_STATE_PLAYING, STATE_CHECK_WAITING_TIME), true);
+ EXPECT_EQ(tts_get_service_state(g_tts, &state), TTS_ERROR_NONE);
+ EXPECT_EQ(state, TTS_SERVICE_STATE_PLAYING);
+
+ EXPECT_EQ(tts_stop(g_tts), TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_unprepare(g_tts), TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_get_service_state_n
+ * @since_tizen 7.0
+ * @description test whether function returns error with NULL parameter.
+ */
+TEST_F(TTSPreparedTest, utc_tts_get_service_state_n)
+{
+ tts_service_state_e state;
+ if (g_supported == false) {
+ EXPECT_EQ(tts_get_service_state(nullptr, &state), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_get_service_state(nullptr, &state), TTS_ERROR_INVALID_PARAMETER);
+}
+
+/**
+ * @testcase utc_tts_get_service_state_n2
+ * @since_tizen 7.0
+ * @description test whether function returns error when tts handle is already destroyed.
+ */
+TEST_F(TTSTest, utc_tts_get_service_state_n2)
+{
+ tts_service_state_e state;
+ if (g_supported == false) {
+ EXPECT_EQ(tts_get_service_state(g_tts, &state), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_destroy(g_tts), TTS_ERROR_NONE);
+ EXPECT_EQ(tts_get_service_state(g_tts, &state), TTS_ERROR_INVALID_PARAMETER);
+ EXPECT_EQ(tts_create(&g_tts), TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_get_service_state_n3
+ * @since_tizen 7.0
+ * @description test whether function returns error when tts is in create state.
+ */
+TEST_F(TTSTest, utc_tts_get_service_state_n3)
+{
+ tts_service_state_e state;
+ if (g_supported == false) {
+ EXPECT_EQ(tts_get_service_state(g_tts, &state), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_get_service_state(g_tts, &state), TTS_ERROR_INVALID_STATE);
+}
+
+
/**
* @testcase utc_tts_add_text_p
* @since_tizen 2.3
ASSERT_NE(ret, TTS_ERROR_NONE);
}
+/**
+ * @testcase utc_tts_set_service_state_changed_cb_p
+ * @since_tizen 7.0
+ * @description test whether service_state_changed callback function is set properly.
+ */
+TEST_F(TTSTest, utc_tts_set_service_state_changed_cb_p)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_set_service_state_changed_cb(g_tts, __tts_service_state_changed_cb, nullptr), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_set_service_state_changed_cb(g_tts, __tts_service_state_changed_cb, nullptr), TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_service_state_changed_cb_p2
+ * @since_tizen 7.0
+ * @description test whether service_state_changed callback function is invoked when server state is changed.
+ */
+TEST_F(TTSTest, utc_tts_set_service_state_changed_cb_p2)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_set_service_state_changed_cb(g_tts, __tts_service_state_changed_cb, nullptr), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ g_current_service_state = TTS_SERVICE_STATE_READY;
+ EXPECT_EQ(tts_set_service_state_changed_cb(g_tts, __tts_service_state_changed_cb, nullptr), TTS_ERROR_NONE);
+ EXPECT_EQ(tts_prepare(g_tts), TTS_ERROR_NONE);
+ EXPECT_EQ(__is_state_changed(TTS_STATE_READY, STATE_CHECK_WAITING_TIME), true);
+
+ int utt_id = 0;
+ EXPECT_EQ(tts_add_text(g_tts, "1 2 3 4 5", g_language, g_voice_type, TTS_SPEED_AUTO, &utt_id), TTS_ERROR_NONE);
+ EXPECT_EQ(tts_play(g_tts), TTS_ERROR_NONE);
+
+ EXPECT_EQ(__is_service_state_changed(TTS_SERVICE_STATE_SYNTHESIZING, STATE_CHECK_WAITING_TIME), true);
+ EXPECT_EQ(tts_stop(g_tts), TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_unprepare(g_tts), TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_service_state_changed_cb_n
+ * @since_tizen 7.0
+ * @description test whether function returns error with NULL parameter.
+ */
+TEST_F(TTSTest, utc_tts_set_service_state_changed_cb_n)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_set_service_state_changed_cb(nullptr, __tts_service_state_changed_cb, nullptr), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_set_service_state_changed_cb(nullptr, __tts_service_state_changed_cb, nullptr), TTS_ERROR_INVALID_PARAMETER);
+}
+
+/**
+ * @testcase utc_tts_set_service_state_changed_cb_n2
+ * @since_tizen 7.0
+ * @description test whether function returns error when tts handle is already destroyed.
+ */
+TEST_F(TTSTest, utc_tts_set_service_state_changed_cb_n2)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_set_service_state_changed_cb(g_tts, __tts_service_state_changed_cb, nullptr), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_destroy(g_tts), TTS_ERROR_NONE);
+ EXPECT_EQ(tts_set_service_state_changed_cb(g_tts, __tts_service_state_changed_cb, nullptr), TTS_ERROR_INVALID_PARAMETER);
+ EXPECT_EQ(tts_create(&g_tts), TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_service_state_changed_cb_n3
+ * @since_tizen 7.0
+ * @description test whether function returns error when tts is not in ready state.
+ */
+TEST_F(TTSPreparedTest, utc_tts_set_service_state_changed_cb_n3)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_set_service_state_changed_cb(g_tts, __tts_service_state_changed_cb, nullptr), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_set_service_state_changed_cb(g_tts, __tts_service_state_changed_cb, nullptr), TTS_ERROR_INVALID_STATE);
+}
+
+/**
+ * @testcase utc_tts_unset_service_state_changed_cb_p
+ * @since_tizen 7.0
+ * @description test whether service_state_changed callback function is unset properly.
+ */
+TEST_F(TTSTest, utc_tts_unset_service_state_changed_cb_p)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_unset_service_state_changed_cb(g_tts), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_unset_service_state_changed_cb(g_tts), TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_unset_service_state_changed_cb_n
+ * @since_tizen 7.0
+ * @description test whether function returns error with NULL parameter.
+ */
+TEST_F(TTSTest, utc_tts_unset_service_state_changed_cb_n)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_unset_service_state_changed_cb(NULL), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(tts_unset_service_state_changed_cb(nullptr), TTS_ERROR_INVALID_PARAMETER);
+}
+
+/**
+ * @testcase utc_tts_unset_service_state_changed_cb_n2
+ * @since_tizen 7.0
+ * @description test whether function returns error when tts handle is already destroyed.
+ */
+TEST_F(TTSTest, utc_tts_unset_service_state_changed_cb_n2)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_unset_service_state_changed_cb(g_tts), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_destroy(g_tts), TTS_ERROR_NONE);
+ EXPECT_EQ(tts_unset_service_state_changed_cb(g_tts), TTS_ERROR_INVALID_PARAMETER);
+ EXPECT_EQ(tts_create(&g_tts), TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_unset_service_state_changed_cb_n3
+ * @since_tizen 7.0
+ * @description test whether function returns error when tts is not in ready state.
+ */
+TEST_F(TTSPreparedTest, utc_tts_unset_service_state_changed_cb_n3)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_unset_service_state_changed_cb(g_tts), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_unset_service_state_changed_cb(g_tts), TTS_ERROR_INVALID_STATE);
+}
+
+
/**
* @testcase utc_tts_get_error_message_p
* @since_tizen 3.0