package io.ebeaninternal.server.expression; import org.jetbrains.annotations.NotNull; import org.junit.Test; import java.util.Arrays; import static org.assertj.core.api.StrictAssertions.assertThat; public class ExistsQueryExpressionTest { @NotNull private ExistsQueryExpression exp(boolean not, String sql, Object... bindValues) { return new ExistsQueryExpression(not, sql, Arrays.asList(bindValues)); } @Test public void isSameByPlan_when_same() { assertThat(exp(true, "a", 10).isSameByPlan(exp(true, "a", 10))).isTrue(); } @Test public void isSameByPlan_when_diffBind_same() { assertThat(exp(true, "a", 10).isSameByPlan(exp(true, "a", 20))).isTrue(); } @Test public void isSameByPlan_when_diffNot() { assertThat(exp(true, "a", 10).isSameByPlan(exp(false, "a", 10))).isFalse(); } @Test public void isSameByPlan_when_diffSql() { assertThat(exp(true, "a", 10).isSameByPlan(exp(true, "b", 10))).isFalse(); } @Test public void isSameByBind_when_sameBindValues() { assertThat(exp(true, "a", 10).isSameByBind(exp(true, "a", 10))).isTrue(); } @Test public void isSameByBind_when_sameMultipleBindValues() { assertThat(exp(true, "a", 10, "ABC", 20).isSameByBind(exp(true, "a", 10, "ABC", 20))).isTrue(); } @Test public void isSameByBind_when_diffMultipleBindValues() { assertThat(exp(true, "a", 10, "ABC", 20).isSameByBind(exp(true, "a", 10, "ABC", 21))).isFalse(); } @Test public void isSameByBind_when_diffMultipleBindValuesByOrder() { assertThat(exp(true, "a", 10, "ABC", 20).isSameByBind(exp(true, "a", 10, 20, "ABC"))).isFalse(); } @Test public void isSameByBind_when_diffBindValues() { assertThat(exp(true, "a", 10).isSameByBind(exp(true, "a", 20))).isFalse(); } @Test public void isSameByBind_when_lessBindValues() { assertThat(exp(true, "a", 10, 20).isSameByBind(exp(true, "a", 20))).isFalse(); } @Test public void isSameByBind_when_moreBindValues() { assertThat(exp(true, "a", 10).isSameByBind(exp(true, "a", 10, 20))).isFalse(); } }