From 9fae7709b4a5d8791fc71f8bafdf58badf401f74 Mon Sep 17 00:00:00 2001 From: Mihai-Cristian Condrea Date: Sun, 14 Sep 2025 10:20:39 +0300 Subject: [PATCH] test: add CodeHighlighter unit tests --- .../java/utils/CodeHighlighterTest.java | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 app/src/test/java/com/d4rk/androidtutorials/java/utils/CodeHighlighterTest.java diff --git a/app/src/test/java/com/d4rk/androidtutorials/java/utils/CodeHighlighterTest.java b/app/src/test/java/com/d4rk/androidtutorials/java/utils/CodeHighlighterTest.java new file mode 100644 index 00000000..b02037a9 --- /dev/null +++ b/app/src/test/java/com/d4rk/androidtutorials/java/utils/CodeHighlighterTest.java @@ -0,0 +1,60 @@ +package com.d4rk.androidtutorials.java.utils; + +import static org.junit.Assert.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; + +import com.amrdeveloper.codeview.CodeView; + +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Pattern; + +import org.junit.Test; + +/** + * Tests for {@link CodeHighlighter} ensuring themes register syntax patterns and refresh highlighting. + */ +public class CodeHighlighterTest { + + @Test + public void applyJavaTheme_addsPatternsAndReHighlights() { + CodeView codeView = mock(CodeView.class); + List patterns = new ArrayList<>(); + List colors = new ArrayList<>(); + + doAnswer(invocation -> { + patterns.add(invocation.getArgument(0)); + colors.add(invocation.getArgument(1)); + return null; + }).when(codeView).addSyntaxPattern(any(Pattern.class), anyInt()); + + CodeHighlighter.applyJavaTheme(codeView); + + assertEquals(5, patterns.size()); + assertEquals(5, colors.size()); + verify(codeView).reHighlightSyntax(); + } + + @Test + public void applyXmlTheme_addsPatternsAndReHighlights() { + CodeView codeView = mock(CodeView.class); + List patterns = new ArrayList<>(); + List colors = new ArrayList<>(); + + doAnswer(invocation -> { + patterns.add(invocation.getArgument(0)); + colors.add(invocation.getArgument(1)); + return null; + }).when(codeView).addSyntaxPattern(any(Pattern.class), anyInt()); + + CodeHighlighter.applyXmlTheme(codeView); + + assertEquals(4, patterns.size()); + assertEquals(4, colors.size()); + verify(codeView).reHighlightSyntax(); + } +}