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

📄 ruleparsertest.java

📁 jboss规则引擎
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
        assertEquals( 2,
                      rootAnd.getDescrs().size() );

        final OrDescr leftOr = (OrDescr) rootAnd.getDescrs().get( 0 );

        assertEquals( 2,
                      leftOr.getDescrs().size() );
        final NotDescr not = (NotDescr) leftOr.getDescrs().get( 0 );
        final ColumnDescr foo1 = (ColumnDescr) not.getDescrs().get( 0 );
        assertEquals( "Foo",
                      foo1.getObjectType() );
        final ColumnDescr foo2 = (ColumnDescr) leftOr.getDescrs().get( 1 );
        assertEquals( "Foo",
                      foo2.getObjectType() );

        final OrDescr rightOr = (OrDescr) rootAnd.getDescrs().get( 1 );

        assertEquals( 2,
                      rightOr.getDescrs().size() );
        final ColumnDescr shoes = (ColumnDescr) rightOr.getDescrs().get( 0 );
        assertEquals( "Shoes",
                      shoes.getObjectType() );
        final ColumnDescr butt = (ColumnDescr) rightOr.getDescrs().get( 1 );
        assertEquals( "Butt",
                      butt.getObjectType() );

        assertFalse( parser.hasErrors() );
    }

    public void testEvalMultiple() throws Exception {
        final RuleParser parser = parseResource( "eval_multiple.drl" );
        parser.compilation_unit();

        System.err.println( parser.getErrorMessages() );

        assertFalse( parser.hasErrors() );

        final PackageDescr pack = parser.getPackageDescr();
        assertEquals( 1,
                      pack.getRules().size() );
        final RuleDescr rule = (RuleDescr) pack.getRules().get( 0 );
        assertEquals( 4,
                      rule.getLhs().getDescrs().size() );

        final EvalDescr eval = (EvalDescr) rule.getLhs().getDescrs().get( 0 );
        assertEqualsIgnoreWhitespace( "abc(\"foo\") + 5",
                                      eval.getText() );

        final ColumnDescr col = (ColumnDescr) rule.getLhs().getDescrs().get( 1 );
        assertEquals( "Foo",
                      col.getObjectType() );

    }

    public void testWithEval() throws Exception {
        final RuleParser parser = parseResource( "with_eval.drl" );
        parser.compilation_unit();

        final PackageDescr pack = parser.getPackageDescr();
        assertEquals( 1,
                      pack.getRules().size() );
        final RuleDescr rule = (RuleDescr) pack.getRules().get( 0 );
        assertEquals( 3,
                      rule.getLhs().getDescrs().size() );
        ColumnDescr col = (ColumnDescr) rule.getLhs().getDescrs().get( 0 );
        assertEquals( "Foo",
                      col.getObjectType() );
        col = (ColumnDescr) rule.getLhs().getDescrs().get( 1 );
        assertEquals( "Bar",
                      col.getObjectType() );

        final EvalDescr eval = (EvalDescr) rule.getLhs().getDescrs().get( 2 );
        assertEqualsIgnoreWhitespace( "abc(\"foo\")",
                                      eval.getText() );
        assertEqualsIgnoreWhitespace( "Kapow",
                                      rule.getConsequence() );

        assertFalse( parser.hasErrors() );
    }

    public void testWithRetval() throws Exception {
        final RuleParser parser = parseResource( "with_retval.drl" );
        parser.compilation_unit();

        final PackageDescr pack = parser.getPackageDescr();
        assertEquals( 1,
                      pack.getRules().size() );

        final RuleDescr rule = (RuleDescr) pack.getRules().get( 0 );
        assertEquals( 1,
                      rule.getLhs().getDescrs().size() );
        final ColumnDescr col = (ColumnDescr) rule.getLhs().getDescrs().get( 0 );
        assertEquals( 1,
                      col.getDescrs().size() );
        assertEquals( "Foo",
                      col.getObjectType() );
        final ReturnValueDescr retval = (ReturnValueDescr) col.getDescrs().get( 0 );
        assertEquals( "a + b",
                      retval.getText() );
        assertEquals( "name",
                      retval.getFieldName() );
        assertEquals( "==",
                      retval.getEvaluator() );

        assertFalse( parser.hasErrors() );
    }

    public void testWithPredicate() throws Exception {
        final RuleParser parser = parseResource( "with_predicate.drl" );
        parser.compilation_unit();

        final PackageDescr pack = parser.getPackageDescr();
        assertEquals( 1,
                      pack.getRules().size() );

        final RuleDescr rule = (RuleDescr) pack.getRules().get( 0 );
        assertEquals( 1,
                      rule.getLhs().getDescrs().size() );
        final ColumnDescr col = (ColumnDescr) rule.getLhs().getDescrs().get( 0 );
        assertEquals( 1,
                      col.getDescrs().size() );

        final PredicateDescr pred = (PredicateDescr) col.getDescrs().get( 0 );
        assertEquals( "age",
                      pred.getFieldName() );
        assertEquals( "$age2",
                      pred.getDeclaration() );
        assertEqualsIgnoreWhitespace( "$age2 == $age1+2",
                                      pred.getText() );

        assertFalse( parser.hasErrors() );
    }

    public void testNotWithConstraint() throws Exception {
        final RuleParser parser = parseResource( "not_with_constraint.drl" );
        parser.compilation_unit();

        final PackageDescr pack = parser.getPackageDescr();
        assertEquals( 1,
                      pack.getRules().size() );

        final RuleDescr rule = (RuleDescr) pack.getRules().get( 0 );
        assertEquals( 2,
                      rule.getLhs().getDescrs().size() );

        ColumnDescr column = (ColumnDescr) rule.getLhs().getDescrs().get( 0 );
        final FieldBindingDescr fieldBinding = (FieldBindingDescr) column.getDescrs().get( 0 );
        assertEquals( "$likes",
                      fieldBinding.getIdentifier() );

        final NotDescr not = (NotDescr) rule.getLhs().getDescrs().get( 1 );
        column = (ColumnDescr) not.getDescrs().get( 0 );
        final BoundVariableDescr boundVariable = (BoundVariableDescr) column.getDescrs().get( 0 );
        assertEquals( "type",
                      boundVariable.getFieldName() );
        assertEquals( "==",
                      boundVariable.getEvaluator() );
        assertEquals( "$likes",
                      boundVariable.getIdentifier() );

        assertFalse( parser.hasErrors() );
    }

    public void testGlobal() throws Exception {
        final RuleParser parser = parseResource( "globals.drl" );
        parser.compilation_unit();

        final PackageDescr pack = parser.getPackageDescr();
        assertEquals( 1,
                      pack.getRules().size() );

        final RuleDescr rule = (RuleDescr) pack.getRules().get( 0 );
        assertEquals( 1,
                      rule.getLhs().getDescrs().size() );

        assertEquals( 1,
                      pack.getImports().size() );
        assertEquals( 2,
                      pack.getGlobals().values().size() );

        assertEquals( "java.lang.String",
                      pack.getGlobals().get( "foo" ) );
        assertEquals( "java.lang.Integer",
                      pack.getGlobals().get( "bar" ) );

        assertFalse( parser.hasErrors() );
    }

    public void testFunctions() throws Exception {
        final RuleParser parser = parseResource( "functions.drl" );
        parser.compilation_unit();

        final PackageDescr pack = parser.getPackageDescr();
        assertEquals( 2,
                      pack.getRules().size() );

        final List functions = pack.getFunctions();
        assertEquals( 2,
                      functions.size() );

        FunctionDescr func = (FunctionDescr) functions.get( 0 );
        assertEquals( "functionA",
                      func.getName() );
        assertEquals( "String",
                      func.getReturnType() );
        assertEquals( 2,
                      func.getParameterNames().size() );
        assertEquals( 2,
                      func.getParameterTypes().size() );

        assertEquals( "String",
                      func.getParameterTypes().get( 0 ) );
        assertEquals( "s",
                      func.getParameterNames().get( 0 ) );

        assertEquals( "Integer",
                      func.getParameterTypes().get( 1 ) );
        assertEquals( "i",
                      func.getParameterNames().get( 1 ) );

        assertEqualsIgnoreWhitespace( "foo();",
                                      func.getText() );

        func = (FunctionDescr) functions.get( 1 );
        assertEquals( "functionB",
                      func.getName() );
        assertEqualsIgnoreWhitespace( "bar();",
                                      func.getText() );

        assertFalse( parser.hasErrors() );
    }

    public void testComment() throws Exception {
        final RuleParser parser = parseResource( "comment.drl" );
        parser.compilation_unit();

        final PackageDescr pack = parser.getPackageDescr();
        assertNotNull( pack );

        assertEquals( "foo.bar",
                      pack.getName() );

        assertFalse( parser.hasErrors() );
    }

    public void testAttributes() throws Exception {
        final RuleDescr rule = parseResource( "rule_attributes.drl" ).rule();
        assertEquals( "simple_rule",
                      rule.getName() );
        assertEqualsIgnoreWhitespace( "bar();",
                                      rule.getConsequence() );

        final List attrs = rule.getAttributes();
        assertEquals( 5,
                      attrs.size() );

        AttributeDescr at = (AttributeDescr) attrs.get( 0 );
        assertEquals( "salience",
                      at.getName() );
        assertEquals( "42",
                      at.getValue() );

        at = (AttributeDescr) attrs.get( 1 );
        assertEquals( "agenda-group",
                      at.getName() );
        assertEquals( "my_group",
                      at.getValue() );

        at = (AttributeDescr) attrs.get( 2 );
        assertEquals( "no-loop",
                      at.getName() );
        assertEquals( "true",
                      at.getValue() );

        at = (AttributeDescr) attrs.get( 3 );
        assertEquals( "duration",
                      at.getName() );
        assertEquals( "42",
                      at.getValue() );

        at = (AttributeDescr) attrs.get( 4 );
        assertEquals( "activation-group",
                      at.getName() );
        assertEquals( "my_activation_group",
                      at.getValue() );

        assertFalse( this.parser.hasErrors() );
    }

    public void testAttributes_alternateSyntax() throws Exception {
        final RuleDescr rule = parseResource( "rule_attributes_alt.drl" ).rule();
        assertEquals( "simple_rule",
                      rule.getName() );
        assertEqualsIgnoreWhitespace( "bar();",
                                      rule.getConsequence() );

        final List attrs = rule.getAttributes();
        assertEquals( 5,
                      attrs.size() );

        AttributeDescr at = (AttributeDescr) attrs.get( 0 );
        assertEquals( "salience",
                      at.getName() );
        assertEquals( "42",
                      at.getValue() );

        at = (AttributeDescr) attrs.get( 1 );
        assertEquals( "agenda-group",
                      at.getName() );
        assertEquals( "my_group",
                      at.getValue() );

        at = (AttributeDescr) attrs.get( 2 );
        assertEquals( "no-loop",
                      at.getName() );
        assertEquals( "true",
                      at.getValue() );

        at = (AttributeDescr) attrs.get( 3 );
        assertEquals( "duration",
                      at.getName() );
        assertEquals( "42",
                      at.getValue() );

        at = (AttributeDescr) attrs.get( 4 );
        assertEquals( "activation-group",
                      at.getName() );
        assertEquals( "my_activation_group",
                      at.getValue() );

        assertFalse( this.parser.hasErrors() );
    }

    public void testEnumeration() throws Exception {
        final RuleDescr rule = parseResource( "enumeration.drl" ).rule();
        assertEquals( "simple_rule",
                      rule.getName() );
        assertEquals( 1,
                      rule.getLhs().getDescrs().size() );
        final ColumnDescr col = (ColumnDescr) rule.getLhs().getDescrs().get( 0 );
        assertEquals( "Foo",
                      col.getObjectType() );
     

⌨️ 快捷键说明

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