diff options
Diffstat (limited to 'libs/editor/example/src/test/java/org/wordpress/android/editor/HtmlStyleUtilsTest.java')
-rw-r--r-- | libs/editor/example/src/test/java/org/wordpress/android/editor/HtmlStyleUtilsTest.java | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/libs/editor/example/src/test/java/org/wordpress/android/editor/HtmlStyleUtilsTest.java b/libs/editor/example/src/test/java/org/wordpress/android/editor/HtmlStyleUtilsTest.java new file mode 100644 index 000000000..12e7793b1 --- /dev/null +++ b/libs/editor/example/src/test/java/org/wordpress/android/editor/HtmlStyleUtilsTest.java @@ -0,0 +1,92 @@ +package org.wordpress.android.editor; + +import android.text.Spannable; +import android.text.SpannableStringBuilder; +import android.text.Spanned; +import android.text.style.CharacterStyle; +import android.text.style.ForegroundColorSpan; +import android.text.style.RelativeSizeSpan; +import android.text.style.StyleSpan; +import android.text.style.UnderlineSpan; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.annotation.Config; + +import static org.junit.Assert.assertEquals; + +@Config(sdk = 18) +@RunWith(RobolectricTestRunner.class) +public class HtmlStyleUtilsTest { + + @Test + public void testBulkStyling() { + // -- Test bulk styling + Spannable content = new SpannableStringBuilder("text <b>bold</b> & <!--a comment--> <a href=\"website\">link</a>"); + HtmlStyleUtils.styleHtmlForDisplay(content); + + assertEquals(0, content.getSpans(0, 5, CharacterStyle.class).length); // 'text ' + + assertEquals(1, content.getSpans(5, 8, ForegroundColorSpan.class).length); // '<b>' + + assertEquals(1, content.getSpans(12, 16, ForegroundColorSpan.class).length); // '</b>' + + assertEquals(1, content.getSpans(17, 22, ForegroundColorSpan.class).length); // '&' + assertEquals(1, content.getSpans(17, 22, StyleSpan.class).length); // '&' + assertEquals(1, content.getSpans(17, 22, RelativeSizeSpan.class).length); // '&' + + assertEquals(1, content.getSpans(23, 39, ForegroundColorSpan.class).length); // '<!--a comment-->' + assertEquals(1, content.getSpans(23, 39, StyleSpan.class).length); // '<!--a comment-->' + assertEquals(1, content.getSpans(23, 39, RelativeSizeSpan.class).length); // '<!--a comment-->' + + assertEquals(2, content.getSpans(40, 58, ForegroundColorSpan.class).length); // '<a href="website">' + assertEquals(1, content.getSpans(40, 48, ForegroundColorSpan.class).length); // '<a href=' + // Attribute span is applied on top of tag span, so there should be 2 ForegroundColorSpans present + assertEquals(2, content.getSpans(48, 57, ForegroundColorSpan.class).length); // '"website"' + assertEquals(1, content.getSpans(57, 58, ForegroundColorSpan.class).length); // '>' + + assertEquals(0, content.getSpans(58, 62, CharacterStyle.class).length); // 'link' + + assertEquals(1, content.getSpans(62, 66, ForegroundColorSpan.class).length); // '</a>' + } + + @Test + public void testClearSpans() { + Spannable content = new SpannableStringBuilder("<b>text &"); + + HtmlStyleUtils.styleHtmlForDisplay(content); + + assertEquals(1, content.getSpans(0, 3, ForegroundColorSpan.class).length); // '<b>' + + assertEquals(1, content.getSpans(9, 14, ForegroundColorSpan.class).length); // '&' + assertEquals(1, content.getSpans(9, 14, StyleSpan.class).length); // '&' + assertEquals(1, content.getSpans(9, 14, RelativeSizeSpan.class).length); // '&' + + HtmlStyleUtils.clearSpans(content, 9, 14); + + assertEquals(1, content.getSpans(0, 3, ForegroundColorSpan.class).length); + + assertEquals(0, content.getSpans(9, 14, ForegroundColorSpan.class).length); + assertEquals(0, content.getSpans(9, 14, StyleSpan.class).length); + assertEquals(0, content.getSpans(9, 14, RelativeSizeSpan.class).length); + + HtmlStyleUtils.clearSpans(content, 0, 3); + + assertEquals(0, content.getSpans(0, 3, ForegroundColorSpan.class).length); + + + } + + @Test + public void testClearSpansShouldIgnoreUnderline() { + // clearSpans() should ignore UnderlineSpan as it's used by the system for spelling suggestions + Spannable content = new SpannableStringBuilder("test"); + + content.setSpan(new UnderlineSpan(), 0, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + + HtmlStyleUtils.clearSpans(content, 0, 4); + + assertEquals(1, content.getSpans(0, 4, UnderlineSpan.class).length); + } +} |