package com.android.speech.tts; import android.speech.tts.TtsEngines; import android.test.InstrumentationTestCase; import java.util.Locale; public class TtsEnginesTests extends InstrumentationTestCase { private TtsEngines mTtsHelper; @Override public void setUp() { mTtsHelper = new TtsEngines(getInstrumentation().getContext()); } public void testParseLocaleString() { assertEquals(new Locale("en", "US"), mTtsHelper.parseLocaleString("eng-usa")); assertEquals(new Locale("en", "US"), mTtsHelper.parseLocaleString("eng-USA")); assertEquals(new Locale("en", "US"), mTtsHelper.parseLocaleString("en-US")); assertEquals(new Locale("en", "US"), mTtsHelper.parseLocaleString("en_us")); assertEquals(new Locale("en", "US"), mTtsHelper.parseLocaleString("eng_US")); assertEquals(new Locale("en", "US", "foobar"), mTtsHelper.parseLocaleString("eng_US-foobar")); assertEquals(new Locale("en", "", "foobar"), mTtsHelper.parseLocaleString("eng__foobar")); assertNull(mTtsHelper.parseLocaleString("cc_xx_barbar")); assertNull(mTtsHelper.parseLocaleString("cc--barbar")); assertEquals(new Locale("en"), mTtsHelper.parseLocaleString("eng")); assertEquals(new Locale("en","US","var"), mTtsHelper.parseLocaleString("eng-USA-var")); } public void testToOldLocaleStringFormat() { assertArraysEqual(new String[]{"deu", "DEU", ""}, TtsEngines.toOldLocaleStringFormat(new Locale("de", "DE"))); assertArraysEqual(new String[]{"deu", "", ""}, TtsEngines.toOldLocaleStringFormat(new Locale("de"))); assertArraysEqual(new String[]{"eng", "", ""}, TtsEngines.toOldLocaleStringFormat(new Locale("en"))); assertArraysEqual(new String[]{"eng", "USA", ""}, TtsEngines.toOldLocaleStringFormat(new Locale("foo"))); } public void testNormalizeLocale() { assertEquals(Locale.UK, TtsEngines.normalizeTTSLocale(new Locale("eng", "gbr"))); assertEquals(Locale.UK, TtsEngines.normalizeTTSLocale(new Locale("eng", "GBR"))); assertEquals(Locale.GERMANY, TtsEngines.normalizeTTSLocale(new Locale("deu", "deu"))); assertEquals(Locale.GERMAN, TtsEngines.normalizeTTSLocale(new Locale("deu"))); assertEquals(new Locale("yyy", "DE"), TtsEngines.normalizeTTSLocale(new Locale("yyy", "DE"))); } public void testGetLocalePrefForEngine() { assertEquals(new Locale("en", "US"), mTtsHelper.getLocalePrefForEngine("foo","foo:en-US")); assertEquals(new Locale("en", "US"), mTtsHelper.getLocalePrefForEngine("foo","foo:eng-usa")); assertEquals(new Locale("en", "US"), mTtsHelper.getLocalePrefForEngine("foo","foo:eng_USA")); assertEquals(new Locale("de", "DE"), mTtsHelper.getLocalePrefForEngine("foo","foo:deu-deu")); assertEquals(Locale.getDefault(), mTtsHelper.getLocalePrefForEngine("foo","foo:,bar:xx")); assertEquals(Locale.getDefault(), mTtsHelper.getLocalePrefForEngine("other","foo:,bar:xx")); } private void assertArraysEqual(String[] expected, String[] actual) { assertEquals("array length", expected.length, actual.length); for (int i = 0; i < expected.length; i++) { assertEquals("index " + i, expected[i], actual[i]); } } }