am 8ff0c53a: am 7cb7e692: am 64ede9ee: am 174d1591: Unit test for Utils

* commit '8ff0c53aeaedb7a07610d7934d8f00fd15a1ede1':
  Unit test for Utils
diff --git a/tests/src/com/android/mail/utils/UtilsTest.java b/tests/src/com/android/mail/utils/UtilsTest.java
new file mode 100644
index 0000000..36fe6e5
--- /dev/null
+++ b/tests/src/com/android/mail/utils/UtilsTest.java
@@ -0,0 +1,77 @@
+/**
+ * Copyright (c) 2014, Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.mail.utils;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.text.SpannableString;
+import android.text.Spanned;
+import android.text.style.TextAppearanceSpan;
+
+/**
+ * Tests for {@link Utils}.
+ */
+@SmallTest
+public class UtilsTest extends AndroidTestCase {
+
+    public void testInsertStringWithStyle() {
+        final String entire = "Hello World!";
+        final String sub = "World";
+        final int appearance = android.R.style.TextAppearance_Holo_Small;
+        final Spanned actual = Utils.insertStringWithStyle(
+                getContext(), entire, sub, appearance);
+        final SpannableString expected = new SpannableString(entire);
+        expected.setSpan(new TextAppearanceSpan(getContext(), appearance), 6, 11, 0);
+
+        assertSpannedEquals(expected, actual);
+    }
+
+    public void testInsertStringWithStyle_substringNotInEntire() {
+        final String entire = "Hello World!";
+        final String sub = "foo";
+        final int appearance = android.R.style.TextAppearance_Holo_Small;
+        final Spanned actual = Utils.insertStringWithStyle(
+                getContext(), entire, sub, appearance);
+        final SpannableString expected = new SpannableString(entire);
+
+        assertSpannedEquals(expected, actual);
+    }
+
+    public static void assertSpannedEquals(Spanned expected, Spanned actual) {
+        assertEquals(expected.length(), actual.length());
+        assertEquals(expected.toString(), actual.toString());
+        if (expected.length() > 0) {
+            TextAppearanceSpan[] expectedSpans =
+                    expected.getSpans(0, expected.length(), TextAppearanceSpan.class);
+            TextAppearanceSpan[] actualSpans =
+                    actual.getSpans(0, actual.length(), TextAppearanceSpan.class);
+            assertEquals(expectedSpans.length, actualSpans.length);
+            for (int i = 0 ; i < expectedSpans.length ; i++) {
+                assertTextAppearanceSpanEquals(expectedSpans[i], actualSpans[i]);
+            }
+        }
+    }
+
+    public static void assertTextAppearanceSpanEquals(
+            TextAppearanceSpan expected, TextAppearanceSpan actual) {
+        assertEquals(expected.describeContents(), actual.describeContents());
+        assertEquals(expected.getTextStyle(), actual.getTextStyle());
+        assertEquals(expected.getTextColor(), actual.getTextColor());
+        assertEquals(expected.getLinkTextColor(), actual.getLinkTextColor());
+        assertEquals(expected.getFamily(), actual.getFamily());
+        assertEquals(expected.getTextSize(), actual.getTextSize());
+    }
+}