From 90c4af631ca6fa2be94ab7f69a8093fb80958ed1 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Sun, 28 Jul 2013 17:01:32 +0100 Subject: [PATCH] TextToSpeechTestCase.java: wait for the voices to be installed and available before running the tests. --- .../espeak/test/TextToSpeechTestCase.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/android/eSpeakTests/src/com/reecedunn/espeak/test/TextToSpeechTestCase.java b/android/eSpeakTests/src/com/reecedunn/espeak/test/TextToSpeechTestCase.java index 5819437a..da3296ac 100644 --- a/android/eSpeakTests/src/com/reecedunn/espeak/test/TextToSpeechTestCase.java +++ b/android/eSpeakTests/src/com/reecedunn/espeak/test/TextToSpeechTestCase.java @@ -19,6 +19,9 @@ package com.reecedunn.espeak.test; import android.speech.tts.TextToSpeech; import android.speech.tts.TextToSpeech.OnInitListener; import android.test.AndroidTestCase; +import android.util.Log; + +import java.util.Locale; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.*; @@ -44,7 +47,8 @@ public class TextToSpeechTestCase extends AndroidTestCase { try { - // Wait until the text-to-speech engine is initialised: + // Wait until the text-to-speech engine is initialised (max: 5 seconds): + mEngine = new TextToSpeech(getContext(), mInitCallback); for (int count = 0; !mInitialised && count < 20; ++count) { @@ -54,6 +58,19 @@ public class TextToSpeechTestCase extends AndroidTestCase assertThat(mInitialised, is(true)); assertThat(mStatus, is(TextToSpeech.SUCCESS)); assertThat(mEngine.getDefaultEngine(), is("com.reecedunn.espeak")); + + // Ensure that the voice data is installed (max: 20 seconds): + + Locale en = new Locale("en"); + int available = mEngine.isLanguageAvailable(en); + for (int count = 0; available != TextToSpeech.LANG_COUNTRY_VAR_AVAILABLE && count < (4 * 20); ++count) + { + Thread.sleep(250); + available = mEngine.isLanguageAvailable(en); + Log.d("TextToSpeechTestCase", "setUp: available = " + available); + } + + assertThat(available, is(TextToSpeech.LANG_COUNTRY_VAR_AVAILABLE)); } catch (Exception e) {