Skip to content

Commit a7ac680

Browse files
committed
use our own StringUtils at more places
1 parent 26f19ca commit a7ac680

File tree

3 files changed

+57
-1
lines changed

3 files changed

+57
-1
lines changed

src/main/java/org/htmlunit/html/HtmlNumberInput.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@
2323
import java.util.Locale;
2424
import java.util.Map;
2525

26-
import org.apache.commons.lang3.StringUtils;
2726
import org.htmlunit.SgmlPage;
2827
import org.htmlunit.util.ArrayUtils;
28+
import org.htmlunit.util.StringUtils;
2929

3030
/**
3131
* Wrapper for the HTML element "input" with type is "number".

src/main/java/org/htmlunit/util/StringUtils.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -941,4 +941,36 @@ public static String trimRight(final String str) {
941941

942942
return str.substring(0, end);
943943
}
944+
945+
/**
946+
* @param cs the String to check, may be null.
947+
* @param valid an array of valid chars, may be null.
948+
* @return true if it only contains valid chars and is non-null.
949+
*/
950+
public static boolean containsOnly(final CharSequence cs, final char... valid) {
951+
if (valid == null || valid.length == 0) {
952+
throw new IllegalArgumentException("Expected valid char[] can't be null or empty");
953+
}
954+
if (isEmptyOrNull(cs)) {
955+
return false;
956+
}
957+
958+
final int csLength = cs.length();
959+
final int validLength = valid.length;
960+
for (int i = 0; i < csLength; i++) {
961+
final char testChar = cs.charAt(i);
962+
int j = 0;
963+
for ( ; j < validLength; j++) {
964+
final char validChar = valid[j];
965+
if (validChar == testChar) {
966+
break;
967+
}
968+
}
969+
if (j == validLength) {
970+
return false;
971+
}
972+
}
973+
974+
return true;
975+
}
944976
}

src/test/java/org/htmlunit/util/StringUtilsTest.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,30 @@ public void containsIgnoreCase() throws Exception {
201201
Assertions.assertThrows(IllegalArgumentException.class, () -> StringUtils.containsIgnoreCase("", ""));
202202
}
203203

204+
205+
/**
206+
* @throws Exception if the test fails
207+
*/
208+
@Test
209+
public void containsOnly() {
210+
assertFalse(StringUtils.containsOnly(null, "x".toCharArray()));
211+
assertFalse(StringUtils.containsOnly("", "x".toCharArray()));
212+
assertFalse(StringUtils.containsOnly("a", "x".toCharArray()));
213+
assertFalse(StringUtils.containsOnly("ax", "x".toCharArray()));
214+
assertFalse(StringUtils.containsOnly("xa", "x".toCharArray()));
215+
216+
assertTrue(StringUtils.containsOnly("x", "ax".toCharArray()));
217+
assertTrue(StringUtils.containsOnly("aa", "ax".toCharArray()));
218+
assertTrue(StringUtils.containsOnly("ax", "ax".toCharArray()));
219+
assertTrue(StringUtils.containsOnly("axaaa", "ax".toCharArray()));
220+
assertTrue(StringUtils.containsOnly("xaaxxxaa", "xa".toCharArray()));
221+
222+
Assertions.assertThrows(IllegalArgumentException.class, () -> StringUtils.containsOnly("AB", null));
223+
Assertions.assertThrows(IllegalArgumentException.class,
224+
() -> StringUtils.containsOnly("AB", ArrayUtils.EMPTY_CHAR_ARRAY));
225+
}
226+
227+
204228
/**
205229
* @throws Exception if the test fails
206230
*/

0 commit comments

Comments
 (0)