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, false);
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, true);
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.triggeredFromMenu());
45 assertTrue(options.optionsChanged());
47 // Switch back to the original
48 options.setSourceLanguage(0);
49 options.setTargetLanguage(1);
50 assertFalse(options.optionsChanged());
54 @Feature({"Translate"})
55 public void testInvalidLanguageChanges() {
56 TranslateOptions options = new TranslateOptions(0, 1, LANGUAGES, ALWAYS_TRANSLATE, false);
58 // Same target language as source
59 assertFalse(options.setTargetLanguage(0));
60 assertFalse(options.optionsChanged());
62 // Target language out of range
63 assertFalse(options.setTargetLanguage(23));
64 assertFalse(options.optionsChanged());
66 // Same source and target
67 assertFalse(options.setSourceLanguage(1));
68 assertFalse(options.optionsChanged());
70 // Source language out of range
71 assertFalse(options.setSourceLanguage(23));
72 assertFalse(options.optionsChanged());
76 @Feature({"Translate"})
77 public void testBasicOptionsChanges() {
78 TranslateOptions options = new TranslateOptions(0, 1, LANGUAGES, !ALWAYS_TRANSLATE, false);
79 assertFalse(options.optionsChanged());
80 options.toggleNeverTranslateDomainState(true);
81 assertTrue(options.neverTranslateDomainState());
82 assertFalse(options.alwaysTranslateLanguageState());
83 assertFalse(options.neverTranslateLanguageState());
84 assertTrue(options.optionsChanged());
85 options.toggleNeverTranslateDomainState(false);
86 assertFalse(options.neverTranslateDomainState());
87 assertFalse(options.neverTranslateLanguageState());
88 assertFalse(options.alwaysTranslateLanguageState());
90 // We are back to the original state
91 assertFalse(options.optionsChanged());
92 options.toggleAlwaysTranslateLanguageState(true);
93 assertFalse(options.neverTranslateDomainState());
94 assertFalse(options.neverTranslateLanguageState());
95 assertTrue(options.alwaysTranslateLanguageState());
96 assertTrue(options.optionsChanged());
100 @Feature({"Translate"})
101 public void testInvalidOptionsChanges() {
102 TranslateOptions options = new TranslateOptions(0, 1, LANGUAGES, ALWAYS_TRANSLATE, false);
104 // Never translate language should not work, but never translate domain should
105 assertFalse(options.toggleNeverTranslateLanguageState(true));
106 assertTrue(options.toggleNeverTranslateDomainState(true));
107 assertTrue(options.optionsChanged());
109 assertTrue(options.toggleAlwaysTranslateLanguageState(false));
111 // Never options are ok
112 assertTrue(options.toggleNeverTranslateLanguageState(true));
113 assertTrue(options.toggleNeverTranslateDomainState(true));
115 // But always is not now
116 assertFalse(options.toggleAlwaysTranslateLanguageState(true));