Package org.drools.core.reteoo.test.parser

Source Code of org.drools.core.reteoo.test.parser.NodeTestDSLFactory

/*
* Copyright 2010 JBoss Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.drools.core.reteoo.test.parser;

import java.util.List;

import org.antlr.runtime.tree.CommonTree;
import org.drools.core.reteoo.test.dsl.DslStep;
import org.drools.core.reteoo.test.dsl.NodeTestDef;
import org.drools.core.reteoo.test.dsl.NodeTestCase;

/**
* A factory used by the DSL parser
*/
public class NodeTestDSLFactory {
   
    public static enum Context {
        SETUP, TEARDOWN, TEST;
    }

    private NodeTestCase testCase;
    private NodeTestDef test;
    private DslStep step;
    private Context current;
   
    public NodeTestCase createTestCase( String name ) {
        testCase = new NodeTestCase( cleanString( name ) );
        return testCase;
    }
   
    public void createSetup() {
        current = Context.SETUP;
    }
   
    public void createTearDown() {
        current = Context.TEARDOWN;
    }

    public void createTest( CommonTree testToken, CommonTree name ) {
        current = Context.TEST;
        test = new NodeTestDef( cleanString( name.getText() ), testToken.getLine() );
        testCase.addTest( test );
    }
   
    @SuppressWarnings("unchecked")
    public void createStep( CommonTree ctx, List<CommonTree> params ) {
        step = new DslStep( ctx.getLine(), ctx.getText() );
        for( CommonTree param : params ) {
            String[] cmds = new String[param.getChildCount()];
            int i = 0;
            for( CommonTree child : (List<CommonTree>) param.getChildren() ) {
                cmds[ i++ ] = child.getText();
            }
            step.addCommand( cmds );
        }
        switch( current ) {
            case SETUP :
                testCase.addSetupStep( step );
                break;
            case TEARDOWN :
                testCase.addTearDownStep( step );
                break;
            case TEST :
                test.addStep( step );
                break;
        }
    }
   
    private String cleanString( String text ) {
        return ( text != null && text.length() > 2 ) ? text.substring( 1, text.length()-1 ) : "";
    }
   
}
TOP

Related Classes of org.drools.core.reteoo.test.parser.NodeTestDSLFactory

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.