From 0fabf7daffea4dde7632c262f80670b19ea9535c Mon Sep 17 00:00:00 2001 From: Dimitry Ivanov Date: Thu, 7 Nov 2019 17:36:49 +0300 Subject: [PATCH] Fix core tests --- .../io/noties/markwon/MarkwonImplTest.java | 10 ++ .../markwon/sample/editor/EditorActivity.java | 97 ++++++++----------- 2 files changed, 49 insertions(+), 58 deletions(-) diff --git a/markwon-core/src/test/java/io/noties/markwon/MarkwonImplTest.java b/markwon-core/src/test/java/io/noties/markwon/MarkwonImplTest.java index 2eb4f3f8..0d9024d4 100644 --- a/markwon-core/src/test/java/io/noties/markwon/MarkwonImplTest.java +++ b/markwon-core/src/test/java/io/noties/markwon/MarkwonImplTest.java @@ -49,6 +49,7 @@ public class MarkwonImplTest { null, mock(Parser.class), mock(MarkwonVisitorFactory.class), + mock(MarkwonConfiguration.class), Collections.singletonList(plugin)); impl.parse("whatever"); @@ -72,6 +73,7 @@ public class MarkwonImplTest { null, parser, mock(MarkwonVisitorFactory.class), + mock(MarkwonConfiguration.class), Arrays.asList(first, second)); impl.parse("zero"); @@ -99,6 +101,7 @@ public class MarkwonImplTest { null, mock(Parser.class), visitorFactory, + mock(MarkwonConfiguration.class), Collections.singletonList(plugin)); when(visitorFactory.create()).thenReturn(visitor); @@ -145,6 +148,7 @@ public class MarkwonImplTest { null, mock(Parser.class), visitorFactory, + mock(MarkwonConfiguration.class), Collections.emptyList()); impl.render(mock(Node.class)); @@ -180,6 +184,7 @@ public class MarkwonImplTest { null, mock(Parser.class), visitorFactory, + mock(MarkwonConfiguration.class), Collections.singletonList(plugin)); final AtomicBoolean flag = new AtomicBoolean(false); @@ -218,6 +223,7 @@ public class MarkwonImplTest { null, mock(Parser.class), mock(MarkwonVisitorFactory.class, RETURNS_MOCKS), + mock(MarkwonConfiguration.class), Collections.singletonList(plugin)); final TextView textView = mock(TextView.class); @@ -265,6 +271,7 @@ public class MarkwonImplTest { null, mock(Parser.class), mock(MarkwonVisitorFactory.class), + mock(MarkwonConfiguration.class), plugins); assertTrue("First", impl.hasPlugin(First.class)); @@ -287,6 +294,7 @@ public class MarkwonImplTest { textSetter, mock(Parser.class), mock(MarkwonVisitorFactory.class), + mock(MarkwonConfiguration.class), Collections.singletonList(plugin)); final TextView textView = mock(TextView.class); @@ -330,6 +338,7 @@ public class MarkwonImplTest { null, mock(Parser.class), mock(MarkwonVisitorFactory.class), + mock(MarkwonConfiguration.class), plugins); // should be returned @@ -360,6 +369,7 @@ public class MarkwonImplTest { null, mock(Parser.class), mock(MarkwonVisitorFactory.class), + mock(MarkwonConfiguration.class), plugins); final List list = impl.getPlugins(); diff --git a/sample/src/main/java/io/noties/markwon/sample/editor/EditorActivity.java b/sample/src/main/java/io/noties/markwon/sample/editor/EditorActivity.java index 33c79ad8..271b6b69 100644 --- a/sample/src/main/java/io/noties/markwon/sample/editor/EditorActivity.java +++ b/sample/src/main/java/io/noties/markwon/sample/editor/EditorActivity.java @@ -64,13 +64,13 @@ public class EditorActivity extends Activity { private void simple_process() { // Process highlight in-place (right after text has changed) -// obtain Markwon instance + // obtain Markwon instance final Markwon markwon = Markwon.create(this); -// create editor + // create editor final MarkwonEditor editor = MarkwonEditor.create(markwon); -// set edit listener + // set edit listener editText.addTextChangedListener(MarkwonEditorTextWatcher.withProcess(editor)); } @@ -80,25 +80,6 @@ public class EditorActivity extends Activity { final Markwon markwon = Markwon.create(this); final MarkwonEditor editor = MarkwonEditor.create(markwon); -editor.process(editText.getText()); - -// please note that MarkwonEditor operates on caller thread, -// fi you wish to execute this operation in background - this method -// must be called from background thread -editor.preRender(editText.getText(), new MarkwonEditor.PreRenderResultListener() { - @Override - public void onPreRenderResult(@NonNull MarkwonEditor.PreRenderResult result) { - // it's wise to check if rendered result is for the same input, - // for example by matching raw input - if (editText.getText().toString().equals(result.resultEditable().toString())) { - - // if you are in background thread do not forget - // to execute dispatch in main thread - result.dispatchTo(editText.getText()); - } - } -}); - editText.addTextChangedListener(MarkwonEditorTextWatcher.withPreRender( editor, Executors.newCachedThreadPool(), @@ -108,9 +89,9 @@ editor.preRender(editText.getText(), new MarkwonEditor.PreRenderResultListener() private void custom_punctuation_span() { // Use own punctuation span -final MarkwonEditor editor = MarkwonEditor.builder(Markwon.create(this)) - .withPunctuationSpan(CustomPunctuationSpan.class, CustomPunctuationSpan::new) - .build(); + final MarkwonEditor editor = MarkwonEditor.builder(Markwon.create(this)) + .withPunctuationSpan(CustomPunctuationSpan.class, CustomPunctuationSpan::new) + .build(); editText.addTextChangedListener(MarkwonEditorTextWatcher.withProcess(editor)); } @@ -118,35 +99,35 @@ final MarkwonEditor editor = MarkwonEditor.builder(Markwon.create(this)) private void additional_edit_span() { // An additional span is used to highlight strong-emphasis -final MarkwonEditor editor = MarkwonEditor.builder(Markwon.create(this)) - // This is required for edit-span cache - // We could use Markwon `StrongEmphasisSpan` here, but I use a different - // one to indicate that those are completely unrelated spans and must be - // treated differently. - .includeEditSpan(Bold.class, Bold::new) - .withEditSpanHandler(new MarkwonEditor.EditSpanHandler() { - @Override - public void handle( - @NonNull MarkwonEditor.EditSpanStore store, - @NonNull Editable editable, - @NonNull String input, - @NonNull Object span, - int spanStart, - int spanTextLength) { - if (span instanceof StrongEmphasisSpan) { - editable.setSpan( - // `includeEditSpan(Bold.class, Bold::new)` ensured that we have - // a span here to use (either reuse existing or create a new one) - store.get(Bold.class), - spanStart, - // we know that strong emphasis is delimited with 2 characters on both sides - spanStart + spanTextLength + 4, - Spanned.SPAN_EXCLUSIVE_EXCLUSIVE - ); - } - } - }) - .build(); + final MarkwonEditor editor = MarkwonEditor.builder(Markwon.create(this)) + // This is required for edit-span cache + // We could use Markwon `StrongEmphasisSpan` here, but I use a different + // one to indicate that those are completely unrelated spans and must be + // treated differently. + .includeEditSpan(Bold.class, Bold::new) + .withEditSpanHandler(new MarkwonEditor.EditSpanHandler() { + @Override + public void handle( + @NonNull MarkwonEditor.EditSpanStore store, + @NonNull Editable editable, + @NonNull String input, + @NonNull Object span, + int spanStart, + int spanTextLength) { + if (span instanceof StrongEmphasisSpan) { + editable.setSpan( + // `includeEditSpan(Bold.class, Bold::new)` ensured that we have + // a span here to use (either reuse existing or create a new one) + store.get(Bold.class), + spanStart, + // we know that strong emphasis is delimited with 2 characters on both sides + spanStart + spanTextLength + 4, + Spanned.SPAN_EXCLUSIVE_EXCLUSIVE + ); + } + } + }) + .build(); editText.addTextChangedListener(MarkwonEditorTextWatcher.withProcess(editor)); } @@ -335,11 +316,11 @@ final MarkwonEditor editor = MarkwonEditor.builder(Markwon.create(this)) } } -private static class CustomPunctuationSpan extends ForegroundColorSpan { - CustomPunctuationSpan() { - super(0xFFFF0000); // RED + private static class CustomPunctuationSpan extends ForegroundColorSpan { + CustomPunctuationSpan() { + super(0xFFFF0000); // RED + } } -} private static class Bold extends MetricAffectingSpan { public Bold() {