15290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang/* 25290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang * Copyright (C) 2017 The Android Open Source Project 35290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang * 45290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang * Licensed under the Apache License, Version 2.0 (the "License"); 55290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang * you may not use this file except in compliance with the License. 65290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang * You may obtain a copy of the License at 75290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang * 85290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang * http://www.apache.org/licenses/LICENSE-2.0 95290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang * 105290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang * Unless required by applicable law or agreed to in writing, software 115290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang * distributed under the License is distributed on an "AS IS" BASIS, 125290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang * See the License for the specific language governing permissions and 145290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang * limitations under the License. 155290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang */ 165290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Langpackage com.android.emergency.preferences; 175290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang 185290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Langimport static com.google.common.truth.Truth.assertThat; 195290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang 205290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Langimport android.app.Instrumentation; 215290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Langimport android.content.Context; 225290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Langimport android.content.Intent; 235290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Langimport android.support.test.InstrumentationRegistry; 245290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Langimport android.support.test.runner.AndroidJUnit4; 252c0518a7dfd5b7cd36e88d9f2df064b1e756bd83Juan Langimport android.support.v7.preference.PreferenceManager; 265290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Langimport android.text.SpannableString; 275290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Langimport android.text.style.TtsSpan; 285290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang 295290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Langimport com.android.emergency.PreferenceKeys; 305290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Langimport com.android.emergency.R; 315290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Langimport com.android.emergency.edit.EditInfoActivity; 325290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Langimport com.android.emergency.edit.EditInfoFragment; 335290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang 345290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Langimport org.junit.After; 355290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Langimport org.junit.Before; 365290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Langimport org.junit.Test; 375290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Langimport org.junit.runner.RunWith; 385290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang 395290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang/** Unit tests for {@link EmergencyListPreference}. */ 405290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang@RunWith(AndroidJUnit4.class) 415290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Langpublic final class EmergencyListPreferenceTest { 425290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang private Instrumentation mInstrumentation; 435290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang private Context mTargetContext; 445290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang 455290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang @Before 465290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang public void setUp() { 475290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang mInstrumentation = InstrumentationRegistry.getInstrumentation(); 485290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang mTargetContext = mInstrumentation.getTargetContext(); 495290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang PreferenceManager.getDefaultSharedPreferences(mTargetContext).edit().clear().commit(); 505290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang } 515290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang 525290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang @After 535290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang public void tearDown() { 545290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang PreferenceManager.getDefaultSharedPreferences(mTargetContext).edit().clear().commit(); 555290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang } 565290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang 575290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang @Test 585290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang public void testSummary_organDonor() { 595290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang EditInfoActivity activity = startEditInfoActivity(); 605290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang EditInfoFragment fragment = (EditInfoFragment) activity.getFragment(); 615290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang EmergencyListPreference preference = 625290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang getEmergencyListPreference(fragment, PreferenceKeys.KEY_ORGAN_DONOR); 635290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang String summary = (String) preference.getSummary(); 645290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang String summaryExp = 655290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang mTargetContext.getResources().getString(R.string.unknown_organ_donor); 665290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang assertThat(summary).isEqualTo(summaryExp); 675290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang } 685290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang 695290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang @Test 705290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang public void testSummary_bloodType() { 715290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang EditInfoActivity activity = startEditInfoActivity(); 725290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang EditInfoFragment fragment = (EditInfoFragment) activity.getFragment(); 735290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang EmergencyListPreference preference = 745290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang getEmergencyListPreference(fragment, PreferenceKeys.KEY_BLOOD_TYPE); 755290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang String summary = preference.getSummary().toString(); 765290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang CharSequence summaryExp = 775290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang mTargetContext.getResources().getString(R.string.unknown_blood_type); 785290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang assertThat(summary).isEqualTo(summaryExp); 795290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang } 805290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang 815290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang @Test 825290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang public void testTitle_organDonor() { 835290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang EditInfoActivity activity = startEditInfoActivity(); 845290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang EditInfoFragment fragment = (EditInfoFragment) activity.getFragment(); 855290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang EmergencyListPreference preference = 865290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang getEmergencyListPreference(fragment, PreferenceKeys.KEY_ORGAN_DONOR); 875290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang String title = (String) preference.getTitle(); 885290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang String titleExp = mTargetContext.getResources().getString(R.string.organ_donor); 895290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang assertThat(title).isEqualTo(titleExp); 905290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang } 915290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang 925290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang @Test 935290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang public void testTitle_bloodType() { 945290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang EditInfoActivity activity = startEditInfoActivity(); 955290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang EditInfoFragment fragment = (EditInfoFragment) activity.getFragment(); 965290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang EmergencyListPreference preference = 975290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang getEmergencyListPreference(fragment, PreferenceKeys.KEY_BLOOD_TYPE); 985290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang String title = preference.getTitle().toString(); 995290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang CharSequence titleExp = mTargetContext.getResources().getString(R.string.blood_type); 1005290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang assertThat(title).isEqualTo(titleExp); 1015290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang } 1025290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang 1035290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang @Test 1045290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang public void testProperties_organDonor() { 1055290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang EditInfoActivity activity = startEditInfoActivity(); 1065290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang EditInfoFragment fragment = (EditInfoFragment) activity.getFragment(); 1075290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang EmergencyListPreference preference = 1085290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang getEmergencyListPreference(fragment, PreferenceKeys.KEY_ORGAN_DONOR); 1095290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang assertThat(preference).isNotNull(); 1105290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang assertThat(preference.getKey()).isEqualTo(PreferenceKeys.KEY_ORGAN_DONOR); 1115290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang assertThat(preference.isPersistent()).isTrue(); 1125290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang assertThat(preference.isNotSet()).isTrue(); 1135290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang assertThat(preference.getValue()).isEqualTo(""); 1145290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang assertThat(preference.getEntries().length).isEqualTo(preference.getEntryValues().length); 1155290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang assertThat(preference.getContentDescriptions()).isNull(); 1165290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang } 1175290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang 1185290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang @Test 1195290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang public void testProperties_bloodType() { 1205290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang EditInfoActivity activity = startEditInfoActivity(); 1215290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang EditInfoFragment fragment = (EditInfoFragment) activity.getFragment(); 1225290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang EmergencyListPreference preference = 1235290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang getEmergencyListPreference(fragment, PreferenceKeys.KEY_BLOOD_TYPE); 1245290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang assertThat(preference).isNotNull(); 1255290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang assertThat(preference.getKey()).isEqualTo(PreferenceKeys.KEY_BLOOD_TYPE); 1265290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang assertThat(preference.isPersistent()).isTrue(); 1275290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang assertThat(preference.isNotSet()).isTrue(); 1285290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang assertThat(preference.getValue()).isEqualTo(""); 1295290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang assertThat(preference.getEntries().length).isEqualTo(preference.getEntryValues().length); 1305290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang assertThat(preference.getContentDescriptions().length).isEqualTo( 1315290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang preference.getEntries().length); 1325290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang } 1335290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang 1345290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang @Test 1355290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang public void testContentDescriptions() { 1365290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang EditInfoActivity activity = startEditInfoActivity(); 1375290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang EditInfoFragment fragment = (EditInfoFragment) activity.getFragment(); 1385290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang EmergencyListPreference preference = 1395290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang getEmergencyListPreference(fragment, PreferenceKeys.KEY_BLOOD_TYPE); 1405290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang for (int i = 0; i < preference.getEntries().length; i++) { 1415290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang SpannableString entry = ((SpannableString) preference.getEntries()[i]); 1425290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang TtsSpan[] span = entry.getSpans(0, 1435290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang preference.getContentDescriptions().length, TtsSpan.class); 1445290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang assertThat(span.length).isEqualTo(1); 1455290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang assertThat(preference.getContentDescriptions()[i]).isEqualTo( 1465290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang span[0].getArgs().get(TtsSpan.ARG_TEXT)); 1475290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang } 1485290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang } 1495290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang 1505290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang private EditInfoActivity startEditInfoActivity() { 1515290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang final Intent editActivityIntent = new Intent(mTargetContext, EditInfoActivity.class); 1525290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang return (EditInfoActivity) mInstrumentation.startActivitySync(editActivityIntent); 1535290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang } 1545290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang 1555290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang private EmergencyListPreference getEmergencyListPreference( 1565290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang EditInfoFragment fragment, String key) { 1575290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang return (EmergencyListPreference) fragment.getMedicalInfoPreference(key); 1585290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang } 1595290685a0e5117f0cd02d5d71a72e34d8369be4cJuan Lang} 160