diff options
author | Chris Warrington <cmw@google.com> | 2016-10-18 12:29:21 +0100 |
---|---|---|
committer | Chris Warrington <cmw@google.com> | 2016-10-18 12:34:18 +0100 |
commit | e3780081075c01aa1dff6d1f373cb43192b33e68 (patch) | |
tree | fb734615933a39f3d009210dc0d1457160479b35 /libs/editor/example/src/test/java/org/wordpress/android/editor/HtmlStyleUtilsTest.java | |
parent | 7e05eb7e57827eddc885570bc00aed8a50320dbf (diff) | |
parent | 025b8b226c8d8edba2b309ca878572f40512eca7 (diff) | |
download | gradle-perf-android-medium-mirror-goog-studio-master-dev.tar.gz |
Merge remote-tracking branch 'origin/upstream-master' into masterHEADstudio-3.4.0studio-3.2.1studio-3.1.2studio-3.0studio-2.3gradle_3.4.0gradle_3.1.2gradle_3.0.0gradle_2.3.0studio-master-devmirror-goog-studio-master-devmastermain
Change-Id: I63f5e16d09297c48432192761b840310935eb903
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); + } +} |