109f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol/*
209f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol * Copyright (C) 2016 The Android Open Source Project
309f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol *
409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol * Licensed under the Apache License, Version 2.0 (the "License");
509f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol * you may not use this file except in compliance with the License.
609f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol * You may obtain a copy of the License at
709f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol *
809f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol *      http://www.apache.org/licenses/LICENSE-2.0
909f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol *
1009f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol * Unless required by applicable law or agreed to in writing, software
1109f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol * distributed under the License is distributed on an "AS IS" BASIS,
1209f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1309f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol * See the License for the specific language governing permissions and
1409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol * limitations under the License.
1509f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol */
1609f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyolpackage com.android.emergency.preferences;
1709f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol
180ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyolimport android.preference.PreferenceManager;
1909f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyolimport android.test.ActivityInstrumentationTestCase2;
200ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyolimport android.test.suitebuilder.annotation.MediumTest;
2109f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol
2209f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyolimport com.android.emergency.PreferenceKeys;
2309f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyolimport com.android.emergency.R;
2409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyolimport com.android.emergency.edit.EditEmergencyInfoFragment;
2509f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyolimport com.android.emergency.edit.EditInfoActivity;
2609f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol
2709f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol/**
2809f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol * Tests for {@link EmergencyEditTextPreference}.
2909f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol */
300ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol@MediumTest
3109f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyolpublic class EmergencyEditTextPreferenceTest
3209f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        extends ActivityInstrumentationTestCase2<EditInfoActivity> {
3309f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    private EmergencyEditTextPreference mPreference;
3409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    private EditEmergencyInfoFragment mEditInfoFragment;
3509f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol
3609f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    public EmergencyEditTextPreferenceTest() {
3709f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        super(EditInfoActivity.class);
3809f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    }
3909f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol
4009f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    @Override
4109f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    protected void setUp() throws Exception {
4209f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        super.setUp();
4309f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        mEditInfoFragment = (EditEmergencyInfoFragment) getActivity().getFragments().get(0).second;
4409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        mPreference = (EmergencyEditTextPreference)
4509f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                mEditInfoFragment.findPreference(PreferenceKeys.KEY_MEDICAL_CONDITIONS);
4609f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        try {
4709f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol            runTestOnUiThread(new Runnable() {
4809f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                @Override
4909f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                public void run() {
5009f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                    mPreference.setText("");
5109f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                }
5209f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol            });
5309f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        } catch (Throwable throwable) {
5409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol            fail("Should not throw exception");
5509f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        }
5609f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    }
5709f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol
580ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol    @Override
590ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol    protected void tearDown() throws Exception {
600ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol        PreferenceManager.getDefaultSharedPreferences(getActivity()).edit().clear().commit();
610ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol        super.tearDown();
620ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol    }
630ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol
6409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    public void testSummary() {
6509f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        String summary = (String) mPreference.getSummary();
6609f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        String summaryExp =
6709f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                getActivity().getResources().getString(R.string.unknown_medical_conditions);
6809f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertEquals(summaryExp, summary);
6909f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    }
7009f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol
7109f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    public void testTitle() {
7209f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        String title = (String) mPreference.getTitle();
7309f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        String titleExp =
7409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                getActivity().getResources().getString(R.string.medical_conditions);
7509f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertEquals(titleExp, title);
7609f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    }
7709f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol
7809f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    public void testProperties() {
7909f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertNotNull(mPreference);
8009f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertEquals(PreferenceKeys.KEY_MEDICAL_CONDITIONS, mPreference.getKey());
8109f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertTrue(mPreference.isEnabled());
8209f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertTrue(mPreference.isPersistent());
8309f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertTrue(mPreference.isSelectable());
8409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertTrue(mPreference.isNotSet());
8509f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertEquals("", mPreference.getText());
8609f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    }
8709f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol
8809f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    public void testReloadFromPreference() throws Throwable {
8909f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        String medicalConditions = "Asthma";
9009f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        mEditInfoFragment.getPreferenceManager().getSharedPreferences().edit()
91f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol                .putString(mPreference.getKey(), medicalConditions).commit();
9209f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        runTestOnUiThread(new Runnable() {
9309f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol            @Override
9409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol            public void run() {
9509f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                mPreference.reloadFromPreference();
9609f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol            }
9709f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        });
9809f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertEquals(medicalConditions, mPreference.getText());
9909f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertFalse(mPreference.isNotSet());
10009f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    }
10109f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol
102124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol    public void testSetText() throws Throwable {
103124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol        final String medicalConditions = "Asthma";
104124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol        runTestOnUiThread(new Runnable() {
105124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol            @Override
106124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol            public void run() {
107124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol                mPreference.setText(medicalConditions);
108124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol            }
109124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol        });
110124a8fdf53a4815c0f57b6178e97322dc86d40a6mariagpuyol
11109f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertEquals(medicalConditions, mPreference.getText());
11209f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertEquals(medicalConditions, mPreference.getSummary());
11309f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    }
11409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol}
115