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