diff options
author | Stefan Niedermann <info@niedermann.it> | 2020-12-17 12:41:02 +0300 |
---|---|---|
committer | Niedermann IT-Dienstleistungen <stefan-niedermann@users.noreply.github.com> | 2020-12-17 18:14:29 +0300 |
commit | 82c175c3777840a132b3f83c8b62a1f7f436d60d (patch) | |
tree | e308cc17f19416d1839875d734a4330019e903a7 | |
parent | e83f4530b67f4e22598c013b3a588d79b8f3b793 (diff) |
Add test cases for markdown util methods
Signed-off-by: Stefan Niedermann <info@niedermann.it>
3 files changed, 57 insertions, 8 deletions
diff --git a/app/build.gradle b/app/build.gradle index f1e3a2246..633d23360 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,7 +16,6 @@ android { } } multiDexEnabled true - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildFeatures { viewBinding true diff --git a/markdown/src/androidTest/java/it/niedermann/android/markdown/MarkwonMarkdownUtilTest.java b/markdown/src/androidTest/java/it/niedermann/android/markdown/MarkwonMarkdownUtilTest.java index 78d85ab88..ead2985b4 100644 --- a/markdown/src/androidTest/java/it/niedermann/android/markdown/MarkwonMarkdownUtilTest.java +++ b/markdown/src/androidTest/java/it/niedermann/android/markdown/MarkwonMarkdownUtilTest.java @@ -1,18 +1,23 @@ package it.niedermann.android.markdown; +import androidx.test.ext.junit.runners.AndroidJUnit4; + import junit.framework.TestCase; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; import it.niedermann.android.markdown.markwon.MarkwonMarkdownUtil; -/** - * Tests the NoteUtil - * Created by stefan on 06.10.15. - */ +@RunWith(AndroidJUnit4.class) public class MarkwonMarkdownUtilTest extends TestCase { + @Test public void testGetStartOfLine() { //language=md StringBuilder test = new StringBuilder( @@ -45,6 +50,7 @@ public class MarkwonMarkdownUtilTest extends TestCase { } } + @Test public void testGetEndOfLine() { //language=md StringBuilder test = new StringBuilder( @@ -77,8 +83,9 @@ public class MarkwonMarkdownUtilTest extends TestCase { } } + @Test public void testLineStartsWithCheckbox() { - Map<String, Boolean> lines = new HashMap<>(); + final Map<String, Boolean> lines = new HashMap<>(); lines.put("- [ ] ", true); lines.put("- [x] ", true); lines.put("* [ ] ", true); @@ -122,6 +129,7 @@ public class MarkwonMarkdownUtilTest extends TestCase { lines.forEach((key, value) -> assertEquals(value, (Boolean) MarkwonMarkdownUtil.lineStartsWithCheckbox(key))); } + @Test public void testTogglePunctuation() { StringBuilder builder; @@ -188,6 +196,7 @@ public class MarkwonMarkdownUtilTest extends TestCase { // assertEquals("Lorem ***ipsum*** dolor sit amet.", builder.toString()); } + @Test public void testInsertLink() { StringBuilder builder; @@ -211,4 +220,45 @@ public class MarkwonMarkdownUtilTest extends TestCase { assertEquals(46, MarkwonMarkdownUtil.insertLink(builder, 6, 25, "https://example.de")); assertEquals("Lorem [https://example.com](https://example.de) dolor sit amet.", builder.toString()); } + + @Test + @SuppressWarnings("ConstantConditions") + public void testSelectionIsSurroundedByPunctuation() { + try { + final Method m = MarkwonMarkdownUtil.class.getDeclaredMethod("selectionIsSurroundedByPunctuation", CharSequence.class, int.class, int.class, String.class); + m.setAccessible(true); + assertTrue((Boolean) m.invoke(null, "*Lorem ipsum*", 1, 12, "*")); + assertTrue((Boolean) m.invoke(null, "**Lorem ipsum**", 2, 13, "*")); + assertTrue((Boolean) m.invoke(null, "**Lorem ipsum**", 2, 13, "**")); + + assertFalse((Boolean) m.invoke(null, "*Lorem ipsum*", 0, 12, "*")); + assertFalse((Boolean) m.invoke(null, "*Lorem ipsum*", 1, 13, "*")); + assertFalse((Boolean) m.invoke(null, "*Lorem ipsum*", 0, 13, "*")); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { + e.printStackTrace(); + } + } + + @Test + public void testRemoveSurroundingPunctuation() { + try { + final Method m = MarkwonMarkdownUtil.class.getDeclaredMethod("removeSurroundingPunctuation", StringBuilder.class, int.class, int.class, String.class); + m.setAccessible(true); + StringBuilder builder; + + builder = new StringBuilder("*Lorem Ipsum*"); + m.invoke(null, builder, 1, 12, "*"); + assertEquals("Lorem Ipsum", builder.toString()); + + builder = new StringBuilder("**Lorem Ipsum**"); + m.invoke(null, builder, 2, 13, "**"); + assertEquals("Lorem Ipsum", builder.toString()); + + builder = new StringBuilder("**Lorem Ipsum**"); + m.invoke(null, builder, 2, 13, "*"); + assertEquals("*Lorem Ipsum*", builder.toString()); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { + e.printStackTrace(); + } + } }
\ No newline at end of file diff --git a/markdown/src/main/java/it/niedermann/android/markdown/markwon/MarkwonMarkdownUtil.java b/markdown/src/main/java/it/niedermann/android/markdown/markwon/MarkwonMarkdownUtil.java index 465ec678a..559221ad6 100644 --- a/markdown/src/main/java/it/niedermann/android/markdown/markwon/MarkwonMarkdownUtil.java +++ b/markdown/src/main/java/it/niedermann/android/markdown/markwon/MarkwonMarkdownUtil.java @@ -126,7 +126,7 @@ public class MarkwonMarkdownUtil { case "~~": { final boolean selectionIsSurroundedByPunctuation = selectionIsSurroundedByPunctuation(builder.toString(), selectionStart, selectionEnd, punctuation); if (selectionIsSurroundedByPunctuation) { - removeMarkdown(builder, selectionStart, selectionEnd, punctuation); + removeSurroundingPunctuation(builder, selectionStart, selectionEnd, punctuation); } else { builder.insert(selectionEnd, punctuation); builder.insert(selectionStart, punctuation); @@ -180,7 +180,7 @@ public class MarkwonMarkdownUtil { && punctuation.contentEquals(text.subSequence(end, end + punctuation.length())); } - private static void removeMarkdown(@NonNull StringBuilder ssb, int start, int end, @NonNull String punctuation) { + private static void removeSurroundingPunctuation(@NonNull StringBuilder ssb, int start, int end, @NonNull String punctuation) { ssb.delete(end, end + punctuation.length()); ssb.delete(start - punctuation.length(), start); } |