package com.querydsl.core.types;
import org.junit.Assert;
public final class TemplatesTestUtils {
public static void testPrecedence(Templates templates) {
int likePrecedence = templates.getPrecedence(Ops.LIKE);
int eqPrecedence = templates.getPrecedence(Ops.EQ);
if (templates.getPrecedence(Ops.EQ_IGNORE_CASE) != eqPrecedence) {
Assert.fail("Unexpected precedence for EQ_IGNORE_CASE "
+ templates.getPrecedence(Ops.EQ_IGNORE_CASE));
}
for (Operator op : Ops.values()) {
Template template = templates.getTemplate(op);
String str = template.toString();
int precedence = templates.getPrecedence(op);
if (str.contains(" like ") && precedence != likePrecedence) {
Assert.fail("Unexpected precedence for " + op + " with template " + template);
} else if (!str.contains("(") && !str.contains(".") && precedence < 0) {
Assert.fail("Unexpected precedence for " + op + " with template " + template);
} else if (str.matches(".*[<>] ?\\-?\\d")) {
if (precedence != Templates.Precedence.COMPARISON) {
Assert.fail("Unsafe pattern for " + op + " with template " + template);
}
} else if (str.matches(".*[\\+\\-] ?\\-?\\d")) {
if (precedence != Templates.Precedence.ARITH_LOW && precedence != Templates.Precedence.ARITH_HIGH) {
Assert.fail("Unsafe pattern for " + op + " with template " + template);
}
}
}
}
private TemplatesTestUtils() { }
}