Fix UsageProgressBarPreference number pattern problem
Original design uses the pattern digits + . + digits to recognize a number. However, some locales (e.g., Dutch) uses comma (,) as floating point. This change uses the pattern digits + . or , + digits to recognize a number. Bug: 185666660 Test: atest UsageProgressBarPreferenceTest Change-Id: Ie72b3e8a5ddc4eb3621bdd72976836b9285e96d0
This commit is contained in:
@@ -40,7 +40,7 @@ import java.util.regex.Pattern;
|
||||
*/
|
||||
public class UsageProgressBarPreference extends Preference {
|
||||
|
||||
private final Pattern mNumberPattern = Pattern.compile("[\\d]*\\.?[\\d]+");
|
||||
private final Pattern mNumberPattern = Pattern.compile("[\\d]*[\\.,]?[\\d]+");
|
||||
|
||||
private CharSequence mUsageSummary;
|
||||
private CharSequence mTotalSummary;
|
||||
|
||||
@@ -75,20 +75,41 @@ public class UsageProgressBarPreferenceTest {
|
||||
|
||||
final TextView usageSummary = (TextView) mViewHolder.findViewById(R.id.usage_summary);
|
||||
final SpannedString summary = new SpannedString(usageSummary.getText());
|
||||
assertThat(summary.getSpans(0, summary.length(), AbsoluteSizeSpan.class).length)
|
||||
.isEqualTo(1);
|
||||
final AbsoluteSizeSpan[] spans = summary
|
||||
.getSpans(0, summary.length(), AbsoluteSizeSpan.class);
|
||||
assertThat(spans.length).isEqualTo(1);
|
||||
assertThat(summary.getSpanStart(spans[0])).isEqualTo(0);
|
||||
assertThat(summary.getSpanEnd(spans[0])).isEqualTo(2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setUsageSummary_floatNumber_findAbsoluteSizeSpan() {
|
||||
public void setUsageSummary_floatingPointNumber_findAbsoluteSizeSpan() {
|
||||
mUsageProgressBarPreference.setUsageSummary("3.14Test");
|
||||
|
||||
mUsageProgressBarPreference.onBindViewHolder(mViewHolder);
|
||||
|
||||
final TextView usageSummary = (TextView) mViewHolder.findViewById(R.id.usage_summary);
|
||||
final SpannedString summary = new SpannedString(usageSummary.getText());
|
||||
assertThat(summary.getSpans(0, summary.length(), AbsoluteSizeSpan.class).length)
|
||||
.isEqualTo(1);
|
||||
final AbsoluteSizeSpan[] spans = summary
|
||||
.getSpans(0, summary.length(), AbsoluteSizeSpan.class);
|
||||
assertThat(spans.length).isEqualTo(1);
|
||||
assertThat(summary.getSpanStart(spans[0])).isEqualTo(0);
|
||||
assertThat(summary.getSpanEnd(spans[0])).isEqualTo(4);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setUsageSummary_commaFloatingPointNumber_findAbsoluteSizeSpan() {
|
||||
mUsageProgressBarPreference.setUsageSummary("3,14Test");
|
||||
|
||||
mUsageProgressBarPreference.onBindViewHolder(mViewHolder);
|
||||
|
||||
final TextView usageSummary = (TextView) mViewHolder.findViewById(R.id.usage_summary);
|
||||
final SpannedString summary = new SpannedString(usageSummary.getText());
|
||||
final AbsoluteSizeSpan[] spans = summary
|
||||
.getSpans(0, summary.length(), AbsoluteSizeSpan.class);
|
||||
assertThat(spans.length).isEqualTo(1);
|
||||
assertThat(summary.getSpanStart(spans[0])).isEqualTo(0);
|
||||
assertThat(summary.getSpanEnd(spans[0])).isEqualTo(4);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user