Skip to content

Commit ea3164a

Browse files
Optimize assertCanBeParsedAndDeparsed (#1389)
* Optimize assertCanBeParsedAndDeparsed - Avoid redundant calls of buildSqlString() - Replace String.replaceAll() with Matcher.replaceAll() based on precompiled Regex Patterns * Reset the testcase results
1 parent 98c476a commit ea3164a

File tree

1 file changed

+27
-7
lines changed

1 file changed

+27
-7
lines changed

src/test/java/net/sf/jsqlparser/test/TestUtils.java

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,12 @@ public class TestUtils {
5151
private static final Pattern SQL_COMMENT_PATTERN = Pattern.
5252
compile("(--.*$)|(/\\*.*?\\*/)", Pattern.MULTILINE);
5353

54+
private static final Pattern SQL_SANITATION_PATTERN
55+
= Pattern.compile("(\\s+)", Pattern.MULTILINE);
56+
57+
private static final Pattern SQL_SANITATION_PATTERN2
58+
= Pattern.compile("\\s*([!/,()=+\\-*|\\]<>])\\s*", Pattern.MULTILINE);
59+
5460
/**
5561
* @param statement
5662
* @return the parsed {@link Statement}
@@ -94,10 +100,17 @@ public static void assertStatementCanBeDeparsedAs(Statement parsed, String state
94100
}
95101

96102
public static void assertStatementCanBeDeparsedAs(Statement parsed, String statement, boolean laxDeparsingCheck) {
97-
assertEquals(buildSqlString(statement, laxDeparsingCheck),
98-
buildSqlString(parsed.toString(), laxDeparsingCheck));
103+
String sanitizedInputSqlStr = buildSqlString(parsed.toString(), laxDeparsingCheck);
104+
String sanitizedStatementStr = buildSqlString(statement, laxDeparsingCheck);
105+
106+
assertEquals(sanitizedStatementStr, sanitizedInputSqlStr);
99107

100-
assertDeparse(parsed, statement, laxDeparsingCheck);
108+
StringBuilder builder = new StringBuilder();
109+
parsed.accept( new StatementDeParser(builder) );
110+
111+
String sanitizedDeparsedStr = buildSqlString(builder.toString(), laxDeparsingCheck);
112+
113+
assertEquals(sanitizedStatementStr, sanitizedDeparsedStr);
101114
}
102115

103116
/**
@@ -245,12 +258,19 @@ public static void assertDeparse(Statement stmt, String statement, boolean laxDe
245258
}
246259

247260
public static String buildSqlString(final String originalSql, boolean laxDeparsingCheck) {
248-
String sql = SQL_COMMENT_PATTERN.matcher(originalSql).replaceAll("");
249261
if (laxDeparsingCheck) {
250-
return sql.replaceAll("\\s", " ").replaceAll("\\s+", " ").
251-
replaceAll("\\s*([!/,()=+\\-*|\\]<>])\\s*", "$1").toLowerCase().trim();
262+
// remove comments
263+
String sanitizedSqlStr = SQL_COMMENT_PATTERN.matcher(originalSql).replaceAll("");
264+
265+
// redundant white space
266+
sanitizedSqlStr = SQL_SANITATION_PATTERN.matcher(sanitizedSqlStr).replaceAll(" ");
267+
268+
// replace some more stuff
269+
sanitizedSqlStr = SQL_SANITATION_PATTERN2.matcher(sanitizedSqlStr).replaceAll("$1");
270+
return sanitizedSqlStr.trim().toLowerCase();
252271
} else {
253-
return sql;
272+
// remove comments only
273+
return SQL_COMMENT_PATTERN.matcher(originalSql).replaceAll("");
254274
}
255275
}
256276

0 commit comments

Comments
 (0)