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