diff --git a/jadx-core/src/test/java/jadx/tests/utils/CountString.java b/jadx-core/src/test/java/jadx/tests/utils/CountString.java new file mode 100644 index 000000000..0b3714d7e --- /dev/null +++ b/jadx-core/src/test/java/jadx/tests/utils/CountString.java @@ -0,0 +1,33 @@ +package jadx.tests.utils; + +import org.hamcrest.core.SubstringMatcher; + +public class CountString extends SubstringMatcher { + + private final int count; + + public CountString(int count, String substring) { + super(substring); + this.count = count; + } + + @Override + protected boolean evalSubstringOf(String string) { + return this.count == countStr(string, substring); + } + + @Override + protected String relationship() { + return "containing " + count + " occurrence of"; + } + + private static int countStr(String string, String substring) { + int cnt = 0; + int idx = 0; + while ((idx = string.indexOf(substring, idx)) != -1) { + idx++; + cnt++; + } + return cnt; + } +} diff --git a/jadx-core/src/test/java/jadx/tests/utils/JadxMatchers.java b/jadx-core/src/test/java/jadx/tests/utils/JadxMatchers.java new file mode 100644 index 000000000..3c78731fb --- /dev/null +++ b/jadx-core/src/test/java/jadx/tests/utils/JadxMatchers.java @@ -0,0 +1,14 @@ +package jadx.tests.utils; + +import org.hamcrest.Matcher; + +public class JadxMatchers { + + public static Matcher countString(int count, String substring) { + return new CountString(count, substring); + } + + public static Matcher containsOne(String substring) { + return new CountString(1, substring); + } +}