| // 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)); |
| } |
| } |