From 0a241e3a9c37eeda964a5e90a702db7754d56426 Mon Sep 17 00:00:00 2001 From: Skylot Date: Sat, 28 Jun 2014 15:38:50 +0400 Subject: [PATCH] core tests: add custom string matchers --- .../java/jadx/tests/utils/CountString.java | 33 +++++++++++++++++++ .../java/jadx/tests/utils/JadxMatchers.java | 14 ++++++++ 2 files changed, 47 insertions(+) create mode 100644 jadx-core/src/test/java/jadx/tests/utils/CountString.java create mode 100644 jadx-core/src/test/java/jadx/tests/utils/JadxMatchers.java 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); + } +}