Skip to content

Commit 318c95f

Browse files
cdjolemaibin
authored andcommitted
String containing characters (eugenp#5026)
1 parent 32f2daa commit 318c95f

1 file changed

Lines changed: 98 additions & 0 deletions

File tree

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
package com.baeldung.string;
2+
3+
import org.junit.Test;
4+
5+
import java.util.regex.Pattern;
6+
7+
import static junit.framework.TestCase.assertFalse;
8+
import static junit.framework.TestCase.assertTrue;
9+
10+
public class StringContainingCharactersUnitTest {
11+
12+
private static final Pattern[] inputRegexes = new Pattern[4];
13+
14+
static {
15+
inputRegexes[0] = Pattern.compile(".*[A-Z].*");
16+
inputRegexes[1] = Pattern.compile(".*[a-z].*");
17+
inputRegexes[2] = Pattern.compile(".*\\d.*");
18+
inputRegexes[3] = Pattern.compile(".*[`~!@#$%^&*()\\-_=+\\\\|\\[{\\]};:'\",<.>/?].*");
19+
}
20+
21+
private static boolean isMatchingRegex(String input) {
22+
boolean inputMatches = true;
23+
for (Pattern inputRegex : inputRegexes) {
24+
if (!inputRegex
25+
.matcher(input)
26+
.matches()) {
27+
inputMatches = false;
28+
}
29+
}
30+
return inputMatches;
31+
}
32+
33+
private static boolean checkString(String input) {
34+
String specialChars = "~`!@#$%^&*()-_=+\\|[{]};:'\",<.>/?";
35+
char currentCharacter;
36+
boolean numberPresent = false;
37+
boolean upperCasePresent = false;
38+
boolean lowerCasePresent = false;
39+
boolean specialCharacterPresent = false;
40+
41+
for (int i = 0; i < input.length(); i++) {
42+
currentCharacter = input.charAt(i);
43+
if (Character.isDigit(currentCharacter)) {
44+
numberPresent = true;
45+
} else if (Character.isUpperCase(currentCharacter)) {
46+
upperCasePresent = true;
47+
} else if (Character.isLowerCase(currentCharacter)) {
48+
lowerCasePresent = true;
49+
} else if (specialChars.contains(String.valueOf(currentCharacter))) {
50+
specialCharacterPresent = true;
51+
}
52+
}
53+
54+
return numberPresent && upperCasePresent && lowerCasePresent && specialCharacterPresent;
55+
}
56+
57+
@Test
58+
public void givenRegexes_whenMatchingCorrectString_thenMatches() {
59+
String validInput = "Ab3;";
60+
assertTrue(isMatchingRegex(validInput));
61+
}
62+
63+
@Test
64+
public void givenRegexes_whenMatchingWrongStrings_thenNotMatching() {
65+
String invalidInput = "Ab3";
66+
assertFalse(isMatchingRegex(invalidInput));
67+
68+
invalidInput = "Ab;";
69+
assertFalse(isMatchingRegex(invalidInput));
70+
71+
invalidInput = "A3;";
72+
assertFalse(isMatchingRegex(invalidInput));
73+
74+
invalidInput = "b3;";
75+
assertFalse(isMatchingRegex(invalidInput));
76+
}
77+
78+
@Test
79+
public void givenValidString_whenChecking_thenCorrect() {
80+
String validInput = "Ab3;";
81+
assertTrue(checkString(validInput));
82+
}
83+
84+
@Test
85+
public void givenInvalidStrings_whenChecking_thenNotCorrect() {
86+
String invalidInput = "Ab3";
87+
assertFalse(checkString(invalidInput));
88+
89+
invalidInput = "Ab;";
90+
assertFalse(checkString(invalidInput));
91+
92+
invalidInput = "A3;";
93+
assertFalse(checkString(invalidInput));
94+
95+
invalidInput = "b3;";
96+
assertFalse(checkString(invalidInput));
97+
}
98+
}

0 commit comments

Comments
 (0)