- add sources.
[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);
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);
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());
45
46         // Switch back to the original
47         options.setSourceLanguage(0);
48         options.setTargetLanguage(1);
49         assertFalse(options.optionsChanged());
50     }
51
52     @SmallTest
53     @Feature({"Translate"})
54     public void testInvalidLanguageChanges() {
55         TranslateOptions options = new TranslateOptions(0, 1, languages, ALWAYS_TRANSLATE);
56
57         // Same target language as source
58         assertFalse(options.setTargetLanguage(0));
59         assertFalse(options.optionsChanged());
60
61         // Target language out of range
62         assertFalse(options.setTargetLanguage(23));
63         assertFalse(options.optionsChanged());
64
65         // Same source and target
66         assertFalse(options.setSourceLanguage(1));
67         assertFalse(options.optionsChanged());
68
69         // Source language out of range
70         assertFalse(options.setSourceLanguage(23));
71         assertFalse(options.optionsChanged());
72     }
73
74     @SmallTest
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());
88
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());
96     }
97
98     @SmallTest
99     @Feature({"Translate"})
100     public void testInvalidOptionsChanges() {
101         TranslateOptions options = new TranslateOptions(0, 1, languages, ALWAYS_TRANSLATE);
102
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());
107
108         assertTrue(options.toggleAlwaysTranslateLanguageState(false));
109
110         // Never options are ok
111         assertTrue(options.toggleNeverTranslateLanguageState(true));
112         assertTrue(options.toggleNeverTranslateDomainState(true));
113
114         // But always is not now
115         assertFalse(options.toggleAlwaysTranslateLanguageState(true));
116     }
117 }