Package kilim.test

Source Code of kilim.test.TestFlow

/* Copyright (c) 2006, Sriram Srinivasan
*
* You may distribute this software under the terms of the license
* specified in the file "License"
*/

package kilim.test;

import static kilim.Constants.D_BYTE;
import kilim.analysis.BasicBlock;
import kilim.analysis.Frame;
import kilim.analysis.IncompatibleTypesException;
import kilim.analysis.MethodFlow;
import kilim.analysis.TypeDesc;
import kilim.analysis.Value;

public class TestFlow extends Base {

    @Override
    protected void setUp() throws Exception {
        cache("kilim.test.ex.ExFlow");
    }

    public void testMerge() throws IncompatibleTypesException {
        MethodFlow flow = getFlow("loop");
        if (flow == null)
            return;
        // Make sure the merging is fine. There used to be a bug
        assertEquals("Lkilim/test/ex/ExA;", TypeDesc.mergeType("Lkilim/test/ex/ExC;", "Lkilim/test/ex/ExD;"));
        assertEquals("Lkilim/test/ex/ExA;", TypeDesc.mergeType("Lkilim/test/ex/ExD;", "Lkilim/test/ex/ExC;"));
        BasicBlock bb = getBBForMethod(flow, "join");
        assertTrue(bb != null);
        Frame f = bb.startFrame;
        // Check Locals
        // assertEquals("Lkilim/test/ex/ExFlow;", f.getLocal(0));
        assertEquals("Lkilim/test/ex/ExA;", f.getLocal(1).getTypeDesc());
        // assertSame(D_INT, f.getLocal(2));
        // Check operand stack
        assertSame(D_BYTE, f.getStack(0).getTypeDesc());
        assertEquals("Lkilim/test/ex/ExFlow;", f.getStack(1).getTypeDesc());
        assertEquals("Lkilim/test/ex/ExA;", f.getStack(2).getTypeDesc());
    }

    public void testConstants() throws IncompatibleTypesException {
        MethodFlow flow = getFlow("loop");
        if (flow == null)
            return;
        BasicBlock bb = getBBForMethod(flow, "join");
        Frame f = bb.startFrame;
        assertSame(f.getLocal(2).getConstVal(), Value.NO_VAL);
    }
}
TOP

Related Classes of kilim.test.TestFlow

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.