blob: 494e0bb931d5c0dd035d8d8f5fc77b3fcced5959 [file] [log] [blame]
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.translate;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
import org.chromium.base.test.util.Feature;
import org.chromium.chrome.browser.infobar.TranslateOptions;
/**
* Test for TranslateOptions.
*/
public class TranslateOptionsTest extends AndroidTestCase {
private static final String[] languages = {"English", "Spanish", "French"};
private static final boolean ALWAYS_TRANSLATE = true;
@SmallTest
@Feature({"Translate"})
public void testNoChanges() {
TranslateOptions options = new TranslateOptions(0, 1, languages, ALWAYS_TRANSLATE);
assertEquals("English", options.sourceLanguage());
assertEquals("Spanish", options.targetLanguage());
assertEquals(0, options.sourceLanguageIndex());
assertEquals(1, options.targetLanguageIndex());
assertFalse(options.neverTranslateLanguageState());
assertTrue(options.alwaysTranslateLanguageState());
assertFalse(options.neverTranslateDomainState());
assertFalse(options.optionsChanged());
}
@SmallTest
@Feature({"Translate"})
public void testBasicLanguageChanges() {
TranslateOptions options = new TranslateOptions(0, 1, languages, !ALWAYS_TRANSLATE);
options.setTargetLanguage(2);
options.setSourceLanguage(1);
assertEquals("Spanish", options.sourceLanguage());
assertEquals("French", options.targetLanguage());
assertEquals(1, options.sourceLanguageIndex());
assertEquals(2, options.targetLanguageIndex());
assertTrue(options.optionsChanged());
// Switch back to the original
options.setSourceLanguage(0);
options.setTargetLanguage(1);
assertFalse(options.optionsChanged());
}
@SmallTest
@Feature({"Translate"})
public void testInvalidLanguageChanges() {
TranslateOptions options = new TranslateOptions(0, 1, languages, ALWAYS_TRANSLATE);
// Same target language as source
assertFalse(options.setTargetLanguage(0));
assertFalse(options.optionsChanged());
// Target language out of range
assertFalse(options.setTargetLanguage(23));
assertFalse(options.optionsChanged());
// Same source and target
assertFalse(options.setSourceLanguage(1));
assertFalse(options.optionsChanged());
// Source language out of range
assertFalse(options.setSourceLanguage(23));
assertFalse(options.optionsChanged());
}
@SmallTest
@Feature({"Translate"})
public void testBasicOptionsChanges() {
TranslateOptions options = new TranslateOptions(0, 1, languages, !ALWAYS_TRANSLATE);
assertFalse(options.optionsChanged());
options.toggleNeverTranslateDomainState(true);
assertTrue(options.neverTranslateDomainState());
assertFalse(options.alwaysTranslateLanguageState());
assertFalse(options.neverTranslateLanguageState());
assertTrue(options.optionsChanged());
options.toggleNeverTranslateDomainState(false);
assertFalse(options.neverTranslateDomainState());
assertFalse(options.neverTranslateLanguageState());
assertFalse(options.alwaysTranslateLanguageState());
// We are back to the original state
assertFalse(options.optionsChanged());
options.toggleAlwaysTranslateLanguageState(true);
assertFalse(options.neverTranslateDomainState());
assertFalse(options.neverTranslateLanguageState());
assertTrue(options.alwaysTranslateLanguageState());
assertTrue(options.optionsChanged());
}
@SmallTest
@Feature({"Translate"})
public void testInvalidOptionsChanges() {
TranslateOptions options = new TranslateOptions(0, 1, languages, ALWAYS_TRANSLATE);
// Never translate language should not work, but never translate domain should
assertFalse(options.toggleNeverTranslateLanguageState(true));
assertTrue(options.toggleNeverTranslateDomainState(true));
assertTrue(options.optionsChanged());
assertTrue(options.toggleAlwaysTranslateLanguageState(false));
// Never options are ok
assertTrue(options.toggleNeverTranslateLanguageState(true));
assertTrue(options.toggleNeverTranslateDomainState(true));
// But always is not now
assertFalse(options.toggleAlwaysTranslateLanguageState(true));
}
}