Merge "Titlecasing time zone summary" am: 1d6e9cfdf2 am: 16aca1db9f am: e12caf5c9b

Original change: https://android-review.googlesource.com/c/platform/packages/apps/Settings/+/2077567

Change-Id: Id21cf24c3006b91f7518a580100b6fb1868ad6db
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Victor Chang
2022-05-03 14:15:59 +00:00
committed by Automerger Merge Worker
4 changed files with 208 additions and 12 deletions

View File

@@ -18,23 +18,91 @@ package com.android.settings.datetime.timezone;
import static com.google.common.truth.Truth.assertThat;
import android.icu.text.TimeZoneFormat;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import com.android.settings.R;
import com.android.settingslib.datetime.ZoneGetter;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
@RunWith(RobolectricTestRunner.class)
public class SpannableUtilTest {
@Test
public void testFormat() {
public void testGetResourceText() {
CharSequence gmtString = getGmtString("GMT+00:00");
Spannable spannable = SpannableUtil.getResourcesText(
RuntimeEnvironment.application.getResources(), R.string.zone_info_offset_and_name,
"GMT+00:00", "UTC");
gmtString, "UTC");
assertThat(spannable.toString()).isEqualTo("UTC (GMT+00:00)");
// Verify that the spans are kept.
Object[] spans = ((Spannable) gmtString).getSpans(0, gmtString.length(), Object.class);
Object[] newSpans = spannable.getSpans(0, spannable.length(), Object.class);
assertThat(newSpans.length).isEqualTo(spans.length);
assertThat(newSpans).isEqualTo(spans);
}
private static CharSequence getGmtString(String tzId) {
Locale locale = Locale.US;
TimeZoneFormat timeZoneFormat = TimeZoneFormat.getInstance(locale);
TimeZone gmtZone = TimeZone.getTimeZone(tzId);
Date date = new Date(0);
return ZoneGetter.getGmtOffsetText(timeZoneFormat, locale, gmtZone, date);
}
/**
* Verify the assumption on the GMT string used in {@link #testGetResourceText()}
*/
@Test
public void testGetGmtString() {
// Create a GMT string and verify the assumptions
CharSequence gmtString = getGmtString("GMT+00:00");
assertThat(gmtString.toString()).isEqualTo("GMT+00:00");
assertThat(gmtString).isInstanceOf(Spannable.class);
Object[] spans = ((Spannable) gmtString).getSpans(0, gmtString.length(), Object.class);
assertThat(spans).isNotEmpty();
assertThat(getGmtString("GMT-08:00").toString()).isEqualTo("GMT-08:00");
}
@Test
public void testTitleCaseSentences_enUS() {
Locale locale = Locale.US;
CharSequence titleCasedFirstSentence = SpannableUtil.titleCaseSentences(locale,
"pacific Daylight Time starts on Mar 11 2018.");
assertThat(titleCasedFirstSentence.toString())
.isEqualTo("Pacific Daylight Time starts on Mar 11 2018.");
SpannableStringBuilder sb = new SpannableStringBuilder()
.append("uses ")
.append("Pacific Time (")
.append(getGmtString("GMT-08:00"))
.append("). ")
.append(titleCasedFirstSentence);
assertThat(sb.toString()).isEqualTo(
"uses Pacific Time (GMT-08:00). Pacific Daylight Time starts on Mar 11 2018.");
Object[] spans = sb.getSpans(0, sb.length(), Object.class);
assertThat(spans).isNotEmpty();
CharSequence titledOutput = SpannableUtil.titleCaseSentences(Locale.US, sb);
assertThat(titledOutput.toString()).isEqualTo(
"Uses Pacific Time (GMT-08:00). Pacific Daylight Time starts on Mar 11 2018.");
assertThat(titledOutput).isInstanceOf(Spannable.class);
Object[] newSpans = ((Spannable) titledOutput).getSpans(0, titledOutput.length(),
Object.class);
assertThat(newSpans.length).isEqualTo(spans.length);
assertThat(newSpans).isEqualTo(spans);
}
}