Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7274cd61 authored by Arc Wang's avatar Arc Wang
Browse files

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
parent 78d8d4d6
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -40,7 +40,7 @@ import java.util.regex.Pattern;
 */
 */
public class UsageProgressBarPreference extends Preference {
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 mUsageSummary;
    private CharSequence mTotalSummary;
    private CharSequence mTotalSummary;
+26 −5
Original line number Original line Diff line number Diff line
@@ -75,20 +75,41 @@ public class UsageProgressBarPreferenceTest {


        final TextView usageSummary = (TextView) mViewHolder.findViewById(R.id.usage_summary);
        final TextView usageSummary = (TextView) mViewHolder.findViewById(R.id.usage_summary);
        final SpannedString summary = new SpannedString(usageSummary.getText());
        final SpannedString summary = new SpannedString(usageSummary.getText());
        assertThat(summary.getSpans(0, summary.length(), AbsoluteSizeSpan.class).length)
        final AbsoluteSizeSpan[] spans = summary
                .isEqualTo(1);
                .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
    @Test
    public void setUsageSummary_floatNumber_findAbsoluteSizeSpan() {
    public void setUsageSummary_floatingPointNumber_findAbsoluteSizeSpan() {
        mUsageProgressBarPreference.setUsageSummary("3.14Test");
        mUsageProgressBarPreference.setUsageSummary("3.14Test");


        mUsageProgressBarPreference.onBindViewHolder(mViewHolder);
        mUsageProgressBarPreference.onBindViewHolder(mViewHolder);


        final TextView usageSummary = (TextView) mViewHolder.findViewById(R.id.usage_summary);
        final TextView usageSummary = (TextView) mViewHolder.findViewById(R.id.usage_summary);
        final SpannedString summary = new SpannedString(usageSummary.getText());
        final SpannedString summary = new SpannedString(usageSummary.getText());
        assertThat(summary.getSpans(0, summary.length(), AbsoluteSizeSpan.class).length)
        final AbsoluteSizeSpan[] spans = summary
                .isEqualTo(1);
                .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
    @Test