/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package test;

import java.util.logging.Logger;
import java.util.regex.Pattern;
import org.autoplot.datasource.LogNames;

/**
 *
 * @author jbf
 */
public class RegexTest {

    private static final Logger logger= Logger.getLogger( LogNames.APDSS_JYDS );

    private static void doTest( int num, String regex, String test ) {

        Pattern p= Pattern.compile(regex);
        String s= test;
        logger.info( String.format( "%03d: %5s %s",  num, p.matcher(s).matches(), regex ) );

    }

    public static void main( String[] args ) {

            String vnarg= "\\s*([a-z][a-z0-9]*)\\s*"; // any variable name  VERIFIED
            String sarg= "\\s*\\'([a-z][a-z0-9]*)\\'\\s*"; // any variable name  VERIFIED
            String aarg= "\\s*(\\'[^\\']+\\')\\s*"; // any argument
            String farg= "\\s*([0-9\\.\\+-eE]+)\\s*"; // any float variable name

            //String farg= "\\s*([^\\']+)\\s*"; // any float variable name

            Pattern p= Pattern.compile( vnarg+"=\\s*getParam\\("+sarg+","+aarg+"(,"+aarg + "\\))?.*" );
            Pattern fp= Pattern.compile(vnarg+"=\\s*getParam\\("+sarg+","+farg+"(,"+aarg + "\\))?.*" );

            doTest( 0, vnarg+"=\\s*getParam\\("+sarg+","+aarg+","+aarg + "\\).*",
                    "dir= getParam( 'dir', '/home/jbf/temp/ap4/', 'Directory containing builds $Y-$m-$d_$H-$M-$S' )" );

            doTest( 1, sarg, "'dir'" );

            doTest( 2, "getParam\\("+sarg+"\\).*", "getParam( 'dir' )" );
            
            doTest( 3, vnarg+"=\\s*getParam\\("+sarg+","+aarg+"(,"+aarg + "\\))?.*",
                    "dir= getParam( 'dir', '/home/jbf/temp/ap4/', 'Directory containing builds $Y-$m-$d_$H-$M-$S' )" );
            
            doTest( 4, "\\s*\\'([a-z]+)\\'\\s*", "'dir'" );

            doTest( 5, aarg, "'a new'" );

            doTest( 6, vnarg+"=getParam\\("+sarg+ "\\).*",
                    "dir=getParam('dir')" );

            doTest( 7, vnarg+"=getParam\\("+sarg+ "," + aarg + "\\).*",
                    "dir=getParam('dir','a new')" );

            doTest( 8, vnarg+"=getParam\\("+sarg+ "," + aarg + "," + aarg + "\\).*",
                    "dir=getParam('dir', ' a new' , ' a new')" );

            doTest( 9, vnarg+"=\\s*getParam\\("+sarg+","+aarg+"(,"+aarg + "\\))?.*",
                    "dir= getParam( 'dir', '/home/jbf/temp/ap4/' )" );

            doTest( 10, "\\s*([0-9\\.\\+-eE]+)\\s*", " 3.4e5" );

            doTest( 11, "\\s*([0-9\\.\\+-eE]+)\\s*", " +3.4E-5" );

            doTest( 12, farg, "  +3.4E-5 " );

            doTest( 13, vnarg+"=\\s*getParam\\("+sarg+","+farg + "\\).*",
                    "p2= getParam( 'factor', 3.4 )" );

            doTest( 14, vnarg+"=\\s*getParam\\("+sarg+","+farg+"(,"+aarg + "\\))?.*", "p2= getParam( 'factor', 3.4 )" );

    }
}