1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 package org.chromium.chrome.browser.translate;
7 import android.test.AndroidTestCase;
8 import android.test.suitebuilder.annotation.SmallTest;
10 import org.chromium.base.test.util.Feature;
11 import org.chromium.chrome.browser.infobar.TranslateOptions;
14 * Test for TranslateOptions.
16 public class TranslateOptionsTest extends AndroidTestCase {
17 private static final String[] languages = {"English", "Spanish", "French"};
18 private static final boolean ALWAYS_TRANSLATE = true;
21 @Feature({"Translate"})
22 public void testNoChanges() {
23 TranslateOptions options = new TranslateOptions(0, 1, languages, ALWAYS_TRANSLATE);
24 assertEquals("English", options.sourceLanguage());
25 assertEquals("Spanish", options.targetLanguage());
26 assertEquals(0, options.sourceLanguageIndex());
27 assertEquals(1, options.targetLanguageIndex());
28 assertFalse(options.neverTranslateLanguageState());
29 assertTrue(options.alwaysTranslateLanguageState());
30 assertFalse(options.neverTranslateDomainState());
31 assertFalse(options.optionsChanged());
35 @Feature({"Translate"})
36 public void testBasicLanguageChanges() {
37 TranslateOptions options = new TranslateOptions(0, 1, languages, !ALWAYS_TRANSLATE);
38 options.setTargetLanguage(2);
39 options.setSourceLanguage(1);
40 assertEquals("Spanish", options.sourceLanguage());
41 assertEquals("French", options.targetLanguage());
42 assertEquals(1, options.sourceLanguageIndex());
43 assertEquals(2, options.targetLanguageIndex());
44 assertTrue(options.optionsChanged());
46 // Switch back to the original
47 options.setSourceLanguage(0);
48 options.setTargetLanguage(1);
49 assertFalse(options.optionsChanged());
53 @Feature({"Translate"})
54 public void testInvalidLanguageChanges() {
55 TranslateOptions options = new TranslateOptions(0, 1, languages, ALWAYS_TRANSLATE);
57 // Same target language as source
58 assertFalse(options.setTargetLanguage(0));
59 assertFalse(options.optionsChanged());
61 // Target language out of range
62 assertFalse(options.setTargetLanguage(23));
63 assertFalse(options.optionsChanged());
65 // Same source and target
66 assertFalse(options.setSourceLanguage(1));
67 assertFalse(options.optionsChanged());
69 // Source language out of range
70 assertFalse(options.setSourceLanguage(23));
71 assertFalse(options.optionsChanged());
75 @Feature({"Translate"})
76 public void testBasicOptionsChanges() {
77 TranslateOptions options = new TranslateOptions(0, 1, languages, !ALWAYS_TRANSLATE);
78 assertFalse(options.optionsChanged());
79 options.toggleNeverTranslateDomainState(true);
80 assertTrue(options.neverTranslateDomainState());
81 assertFalse(options.alwaysTranslateLanguageState());
82 assertFalse(options.neverTranslateLanguageState());
83 assertTrue(options.optionsChanged());
84 options.toggleNeverTranslateDomainState(false);
85 assertFalse(options.neverTranslateDomainState());
86 assertFalse(options.neverTranslateLanguageState());
87 assertFalse(options.alwaysTranslateLanguageState());
89 // We are back to the original state
90 assertFalse(options.optionsChanged());
91 options.toggleAlwaysTranslateLanguageState(true);
92 assertFalse(options.neverTranslateDomainState());
93 assertFalse(options.neverTranslateLanguageState());
94 assertTrue(options.alwaysTranslateLanguageState());
95 assertTrue(options.optionsChanged());
99 @Feature({"Translate"})
100 public void testInvalidOptionsChanges() {
101 TranslateOptions options = new TranslateOptions(0, 1, languages, ALWAYS_TRANSLATE);
103 // Never translate language should not work, but never translate domain should
104 assertFalse(options.toggleNeverTranslateLanguageState(true));
105 assertTrue(options.toggleNeverTranslateDomainState(true));
106 assertTrue(options.optionsChanged());
108 assertTrue(options.toggleAlwaysTranslateLanguageState(false));
110 // Never options are ok
111 assertTrue(options.toggleNeverTranslateLanguageState(true));
112 assertTrue(options.toggleNeverTranslateDomainState(true));
114 // But always is not now
115 assertFalse(options.toggleAlwaysTranslateLanguageState(true));