Skip to content

Commit 3c43857

Browse files
committed
fix generating random strings
1 parent 688e505 commit 3c43857

File tree

1 file changed

+12
-18
lines changed

1 file changed

+12
-18
lines changed

src/test/java/org/simdjson/testutils/StringTestData.java

+12-18
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33
import org.apache.commons.lang3.RandomStringUtils;
44
import org.apache.commons.lang3.RandomUtils;
55
import org.apache.commons.text.StringEscapeUtils;
6+
import org.apache.commons.text.translate.AggregateTranslator;
7+
import org.apache.commons.text.translate.CharSequenceTranslator;
8+
import org.apache.commons.text.translate.JavaUnicodeEscaper;
9+
import org.apache.commons.text.translate.LookupTranslator;
610

7-
import java.util.HashMap;
811
import java.util.List;
912
import java.util.Map;
10-
import java.util.regex.Matcher;
1113

1214
import static java.lang.Character.MAX_CODE_POINT;
1315
import static java.lang.Character.isBmpCodePoint;
@@ -16,25 +18,17 @@
1618

1719
public class StringTestData {
1820

19-
private static final Map<String, String> CONTROL_CHARACTER_ESCAPE = new HashMap<>();
20-
21-
static {
22-
for (int codePoint = 0; codePoint <= 0x001F; codePoint++) {
23-
String controlCharacter = String.valueOf((char) codePoint);
24-
CONTROL_CHARACTER_ESCAPE.put(controlCharacter, toUnicodeEscape(codePoint));
25-
}
26-
}
21+
public static final CharSequenceTranslator ESCAPE_JSON = new AggregateTranslator(
22+
new LookupTranslator(Map.of("\"", "\\\"", "\\", "\\\\")),
23+
JavaUnicodeEscaper.below(0x20)
24+
);
2725

2826
public static String randomString(int minChars, int maxChars) {
2927
int stringLen = RandomUtils.nextInt(minChars, maxChars + 1);
30-
var string = RandomStringUtils.random(stringLen)
31-
.replaceAll("\"", "\\\\\"")
32-
.replaceAll("\\\\", "\\\\\\\\");
33-
for (Map.Entry<String, String> entry : CONTROL_CHARACTER_ESCAPE.entrySet()) {
34-
string = string.replaceAll(entry.getKey(), Matcher.quoteReplacement(entry.getValue()));
35-
}
36-
System.out.println("Generated string: " + string + " [" + StringEscapeUtils.escapeJava(string) + "]");
37-
return string;
28+
var rawString = RandomStringUtils.random(stringLen);
29+
var jsonString = ESCAPE_JSON.translate(rawString);
30+
System.out.println("Generated string: " + jsonString + " [" + StringEscapeUtils.escapeJava(jsonString) + "]");
31+
return jsonString;
3832
}
3933

4034
/**

0 commit comments

Comments
 (0)