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.LargeTest;
2109f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyolimport android.text.SpannableString;
2209f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyolimport android.text.TextUtils;
2309f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyolimport android.text.style.TtsSpan;
2409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol
2509f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyolimport com.android.emergency.PreferenceKeys;
2609f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyolimport com.android.emergency.R;
2709f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyolimport com.android.emergency.edit.EditEmergencyInfoFragment;
2809f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyolimport com.android.emergency.edit.EditInfoActivity;
2909f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol
3009f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol/**
3109f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol * Tests for {@link EmergencyListPreference}.
3209f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol */
330ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol@LargeTest
3409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyolpublic class EmergencyListPreferenceTest
3509f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        extends ActivityInstrumentationTestCase2<EditInfoActivity> {
3609f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    private EmergencyListPreference mOrganDonorPreference;
3709f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    private EmergencyListPreference mBloodTypeListPreference;
3809f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    private EditEmergencyInfoFragment mEditInfoFragment;
3909f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol
4009f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    public EmergencyListPreferenceTest() {
4109f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        super(EditInfoActivity.class);
4209f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    }
4309f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol
4409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    @Override
4509f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    protected void setUp() throws Exception {
4609f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        super.setUp();
4709f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        mEditInfoFragment = (EditEmergencyInfoFragment) getActivity().getFragments().get(0).second;
4809f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        mOrganDonorPreference = (EmergencyListPreference)
4909f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                mEditInfoFragment.findPreference(PreferenceKeys.KEY_ORGAN_DONOR);
5009f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        mBloodTypeListPreference = (EmergencyListPreference)
5109f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                mEditInfoFragment.findPreference(PreferenceKeys.KEY_BLOOD_TYPE);
5209f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        try {
5309f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol            runTestOnUiThread(new Runnable() {
5409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                @Override
5509f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                public void run() {
5609f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                    mOrganDonorPreference.setValue("");
5709f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                    mBloodTypeListPreference.setValue("");
5809f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                }
5909f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol            });
6009f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        } catch (Throwable throwable) {
6109f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol            fail("Should not throw exception");
6209f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        }
6309f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    }
6409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol
650ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol    @Override
660ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol    protected void tearDown() throws Exception {
670ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol        PreferenceManager.getDefaultSharedPreferences(getActivity()).edit().clear().commit();
680ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol        super.tearDown();
690ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol    }
700ad3900521a6a93df8905d905dfb1a4c952a180cmariagpuyol
7109f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    public void testSummary_organDonor() {
7209f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        String summary = (String) mOrganDonorPreference.getSummary();
7309f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        String summaryExp =
7409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                getActivity().getResources().getString(R.string.unknown_organ_donor);
7509f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertEquals(summaryExp, summary);
7609f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    }
7709f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol
7809f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    public void testSummary_bloodType() {
7909f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        String summary = mBloodTypeListPreference.getSummary().toString();
8009f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        CharSequence summaryExp =
8109f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                getActivity().getResources().getString(R.string.unknown_blood_type);
8209f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertEquals(summaryExp, summary);
8309f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    }
8409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol
8509f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    public void testTitle_organDonor() {
8609f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        String title = (String) mOrganDonorPreference.getTitle();
8709f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        String titleExp =
8809f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                getActivity().getResources().getString(R.string.organ_donor);
8909f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertEquals(titleExp, title);
9009f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    }
9109f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol
9209f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    public void testTitle_bloodType() {
9309f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        String title = (String) mBloodTypeListPreference.getTitle();
9409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        String titleExp =
9509f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                getActivity().getResources().getString(R.string.blood_type);
9609f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertEquals(titleExp, title);
9709f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    }
9809f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol
9909f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    public void testProperties_organDonor() {
10009f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertNotNull(mOrganDonorPreference);
10109f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertEquals(PreferenceKeys.KEY_ORGAN_DONOR, mOrganDonorPreference.getKey());
10209f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertTrue(mOrganDonorPreference.isEnabled());
10309f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertTrue(mOrganDonorPreference.isPersistent());
10409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertTrue(mOrganDonorPreference.isSelectable());
10509f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertTrue(mOrganDonorPreference.isNotSet());
10609f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertEquals("", mOrganDonorPreference.getValue());
10709f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertEquals(mOrganDonorPreference.getEntryValues().length,
10809f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                mOrganDonorPreference.getEntries().length);
10909f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertNull(mOrganDonorPreference.getContentDescriptions());
11009f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    }
11109f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol
11209f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    public void testProperties_bloodType() {
11309f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertNotNull(mBloodTypeListPreference);
11409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertEquals(PreferenceKeys.KEY_BLOOD_TYPE, mBloodTypeListPreference.getKey());
11509f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertTrue(mBloodTypeListPreference.isEnabled());
11609f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertTrue(mBloodTypeListPreference.isPersistent());
11709f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertTrue(mBloodTypeListPreference.isSelectable());
11809f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertTrue(mBloodTypeListPreference.isNotSet());
11909f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertEquals("", mBloodTypeListPreference.getValue());
12009f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertEquals(mBloodTypeListPreference.getEntryValues().length,
12109f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                mBloodTypeListPreference.getEntries().length);
12209f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertEquals(mBloodTypeListPreference.getContentDescriptions().length,
12309f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                mBloodTypeListPreference.getEntries().length);
12409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    }
12509f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol
12609f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    public void testReloadFromPreference() throws Throwable {
12709f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        mEditInfoFragment.getPreferenceManager().getSharedPreferences()
12809f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                .edit()
12909f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                .putString(mOrganDonorPreference.getKey(),
13009f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                        (String) mOrganDonorPreference.getEntryValues()[0])
131f0e8818031c5e1ceb40e4f22bd3bc27a2b6771camariagpuyol                .commit();
13209f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        runTestOnUiThread(new Runnable() {
13309f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol            @Override
13409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol            public void run() {
13509f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                mOrganDonorPreference.reloadFromPreference();
13609f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol            }
13709f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        });
13809f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertEquals(mOrganDonorPreference.getEntryValues()[0], mOrganDonorPreference.getValue());
13909f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        assertFalse(mOrganDonorPreference.isNotSet());
14009f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    }
14109f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol
14209f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    public void testSetValue() throws Throwable {
14309f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        for (int i = 0; i < mOrganDonorPreference.getEntryValues().length; i++) {
14409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol            final int index = i;
14509f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol            runTestOnUiThread(new Runnable() {
14609f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                @Override
14709f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                public void run() {
14809f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                    mOrganDonorPreference.setValue((String)
14909f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                            mOrganDonorPreference.getEntryValues()[index]);
15009f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                }
15109f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol            });
15209f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol
15309f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol            assertEquals(mOrganDonorPreference.getEntryValues()[index],
15409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                    mOrganDonorPreference.getValue());
15509f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol            if (!TextUtils.isEmpty(mOrganDonorPreference.getEntryValues()[index])) {
15609f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                assertEquals(mOrganDonorPreference.getEntries()[index],
15709f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                        mOrganDonorPreference.getSummary());
15809f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol            } else {
15909f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                assertEquals(getActivity().getResources().getString(R.string.unknown_organ_donor),
16009f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                        mOrganDonorPreference.getSummary());
16109f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol            }
16209f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        }
16309f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    }
16409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol
16509f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    public void testContentDescriptions() {
16609f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        for (int i = 0; i < mBloodTypeListPreference.getEntries().length; i++) {
16709f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol            SpannableString entry = ((SpannableString) mBloodTypeListPreference.getEntries()[i]);
16809f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol            TtsSpan[] span = entry.getSpans(0,
16909f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                    mBloodTypeListPreference.getContentDescriptions().length, TtsSpan.class);
17009f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol            assertEquals(1, span.length);
17109f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol            assertEquals(span[0].getArgs().get(TtsSpan.ARG_TEXT),
17209f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol                    mBloodTypeListPreference.getContentDescriptions()[i]);
17309f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol        }
17409f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol    }
17509f34dab15bc09ca5b8dd7df6d67f22c395984ebmariagpuyol}
176