Home | History | Annotate | Download | only in preferences
      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  */
     16 package com.android.emergency.preferences;
     17 
     18 import android.preference.PreferenceManager;
     19 import android.test.ActivityInstrumentationTestCase2;
     20 import android.test.suitebuilder.annotation.LargeTest;
     21 import android.text.SpannableString;
     22 import android.text.TextUtils;
     23 import android.text.style.TtsSpan;
     24 
     25 import com.android.emergency.PreferenceKeys;
     26 import com.android.emergency.R;
     27 import com.android.emergency.edit.EditEmergencyInfoFragment;
     28 import com.android.emergency.edit.EditInfoActivity;
     29 
     30 /**
     31  * Tests for {@link EmergencyListPreference}.
     32  */
     33 @LargeTest
     34 public 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