From 4b230412b6b658d71ce0e17539e97bc3fa8c98e2 Mon Sep 17 00:00:00 2001 From: cpfeiffer Date: Sat, 11 Mar 2017 22:15:44 +0100 Subject: [PATCH] Some utility methods + tests --- .../gadgetbridge/util/NotificationUtils.java | 22 ++++++-- .../gadgetbridge/util/StringUtils.java | 30 +++++++--- .../gadgetbridge/test/StringUtilsTest.java | 56 +++++++++++++++++++ 3 files changed, 95 insertions(+), 13 deletions(-) create mode 100644 app/src/test/java/nodomain/freeyourgadget/gadgetbridge/test/StringUtilsTest.java diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/NotificationUtils.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/NotificationUtils.java index 2623866b2..7e7b8df02 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/NotificationUtils.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/NotificationUtils.java @@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.util; import android.content.Context; import android.support.annotation.NonNull; +import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.model.CallSpec; import nodomain.freeyourgadget.gadgetbridge.model.NotificationSpec; @@ -47,13 +48,22 @@ public class NotificationUtils { } @NonNull - public static String formatText(String sender, String subject, String body, int lengthBody, int lengthSubject, Context context) { - StringBuilder builder = new StringBuilder(); - builder.append(StringUtils.truncate(body, lengthBody)); - builder.append(StringUtils.truncate(subject, lengthSubject)); - builder.append(StringUtils.formatSender(sender, context)); + public static String formatSender(String sender, Context context) { + if (sender == null || sender.length() == 0) { + return ""; + } + return context.getString(R.string.StringUtils_sender, sender); + } - return builder.toString(); + + @NonNull + public static String formatText(String sender, String subject, String body, int lengthBody, int lengthSubject, Context context) { + String fBody = StringUtils.truncate(body, lengthBody); + String fSubject = StringUtils.truncate(subject, lengthSubject); + String fSender = formatSender(sender, context); + + StringBuilder builder = StringUtils.join(" ", fBody, fSubject, fSender); + return builder.toString().trim(); } public static String getPreferredTextFor(CallSpec callSpec) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/StringUtils.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/StringUtils.java index 1ebe8ee3c..8dcc07a01 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/StringUtils.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/StringUtils.java @@ -16,11 +16,8 @@ along with this program. If not, see . */ package nodomain.freeyourgadget.gadgetbridge.util; -import android.content.Context; import android.support.annotation.NonNull; -import nodomain.freeyourgadget.gadgetbridge.R; - public class StringUtils { public static String truncate(String s, int maxLength){ @@ -47,12 +44,31 @@ public class StringUtils { return s; } + /** + * Joins the given elements and adds a separator between each element in the resulting string. + * There will be no separator at the start or end of the string. There will be no consecutive + * separators (even in case an element is null or empty). + * @param separator the separator string + * @param elements the elements to concatenate to a new string + * @return the joined strings, separated by the separator + */ @NonNull - public static String formatSender(String sender, Context context) { - if (sender == null || sender.length() == 0) { - return ""; + public static StringBuilder join(String separator, String... elements) { + StringBuilder builder = new StringBuilder(); + if (elements == null) { + return builder; } - return context.getString(R.string.StringUtils_sender, sender); + boolean hasAdded = false; + for (String element : elements) { + if (element != null && element.length() > 0) { + if (hasAdded) { + builder.append(separator); + } + builder.append(element); + hasAdded = true; + } + } + return builder; } @NonNull diff --git a/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/test/StringUtilsTest.java b/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/test/StringUtilsTest.java new file mode 100644 index 000000000..b8cb73600 --- /dev/null +++ b/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/test/StringUtilsTest.java @@ -0,0 +1,56 @@ +package nodomain.freeyourgadget.gadgetbridge.test; + +import org.junit.Test; + +import nodomain.freeyourgadget.gadgetbridge.util.StringUtils; + +import static org.junit.Assert.assertEquals; + +public class StringUtilsTest extends TestBase { + private static final String SEP = ":"; + private static final String E1 = "e1"; + private static final String E2 = "e2"; + private static final String E3 = "e3"; + + @Test + public void testJoinNull() { + StringBuilder result = StringUtils.join(SEP, (String[]) null); + assertEquals("", result.toString()); + } + + @Test + public void testJoinNullElement() { + StringBuilder result = StringUtils.join(SEP, (String) null); + assertEquals("", result.toString()); + } + + @Test + public void testJoinSingleElement() { + StringBuilder result = StringUtils.join(SEP, E1); + assertEquals(E1, result.toString()); + } + + @Test + public void testJoinSingleAndNullElement() { + StringBuilder result = StringUtils.join(SEP, E1, null); + assertEquals(E1, result.toString()); + } + + @Test + public void testJoinTwoElements() { + StringBuilder result = StringUtils.join(SEP, E1, E2); + assertEquals(E1 + SEP + E2, result.toString()); + } + + @Test + public void testJoinTwoElementsAndNull() { + StringBuilder result = StringUtils.join(SEP, E1, null, E2); + assertEquals(E1 + SEP + E2, result.toString()); + } + + @Test + public void testJoinThreeElements() { + StringBuilder result = StringUtils.join(SEP, E1, E2, E3); + assertEquals(E1 + SEP + E2 + SEP + E3, result.toString()); + } +}