Package com.redhat.ceylon.compiler.java.test.fordebug

Source Code of com.redhat.ceylon.compiler.java.test.fordebug.TraceTests

package com.redhat.ceylon.compiler.java.test.fordebug;

import java.io.File;

import org.junit.Test;

import com.redhat.ceylon.compiler.java.test.fordebug.Tracer.HandlerResult;
import com.redhat.ceylon.compiler.java.test.fordebug.Tracer.MethodEntry;
import com.redhat.ceylon.compiler.java.test.fordebug.Tracer.MethodExit;
import com.redhat.ceylon.compiler.java.test.fordebug.Tracer.Step;

public class TraceTests extends DebuggerTest {
   
    @Override
    protected String transformDestDir(String name) {
        return name + "-trace";
    }
   
    private void compileAndTrace(String mainClass, String ceylonSource) throws Exception {
        compareWithJavaSource(ceylonSource);
        trace(ceylonSource+".ceylon", mainClass);
    }

    private void trace(String ceylonSource, String mainClass) throws Exception {
        String sourceName = new File(ceylonSource).getName();
        String traceFile = ceylonSource.replaceAll(".ceylon$", ".trace");
        try (Tracer tracer = tracer(mainClass)) {
            tracer.start();
            // stop when we enter main()
            MethodEntry entry = tracer.methodEntry().classFilter(mainClass).methodFilter("main").result(HandlerResult.SUSPEND).enable();
            // resume until we hit that, then disable it
            tracer.resume();
            entry.disable();
            // now log everything within DefaultedParameters.ceylon
            Step step = tracer.step().within(sourceName).log().enable();
            // and also listen out for when we exit main()
            MethodExit exit = tracer.methodExit().classFilter(mainClass).methodFilter("main").result(HandlerResult.SUSPEND).enable();
            // once we've exited main() disable the step breakpoint
            tracer.resume();
            if (tracer.isVmAlive()) {
                step.disable();
                tracer.resume();
            }
            System.err.println(tracer.getTrace());
            assertSameTrace(tracer, traceFile);
        }
    }
   
    @Test
    public void testAssertFalse() throws Exception {
        compileAndTrace(
                "com.redhat.ceylon.compiler.java.test.fordebug.trace.assertFalse_",
                "trace/AssertFalse"
                );
    }
   
    @Test
    public void testDefaultParameters() throws Exception {
        compileAndTrace(
                "com.redhat.ceylon.compiler.java.test.fordebug.trace.defaultedParametersMain_",
                "trace/DefaultedParameters"
                );
    }
   
}
TOP

Related Classes of com.redhat.ceylon.compiler.java.test.fordebug.TraceTests

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.