package org.voltdb.planner; import junit.framework.TestCase; import org.junit.Test; import org.voltdb.expressions.AbstractExpression; import org.voltdb.expressions.NullValueExpression; import org.voltdb.planner.PlanColumn.SortOrder; import org.voltdb.planner.PlanColumn.Storage; import edu.brown.expressions.ExpressionUtil; /** * @author pavlo */ public class TestPlannerContext extends TestCase { private final PlannerContext context = PlannerContext.singleton(); @Test public void testDuplicateColumns() { AbstractExpression expression = new NullValueExpression(); String columnName = "TABLEA.A_ID"; SortOrder sortOrder = SortOrder.kUnsorted; Storage storage = Storage.kTemporary; PlanColumn col0 = context.getPlanColumn(expression, columnName, sortOrder, storage); assertNotNull(col0); // System.err.println(col0 + " ==> " + col0.hashCode()); PlanColumn col1 = context.getPlanColumn(expression, columnName, sortOrder, storage); assertNotNull(col1); // System.err.println(col1 + " ==> " + col1.hashCode()); assertEquals(col0.hashCode(), col1.hashCode()); assertEquals(col0.getDisplayName(), col1.getDisplayName()); assertEquals(col0.getSortOrder(), col1.getSortOrder()); assertEquals(col0.getStorage(), col1.getStorage()); assert(ExpressionUtil.equals(col0.getExpression(), col1.getExpression())); assertEquals(col0, col1); expression.setLeft(new NullValueExpression()); PlanColumn col2 = context.getPlanColumn(expression, columnName, sortOrder, storage); assertNotNull(col2); // System.err.println(col2 + " ==> " + col2.hashCode()); assertNotSame(col0.hashCode(), col2.hashCode()); assertEquals(col0.getDisplayName(), col2.getDisplayName()); assertEquals(col0.getSortOrder(), col2.getSortOrder()); assertEquals(col0.getStorage(), col2.getStorage()); assert(ExpressionUtil.equals(col0.getExpression(), col2.getExpression())); assertFalse(col0.equals(col2)); } }