diff --git a/app/src/test/java/android/text/TextUtils.java b/app/src/test/java/android/text/TextUtils.java new file mode 100644 index 000000000..0cb57cdd5 --- /dev/null +++ b/app/src/test/java/android/text/TextUtils.java @@ -0,0 +1,82 @@ +package android.text; + + +import androidx.annotation.Nullable; + +/** + * This Class Mocks TextUtils for the purpose of testing. + * NOTE: This class would not change the function of the TextUtils used in app + * it onlt mocks it for the unit tests + * + */ +public class TextUtils { + /** + * mocks TextUtils.isEmpty + */ + public static boolean isEmpty(@Nullable CharSequence str) { + return str == null || str.length() == 0; + } + + /** + * mocks TextUtils.equals + */ + public static boolean equals(CharSequence a, CharSequence b) { + if (a == b) return true; + int length; + if (a != null && b != null && (length = a.length()) == b.length()) { + if (a instanceof String && b instanceof String) { + return a.equals(b); + } else { + for (int i = 0; i < length; i++) { + if (a.charAt(i) != b.charAt(i)) return false; + } + return true; + } + } + return false; + } + + /** + * mocks TextUtils.isDigitsOnly + */ + public static boolean isDigitsOnly(CharSequence str) { + final int len = str.length(); + for (int cp, i = 0; i < len; i += Character.charCount(cp)) { + cp = Character.codePointAt(str, i); + if (!Character.isDigit(cp)) { + return false; + } + } + return true; + } + + /** + * mocks TextUtils.isNewline + */ + private static boolean isNewline(int codePoint) { + int type = Character.getType(codePoint); + return type == Character.PARAGRAPH_SEPARATOR || type == Character.LINE_SEPARATOR + || codePoint == 10; + } + + /** + * Returns whether the given CharSequence contains any printable characters. + */ + public static boolean isGraphic(CharSequence str) { + final int len = str.length(); + for (int cp, i=0; i