⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dumpertest.java

📁 jboss规则引擎
💻 JAVA
字号:
package org.drools.xml;

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;

import junit.framework.TestCase;

import org.drools.Cheese;
import org.drools.RuleBase;
import org.drools.WorkingMemory;
import org.drools.compiler.DrlParser;
import org.drools.compiler.PackageBuilder;
import org.drools.lang.DrlDumper;
import org.drools.lang.descr.PackageDescr;
import org.drools.lang.descr.RuleDescr;
import org.drools.rule.Package;

/**
 * Test the dump/convert format utilities.
 * @author Michael Neale
 */
public class DumperTest extends TestCase {

    public void testRoundTripXml() throws Exception {

        XmlPackageReader xmlPackageReader = new XmlPackageReader();
        xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseRule.xml" ) ) );
        final PackageDescr pkgOriginal = xmlPackageReader.getPackageDescr();

        final XmlDumper dumper = new XmlDumper();
        final String result = dumper.dump( pkgOriginal );
        assertNotNull( result );

        //now lest slurp it back up
        xmlPackageReader = new XmlPackageReader();
        final PackageDescr pkgDumped = xmlPackageReader.read( new StringReader( result ) );

        assertEquals( pkgOriginal.getName(),
                      pkgDumped.getName() );
        assertEquals( pkgOriginal.getFunctions().size(),
                      pkgDumped.getFunctions().size() );
        assertEquals( pkgOriginal.getRules().size(),
                      pkgDumped.getRules().size() );
        assertEquals( pkgOriginal.getGlobals().size(),
                      pkgDumped.getGlobals().size() );

        final RuleDescr ruleOriginal = (RuleDescr) pkgOriginal.getRules().get( 0 );
        final RuleDescr ruleDumped = (RuleDescr) pkgDumped.getRules().get( 0 );

        assertEquals( ruleOriginal.getName(),
                      ruleDumped.getName() );

        assertEquals( ruleOriginal.getLhs().getDescrs().size(),
                      ruleDumped.getLhs().getDescrs().size() );
        assertEquals( ruleOriginal.getConsequence(),
                      ruleDumped.getConsequence() );

    }

    public void testRoundTripDrl() throws Exception {

        DrlParser parser = new DrlParser();
        final PackageDescr pkgOriginal = parser.parse( new InputStreamReader( getClass().getResourceAsStream( "test_Dump.drl" ) ) );
        final DrlDumper dumper = new DrlDumper();
        final String result = dumper.dump( pkgOriginal );
        assertNotNull( result );

        parser = new DrlParser();
        final PackageDescr pkgDumped = parser.parse( new StringReader( result ) );

        assertEquals( pkgOriginal.getName(),
                      pkgDumped.getName() );
        assertEquals( pkgOriginal.getFunctions().size(),
                      pkgDumped.getFunctions().size() );
        assertEquals( pkgOriginal.getRules().size(),
                      pkgDumped.getRules().size() );
        assertEquals( pkgOriginal.getGlobals().size(),
                      pkgDumped.getGlobals().size() );

        final RuleDescr ruleOriginal = (RuleDescr) pkgOriginal.getRules().get( 0 );
        final RuleDescr ruleDumped = (RuleDescr) pkgDumped.getRules().get( 0 );

        assertEquals( ruleOriginal.getName(),
                      ruleDumped.getName() );

        assertEquals( ruleOriginal.getLhs().getDescrs().size(),
                      ruleDumped.getLhs().getDescrs().size() );
        assertEquals( ruleOriginal.getConsequence(),
                      ruleDumped.getConsequence() );

    }
        
    private void assertEqualsIgnoreWhitespace(final String expected,
                                              final String actual) {
        final String cleanExpected = expected.replaceAll( "\\s+",
                                                    "" );
        final String cleanActual = actual.replaceAll( "\\s+",
                                                "" );

        assertEquals( cleanExpected,
                      cleanActual );
    }

    private String readFile(final String file) throws IOException {
        final InputStreamReader reader = new InputStreamReader( getClass().getResourceAsStream( file ) );

        final StringBuffer text = new StringBuffer();

        final char[] buf = new char[1024];
        int len = 0;

        while ( (len = reader.read( buf )) >= 0 ) {
            text.append( buf,
                         0,
                         len );
        }
        return text.toString();
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -