mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
175 lines
4.5 KiB
Java
175 lines
4.5 KiB
Java
package io.ebeaninternal.server.expression;
|
|
|
|
import io.ebeaninternal.api.HashQueryPlanBuilder;
|
|
import org.jetbrains.annotations.NotNull;
|
|
import org.junit.Test;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
import java.util.List;
|
|
|
|
import static org.assertj.core.api.StrictAssertions.assertThat;
|
|
import static org.junit.Assert.assertEquals;
|
|
import static org.junit.Assert.assertNotEquals;
|
|
|
|
public class InExpressionTest {
|
|
|
|
|
|
@Test
|
|
public void queryPlanHash_given_diffPropertyName_should_differentPlanHash() throws Exception {
|
|
|
|
List<Integer> values = values(42, 92);
|
|
|
|
InExpression ex1 = new InExpression("foo", values, false);
|
|
InExpression ex2 = new InExpression("bar", values, false);
|
|
|
|
ex1.prepareExpression(null);
|
|
ex2.prepareExpression(null);
|
|
|
|
HashQueryPlanBuilder b1 = new HashQueryPlanBuilder();
|
|
ex1.queryPlanHash(b1);
|
|
|
|
HashQueryPlanBuilder b2 = new HashQueryPlanBuilder();
|
|
ex2.queryPlanHash(b2);
|
|
|
|
assertNotEquals(b1.build(), b2.build());
|
|
}
|
|
|
|
@Test
|
|
public void queryPlanHash_given_diffBindCount_should_differentPlanHash() throws Exception {
|
|
|
|
List<Integer> values1 = values(42, 92);
|
|
List<Integer> values2 = values(42, 92, 82);
|
|
|
|
InExpression ex1 = new InExpression("foo", values1, false);
|
|
InExpression ex2 = new InExpression("foo", values2, false);
|
|
|
|
ex1.prepareExpression(null);
|
|
ex2.prepareExpression(null);
|
|
|
|
HashQueryPlanBuilder b1 = new HashQueryPlanBuilder();
|
|
ex1.queryPlanHash(b1);
|
|
|
|
HashQueryPlanBuilder b2 = new HashQueryPlanBuilder();
|
|
ex2.queryPlanHash(b2);
|
|
|
|
assertNotEquals(b1.build(), b2.build());
|
|
}
|
|
|
|
@Test
|
|
public void queryPlanHash_given_diffNotFlag_should_differentPlanHash() throws Exception {
|
|
|
|
List<Integer> values = values(42, 92);
|
|
|
|
InExpression ex1 = new InExpression("foo", values, true);
|
|
InExpression ex2 = new InExpression("foo", values, false);
|
|
|
|
ex1.prepareExpression(null);
|
|
ex2.prepareExpression(null);
|
|
|
|
HashQueryPlanBuilder b1 = new HashQueryPlanBuilder();
|
|
ex1.queryPlanHash(b1);
|
|
|
|
HashQueryPlanBuilder b2 = new HashQueryPlanBuilder();
|
|
ex2.queryPlanHash(b2);
|
|
|
|
assertNotEquals(b1.build(), b2.build());
|
|
}
|
|
|
|
@Test
|
|
public void queryPlanHash_given_sameNotFlag_should_samePlanHash() throws Exception {
|
|
|
|
List<Integer> values = values(42, 92);
|
|
|
|
InExpression ex1 = new InExpression("foo", values, true);
|
|
InExpression ex2 = new InExpression("foo", values, true);
|
|
|
|
ex1.prepareExpression(null);
|
|
ex2.prepareExpression(null);
|
|
|
|
HashQueryPlanBuilder b1 = new HashQueryPlanBuilder();
|
|
ex1.queryPlanHash(b1);
|
|
|
|
HashQueryPlanBuilder b2 = new HashQueryPlanBuilder();
|
|
ex2.queryPlanHash(b2);
|
|
|
|
assertEquals(b1.build(), b2.build());
|
|
}
|
|
|
|
List<Integer> values(int... vals) {
|
|
ArrayList list = new ArrayList<Integer>();
|
|
for (int val : vals) {
|
|
list.add(val);
|
|
}
|
|
return list;
|
|
}
|
|
|
|
@NotNull
|
|
private InExpression exp(String propName, boolean not, Object... values) {
|
|
InExpression ex = new InExpression(propName, Arrays.asList(values), not);
|
|
ex.prepareExpression(null);
|
|
return ex;
|
|
}
|
|
|
|
@Test
|
|
public void isSameByPlan_when_same() {
|
|
|
|
assertThat(exp("a", false, 10).isSameByPlan(exp("a", false, 10))).isTrue();
|
|
}
|
|
|
|
@Test
|
|
public void isSameByPlan_when_diffPropertyName() {
|
|
|
|
assertThat(exp("a", false, 10).isSameByPlan(exp("b", false, 10))).isFalse();
|
|
}
|
|
|
|
@Test
|
|
public void isSameByPlan_when_diffNot() {
|
|
|
|
assertThat(exp("a", false, 10).isSameByPlan(exp("a", true, 10))).isFalse();
|
|
}
|
|
|
|
@Test
|
|
public void isSameByPlan_when_diffBind_same() {
|
|
|
|
assertThat(exp("a", false, 10).isSameByPlan(exp("a", false, 10, 20))).isFalse();
|
|
}
|
|
|
|
@Test
|
|
public void isSameByPlan_when_diffBindCount() {
|
|
|
|
assertThat(exp("a", false, 10).isSameByPlan(exp("a", false, 10, 20))).isFalse();
|
|
}
|
|
|
|
@Test
|
|
public void isSameByBind_when_sameBindValues() {
|
|
|
|
assertThat(exp("a", false, 10).isSameByBind(exp("a", false, 10))).isTrue();
|
|
}
|
|
|
|
@Test
|
|
public void isSameByBind_when_sameMultipleBindValues() {
|
|
|
|
assertThat(exp("a", false, 10, "ABC", 20).isSameByBind(exp("a", false, 10, "ABC", 20))).isTrue();
|
|
}
|
|
|
|
@Test
|
|
public void isSameByBind_when_diffBindValues() {
|
|
|
|
assertThat(exp("a", false, 10).isSameByBind(exp("a", false, "foo"))).isFalse();
|
|
}
|
|
|
|
@Test
|
|
public void isSameByBind_when_lessBindValues() {
|
|
|
|
assertThat(exp("a", false, 10, "ABC", 20).isSameByBind(exp("a", false, 10, "ABC"))).isFalse();
|
|
}
|
|
|
|
@Test
|
|
public void isSameByBind_when_moreBindValues() {
|
|
|
|
assertThat(exp("a", false, 10, "ABC").isSameByBind(exp("a", false, 10, "ABC", 30))).isFalse();
|
|
}
|
|
|
|
}
|