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