1/* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16package com.android.emergency.preferences; 17 18import android.preference.PreferenceManager; 19import android.test.ActivityInstrumentationTestCase2; 20import android.test.suitebuilder.annotation.LargeTest; 21import android.text.SpannableString; 22import android.text.TextUtils; 23import android.text.style.TtsSpan; 24 25import com.android.emergency.PreferenceKeys; 26import com.android.emergency.R; 27import com.android.emergency.edit.EditEmergencyInfoFragment; 28import com.android.emergency.edit.EditInfoActivity; 29 30/** 31 * Tests for {@link EmergencyListPreference}. 32 */ 33@LargeTest 34public class EmergencyListPreferenceTest 35 extends ActivityInstrumentationTestCase2<EditInfoActivity> { 36 private EmergencyListPreference mOrganDonorPreference; 37 private EmergencyListPreference mBloodTypeListPreference; 38 private EditEmergencyInfoFragment mEditInfoFragment; 39 40 public EmergencyListPreferenceTest() { 41 super(EditInfoActivity.class); 42 } 43 44 @Override 45 protected void setUp() throws Exception { 46 super.setUp(); 47 mEditInfoFragment = (EditEmergencyInfoFragment) getActivity().getFragments().get(0).second; 48 mOrganDonorPreference = (EmergencyListPreference) 49 mEditInfoFragment.findPreference(PreferenceKeys.KEY_ORGAN_DONOR); 50 mBloodTypeListPreference = (EmergencyListPreference) 51 mEditInfoFragment.findPreference(PreferenceKeys.KEY_BLOOD_TYPE); 52 try { 53 runTestOnUiThread(new Runnable() { 54 @Override 55 public void run() { 56 mOrganDonorPreference.setValue(""); 57 mBloodTypeListPreference.setValue(""); 58 } 59 }); 60 } catch (Throwable throwable) { 61 fail("Should not throw exception"); 62 } 63 } 64 65 @Override 66 protected void tearDown() throws Exception { 67 PreferenceManager.getDefaultSharedPreferences(getActivity()).edit().clear().commit(); 68 super.tearDown(); 69 } 70 71 public void testSummary_organDonor() { 72 String summary = (String) mOrganDonorPreference.getSummary(); 73 String summaryExp = 74 getActivity().getResources().getString(R.string.unknown_organ_donor); 75 assertEquals(summaryExp, summary); 76 } 77 78 public void testSummary_bloodType() { 79 String summary = mBloodTypeListPreference.getSummary().toString(); 80 CharSequence summaryExp = 81 getActivity().getResources().getString(R.string.unknown_blood_type); 82 assertEquals(summaryExp, summary); 83 } 84 85 public void testTitle_organDonor() { 86 String title = (String) mOrganDonorPreference.getTitle(); 87 String titleExp = 88 getActivity().getResources().getString(R.string.organ_donor); 89 assertEquals(titleExp, title); 90 } 91 92 public void testTitle_bloodType() { 93 String title = (String) mBloodTypeListPreference.getTitle(); 94 String titleExp = 95 getActivity().getResources().getString(R.string.blood_type); 96 assertEquals(titleExp, title); 97 } 98 99 public void testProperties_organDonor() { 100 assertNotNull(mOrganDonorPreference); 101 assertEquals(PreferenceKeys.KEY_ORGAN_DONOR, mOrganDonorPreference.getKey()); 102 assertTrue(mOrganDonorPreference.isEnabled()); 103 assertTrue(mOrganDonorPreference.isPersistent()); 104 assertTrue(mOrganDonorPreference.isSelectable()); 105 assertTrue(mOrganDonorPreference.isNotSet()); 106 assertEquals("", mOrganDonorPreference.getValue()); 107 assertEquals(mOrganDonorPreference.getEntryValues().length, 108 mOrganDonorPreference.getEntries().length); 109 assertNull(mOrganDonorPreference.getContentDescriptions()); 110 } 111 112 public void testProperties_bloodType() { 113 assertNotNull(mBloodTypeListPreference); 114 assertEquals(PreferenceKeys.KEY_BLOOD_TYPE, mBloodTypeListPreference.getKey()); 115 assertTrue(mBloodTypeListPreference.isEnabled()); 116 assertTrue(mBloodTypeListPreference.isPersistent()); 117 assertTrue(mBloodTypeListPreference.isSelectable()); 118 assertTrue(mBloodTypeListPreference.isNotSet()); 119 assertEquals("", mBloodTypeListPreference.getValue()); 120 assertEquals(mBloodTypeListPreference.getEntryValues().length, 121 mBloodTypeListPreference.getEntries().length); 122 assertEquals(mBloodTypeListPreference.getContentDescriptions().length, 123 mBloodTypeListPreference.getEntries().length); 124 } 125 126 public void testReloadFromPreference() throws Throwable { 127 mEditInfoFragment.getPreferenceManager().getSharedPreferences() 128 .edit() 129 .putString(mOrganDonorPreference.getKey(), 130 (String) mOrganDonorPreference.getEntryValues()[0]) 131 .commit(); 132 runTestOnUiThread(new Runnable() { 133 @Override 134 public void run() { 135 mOrganDonorPreference.reloadFromPreference(); 136 } 137 }); 138 assertEquals(mOrganDonorPreference.getEntryValues()[0], mOrganDonorPreference.getValue()); 139 assertFalse(mOrganDonorPreference.isNotSet()); 140 } 141 142 public void testSetValue() throws Throwable { 143 for (int i = 0; i < mOrganDonorPreference.getEntryValues().length; i++) { 144 final int index = i; 145 runTestOnUiThread(new Runnable() { 146 @Override 147 public void run() { 148 mOrganDonorPreference.setValue((String) 149 mOrganDonorPreference.getEntryValues()[index]); 150 } 151 }); 152 153 assertEquals(mOrganDonorPreference.getEntryValues()[index], 154 mOrganDonorPreference.getValue()); 155 if (!TextUtils.isEmpty(mOrganDonorPreference.getEntryValues()[index])) { 156 assertEquals(mOrganDonorPreference.getEntries()[index], 157 mOrganDonorPreference.getSummary()); 158 } else { 159 assertEquals(getActivity().getResources().getString(R.string.unknown_organ_donor), 160 mOrganDonorPreference.getSummary()); 161 } 162 } 163 } 164 165 public void testContentDescriptions() { 166 for (int i = 0; i < mBloodTypeListPreference.getEntries().length; i++) { 167 SpannableString entry = ((SpannableString) mBloodTypeListPreference.getEntries()[i]); 168 TtsSpan[] span = entry.getSpans(0, 169 mBloodTypeListPreference.getContentDescriptions().length, TtsSpan.class); 170 assertEquals(1, span.length); 171 assertEquals(span[0].getArgs().get(TtsSpan.ARG_TEXT), 172 mBloodTypeListPreference.getContentDescriptions()[i]); 173 } 174 } 175} 176