1e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui/* 2e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui * Copyright (C) 2017 The Android Open Source Project 3e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui * 4e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui * Licensed under the Apache License, Version 2.0 (the "License"); 5e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui * you may not use this file except in compliance with the License. 6e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui * You may obtain a copy of the License at 7e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui * 8e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui * http://www.apache.org/licenses/LICENSE-2.0 9e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui * 10e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui * Unless required by applicable law or agreed to in writing, software 11e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui * distributed under the License is distributed on an "AS IS" BASIS, 12e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui * See the License for the specific language governing permissions and 14e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui * limitations under the License. 15e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui */ 16e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui 17e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghuipackage android.support.design.widget; 18e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui 19e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghuiimport static android.support.test.InstrumentationRegistry.getContext; 20e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghuiimport static android.support.test.espresso.Espresso.onView; 21e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghuiimport static android.support.test.espresso.action.ViewActions.typeText; 22e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghuiimport static android.support.test.espresso.matcher.ViewMatchers.withId; 23e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui 24e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghuiimport android.content.Context; 25e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghuiimport android.content.res.Configuration; 26e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghuiimport android.content.res.Resources; 27e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghuiimport android.support.design.test.R; 2825eb094d71703e53a73dc1cb9283eb6045ba9a54ztenghuiimport android.support.test.filters.MediumTest; 29e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui 30e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghuiimport org.junit.AfterClass; 31e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghuiimport org.junit.BeforeClass; 32e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghuiimport org.junit.Test; 33e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui 34e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghuiimport java.util.Locale; 35e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui 3625eb094d71703e53a73dc1cb9283eb6045ba9a54ztenghui@MediumTest 37e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghuipublic class TextInputLayoutPseudoLocaleTest extends 38e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui BaseInstrumentationTestCase<TextInputLayoutActivity> { 39e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui 40e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui private static final String ORIGINAL_LANGUAGE = Locale.getDefault().getLanguage(); 41e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui private static final String ORIGINAL_COUNTRY = Locale.getDefault().getLanguage(); 42e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui 43e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui @BeforeClass 44e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui public static void setup() { 45e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui // Change language to pseudo locale. 46e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui setLocale("ar", "XB", getContext()); 47e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui } 48e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui 49e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui public TextInputLayoutPseudoLocaleTest() { 50e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui super(TextInputLayoutActivity.class); 51e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui } 52e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui 53e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui private static void setLocale(String language, String country, Context context) { 54e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui context = context.getApplicationContext(); 55e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui Resources resources = context.getResources(); 56e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui Configuration configuration = resources.getConfiguration(); 57e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui configuration.setLocale(new Locale(language, country)); 58e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui resources.updateConfiguration(configuration, resources.getDisplayMetrics()); 59e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui } 60e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui 61e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui @Test 62e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui public void testSimpleEdit() { 63e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui // Type some text 64e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui onView(withId(R.id.textinput_edittext)).perform(typeText("123")); 65e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui } 66e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui 67e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui @AfterClass 68e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui public static void cleanup() { 69e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui setLocale(ORIGINAL_LANGUAGE, ORIGINAL_COUNTRY, getContext()); 70e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui } 71e255ac736251dc8f72ae2cfb7f61a0bb088f42f0ztenghui} 72