Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / android / javatests / src / org / chromium / chrome / browser / translate / TranslateOptionsTest.java
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.
4
5 package org.chromium.chrome.browser.translate;
6
7 import android.test.AndroidTestCase;
8 import android.test.suitebuilder.annotation.SmallTest;
9
10 import org.chromium.base.test.util.Feature;
11 import org.chromium.chrome.browser.infobar.TranslateOptions;
12
13 /**
14  * Test for TranslateOptions.
15  */
16 public class TranslateOptionsTest extends AndroidTestCase {
17     private static final String[] LANGUAGES = {"English", "Spanish", "French"};
18     private static final boolean ALWAYS_TRANSLATE = true;
19
20     @SmallTest
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());
32     }
33
34     @SmallTest
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());
46
47         // Switch back to the original
48         options.setSourceLanguage(0);
49         options.setTargetLanguage(1);
50         assertFalse(options.optionsChanged());
51     }
52
53     @SmallTest
54     @Feature({"Translate"})
55     public void testInvalidLanguageChanges() {
56         TranslateOptions options = new TranslateOptions(0, 1, LANGUAGES, ALWAYS_TRANSLATE, false);
57
58         // Same target language as source
59         assertFalse(options.setTargetLanguage(0));
60         assertFalse(options.optionsChanged());
61
62         // Target language out of range
63         assertFalse(options.setTargetLanguage(23));
64         assertFalse(options.optionsChanged());
65
66         // Same source and target
67         assertFalse(options.setSourceLanguage(1));
68         assertFalse(options.optionsChanged());
69
70         // Source language out of range
71         assertFalse(options.setSourceLanguage(23));
72         assertFalse(options.optionsChanged());
73     }
74
75     @SmallTest
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());
89
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());
97     }
98
99     @SmallTest
100     @Feature({"Translate"})
101     public void testInvalidOptionsChanges() {
102         TranslateOptions options = new TranslateOptions(0, 1, LANGUAGES, ALWAYS_TRANSLATE, false);
103
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());
108
109         assertTrue(options.toggleAlwaysTranslateLanguageState(false));
110
111         // Never options are ok
112         assertTrue(options.toggleNeverTranslateLanguageState(true));
113         assertTrue(options.toggleNeverTranslateDomainState(true));
114
115         // But always is not now
116         assertFalse(options.toggleAlwaysTranslateLanguageState(true));
117     }
118 }