Package edu.brown.expressions

Source Code of edu.brown.expressions.TestExpressionUtil

package edu.brown.expressions;

import java.util.Collection;

import org.json.JSONObject;
import org.junit.Test;
import org.voltdb.catalog.Procedure;
import org.voltdb.catalog.Statement;
import org.voltdb.expressions.AbstractExpression;
import org.voltdb.expressions.AggregateExpression;
import org.voltdb.expressions.NullValueExpression;
import org.voltdb.plannodes.AbstractPlanNode;
import org.voltdb.plannodes.AbstractScanPlanNode;
import org.voltdb.plannodes.IndexScanPlanNode;
import org.voltdb.types.ExpressionType;

import edu.brown.BaseTestCase;
import edu.brown.benchmark.tm1.procedures.DeleteCallForwarding;
import edu.brown.plannodes.PlanNodeUtil;
import edu.brown.utils.CollectionUtil;
import edu.brown.utils.ProjectType;

public class TestExpressionUtil extends BaseTestCase {

    public static final String TARGET_PROC = DeleteCallForwarding.class.getSimpleName();
    public static final String TARGET_STMT = "query";

    private Procedure catalog_proc;
    private Statement catalog_stmt;
   
    @Override
    protected void setUp() throws Exception {
        super.setUp(ProjectType.TM1);
       
        this.catalog_proc = this.getProcedure(TARGET_PROC);
        this.catalog_stmt = this.getStatement(this.catalog_proc, TARGET_STMT);
    }
   
    /**
     * testClone
     */
    @Test
    public void testClone() throws Exception {
        AggregateExpression exp = new AggregateExpression(ExpressionType.COMPARE_EQUAL);
        exp.m_distinct = true;
        AggregateExpression clone = (AggregateExpression)exp.clone();
        assertNotNull(clone);
       
        assertEquals(exp.getId(), clone.getId());
        assertEquals(exp.isJoiningClause(), clone.isJoiningClause());
        assertEquals(exp.getExpressionType(), clone.getExpressionType());
        assertEquals(exp.getValueType(), clone.getValueType());
        assertEquals(exp.getValueSize(), clone.getValueSize());
        assertEquals(exp.isDistinct(), clone.isDistinct());
    }
   
    /**
     * testEquals
     */
    @Test
    public void testEquals() throws Exception {
        AbstractPlanNode root = PlanNodeUtil.getRootPlanNodeForStatement(catalog_stmt, true);
        assertNotNull(root);
       
        Collection<AbstractScanPlanNode> scan_nodes = PlanNodeUtil.getPlanNodes(root, AbstractScanPlanNode.class);
        assertNotNull(scan_nodes);
        assertEquals(1, scan_nodes.size());
        AbstractScanPlanNode scan_node = CollectionUtil.first(scan_nodes);
        assertNotNull(scan_node);
       
        Collection<AbstractExpression> exps = PlanNodeUtil.getExpressionsForPlanNode(scan_node);
        assertNotNull(exps);
        assertFalse(exps.isEmpty());
        AbstractExpression exp = CollectionUtil.first(exps);
        assertNotNull(exp);
       
        // Clone the mofo and make sure equals() returns true!
        String json = exp.toJSONString();
        assertFalse(json.isEmpty());
        AbstractExpression clone = AbstractExpression.fromJSONObject(new JSONObject(json), catalog_db);
        assertNotNull(clone);
        assert(ExpressionUtil.equals(exp, clone));

        // Change one of the branches. This should now return false!
        clone.setRight(new NullValueExpression());
        assertFalse(ExpressionUtil.equals(exp, clone));
       
        // Remove both the branch on both sids. This should return true!
        exp.setRight(null);
        clone.setRight(null);
        assert(ExpressionUtil.equals(exp, clone));
    }
   
    /**
     * testDebug
     */
    public void testDebug() throws Exception {
        // Just make sure this doesn't throw an Exception
        AbstractPlanNode root = PlanNodeUtil.getRootPlanNodeForStatement(catalog_stmt, true);
        assertNotNull(root);
        //System.err.println(PlanNodeUtil.debug(root));
        IndexScanPlanNode scan_node = CollectionUtil.first(PlanNodeUtil.getPlanNodes(root, IndexScanPlanNode.class));
        assertNotNull(scan_node);
       
        AbstractExpression exp = scan_node.getEndExpression();
        assertNotNull(exp);
        String debug = ExpressionUtil.debug(exp);
        assertNotNull(debug);
        assertFalse(debug.isEmpty());
    }
   
}
TOP

Related Classes of edu.brown.expressions.TestExpressionUtil

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.