14e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 24e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 34e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// found in the LICENSE file. 44e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 54e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)package org.chromium.chrome.browser.translate; 64e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)import android.test.AndroidTestCase; 84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)import android.test.suitebuilder.annotation.SmallTest; 94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)import org.chromium.base.test.util.Feature; 114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)import org.chromium.chrome.browser.infobar.TranslateOptions; 124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)/** 144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * Test for TranslateOptions. 154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) */ 164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)public class TranslateOptionsTest extends AndroidTestCase { 176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) private static final String[] LANGUAGES = {"English", "Spanish", "French"}; 184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) private static final boolean ALWAYS_TRANSLATE = true; 194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) @SmallTest 214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) @Feature({"Translate"}) 224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public void testNoChanges() { 236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) TranslateOptions options = new TranslateOptions(0, 1, LANGUAGES, ALWAYS_TRANSLATE, false); 244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertEquals("English", options.sourceLanguage()); 254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertEquals("Spanish", options.targetLanguage()); 264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertEquals(0, options.sourceLanguageIndex()); 274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertEquals(1, options.targetLanguageIndex()); 284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertFalse(options.neverTranslateLanguageState()); 294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertTrue(options.alwaysTranslateLanguageState()); 304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertFalse(options.neverTranslateDomainState()); 314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertFalse(options.optionsChanged()); 324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) @SmallTest 354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) @Feature({"Translate"}) 364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public void testBasicLanguageChanges() { 376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) TranslateOptions options = new TranslateOptions(0, 1, LANGUAGES, !ALWAYS_TRANSLATE, true); 384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) options.setTargetLanguage(2); 394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) options.setSourceLanguage(1); 404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertEquals("Spanish", options.sourceLanguage()); 414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertEquals("French", options.targetLanguage()); 424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertEquals(1, options.sourceLanguageIndex()); 434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertEquals(2, options.targetLanguageIndex()); 44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) assertTrue(options.triggeredFromMenu()); 454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertTrue(options.optionsChanged()); 464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Switch back to the original 484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) options.setSourceLanguage(0); 494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) options.setTargetLanguage(1); 504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertFalse(options.optionsChanged()); 514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) @SmallTest 544e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) @Feature({"Translate"}) 554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public void testInvalidLanguageChanges() { 566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) TranslateOptions options = new TranslateOptions(0, 1, LANGUAGES, ALWAYS_TRANSLATE, false); 574e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Same target language as source 594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertFalse(options.setTargetLanguage(0)); 604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertFalse(options.optionsChanged()); 614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Target language out of range 634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertFalse(options.setTargetLanguage(23)); 644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertFalse(options.optionsChanged()); 654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Same source and target 674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertFalse(options.setSourceLanguage(1)); 684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertFalse(options.optionsChanged()); 694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Source language out of range 714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertFalse(options.setSourceLanguage(23)); 724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertFalse(options.optionsChanged()); 734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) @SmallTest 764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) @Feature({"Translate"}) 774e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public void testBasicOptionsChanges() { 786e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) TranslateOptions options = new TranslateOptions(0, 1, LANGUAGES, !ALWAYS_TRANSLATE, false); 794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertFalse(options.optionsChanged()); 804e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) options.toggleNeverTranslateDomainState(true); 814e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertTrue(options.neverTranslateDomainState()); 824e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertFalse(options.alwaysTranslateLanguageState()); 834e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertFalse(options.neverTranslateLanguageState()); 844e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertTrue(options.optionsChanged()); 854e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) options.toggleNeverTranslateDomainState(false); 864e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertFalse(options.neverTranslateDomainState()); 874e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertFalse(options.neverTranslateLanguageState()); 884e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertFalse(options.alwaysTranslateLanguageState()); 894e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 904e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // We are back to the original state 914e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertFalse(options.optionsChanged()); 924e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) options.toggleAlwaysTranslateLanguageState(true); 934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertFalse(options.neverTranslateDomainState()); 944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertFalse(options.neverTranslateLanguageState()); 954e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertTrue(options.alwaysTranslateLanguageState()); 964e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertTrue(options.optionsChanged()); 974e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 984e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 994e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) @SmallTest 1004e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) @Feature({"Translate"}) 1014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public void testInvalidOptionsChanges() { 1026e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) TranslateOptions options = new TranslateOptions(0, 1, LANGUAGES, ALWAYS_TRANSLATE, false); 1034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Never translate language should not work, but never translate domain should 1054e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertFalse(options.toggleNeverTranslateLanguageState(true)); 1064e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertTrue(options.toggleNeverTranslateDomainState(true)); 1074e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertTrue(options.optionsChanged()); 1084e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1094e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertTrue(options.toggleAlwaysTranslateLanguageState(false)); 1104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Never options are ok 1124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertTrue(options.toggleNeverTranslateLanguageState(true)); 1134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertTrue(options.toggleNeverTranslateDomainState(true)); 1144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // But always is not now 1164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) assertFalse(options.toggleAlwaysTranslateLanguageState(true)); 1174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 119