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

📄 ruleparsertest.java

📁 jboss规则引擎
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
        assertEqualsIgnoreWhitespace( "%*9dkj",
                                      chunk );

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

    public void testEmptyColumn() throws Exception {
        parseResource( "test_EmptyColumn.drl" );
        this.parser.compilation_unit();
        final PackageDescr packageDescr = this.parser.getPackageDescr();
        assertEquals( 1,
                      packageDescr.getRules().size() );
        final RuleDescr ruleDescr = (RuleDescr) packageDescr.getRules().get( 0 );
        assertEquals( "simple rule",
                      ruleDescr.getName() );
        assertNotNull( ruleDescr.getLhs() );
        assertEquals( 1,
                      ruleDescr.getLhs().getDescrs().size() );
        final ColumnDescr columnDescr = (ColumnDescr) ruleDescr.getLhs().getDescrs().get( 0 );
        assertEquals( 0,
                      columnDescr.getDescrs().size() ); //this may be null, not sure as the test doesn't get this far...
        assertEquals( "Cheese",
                      columnDescr.getObjectType() );

    }

    public void testSimpleRule() throws Exception {
        final RuleDescr rule = parseResource( "simple_rule.drl" ).rule();

        assertNotNull( rule );

        assertEquals( "simple_rule",
                      rule.getName() );

        assertEquals( 7,
                      rule.getConsequenceLine() );
        assertEquals( 2,
                      rule.getConsequenceColumn() );

        final AndDescr lhs = rule.getLhs();

        assertNotNull( lhs );

        assertEquals( 3,
                      lhs.getDescrs().size() );

        //System.err.println( lhs.getDescrs() );

        // Check first column
        final ColumnDescr first = (ColumnDescr) lhs.getDescrs().get( 0 );
        assertEquals( "foo3",
                      first.getIdentifier() );
        assertEquals( "Bar",
                      first.getObjectType() );

        assertEquals( 1,
                      first.getDescrs().size() );

        LiteralDescr constraint = (LiteralDescr) first.getDescrs().get( 0 );

        assertNotNull( constraint );

        assertEquals( "a",
                      constraint.getFieldName() );
        assertEquals( "==",
                      constraint.getEvaluator() );
        assertEquals( "3",
                      constraint.getText() );

        // Check second column
        final ColumnDescr second = (ColumnDescr) lhs.getDescrs().get( 1 );
        assertEquals( "foo4",
                      second.getIdentifier() );
        assertEquals( "Bar",
                      second.getObjectType() );

        assertEquals( 2,
                      second.getDescrs().size() );

        //System.err.println( second.getDescrs() );

        final FieldBindingDescr fieldBindingDescr = (FieldBindingDescr) second.getDescrs().get( 0 );
        assertEquals( "a",
                      fieldBindingDescr.getFieldName() );
        assertEquals( "a4",
                      fieldBindingDescr.getIdentifier() );

        constraint = (LiteralDescr) second.getDescrs().get( 1 );

        assertNotNull( constraint );

        assertEquals( "a",
                      constraint.getFieldName() );
        assertEquals( "==",
                      constraint.getEvaluator() );
        assertEquals( "4",
                      constraint.getText() );

        // Check third column
        final ColumnDescr third = (ColumnDescr) lhs.getDescrs().get( 2 );
        assertNull( third.getIdentifier() );
        assertEquals( "Baz",
                      third.getObjectType() );

        assertEqualsIgnoreWhitespace( "if ( a == b ) { " + "  assert( foo3 );" + "} else {" + "  retract( foo4 );" + "}" + "  System.out.println( a4 );",
                                      rule.getConsequence() );

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

    public void testLineNumberInAST() throws Exception {
        //also see testSimpleExpander to see how this works with an expander (should be the same). 

        final RuleDescr rule = parseResource( "simple_rule.drl" ).rule();

        assertNotNull( rule );

        assertEquals( "simple_rule",
                      rule.getName() );

        assertEquals( 7,
                      rule.getConsequenceLine() );
        assertEquals( 2,
                      rule.getConsequenceColumn() );

        final AndDescr lhs = rule.getLhs();

        assertNotNull( lhs );

        assertEquals( 3,
                      lhs.getDescrs().size() );

        // Check first column
        final ColumnDescr first = (ColumnDescr) lhs.getDescrs().get( 0 );
        assertEquals( "foo3",
                      first.getIdentifier() );
        assertEquals( "Bar",
                      first.getObjectType() );
        assertEquals( 1,
                      first.getDescrs().size() );

        // Check second column
        final ColumnDescr second = (ColumnDescr) lhs.getDescrs().get( 1 );
        assertEquals( "foo4",
                      second.getIdentifier() );
        assertEquals( "Bar",
                      second.getObjectType() );

        final ColumnDescr third = (ColumnDescr) lhs.getDescrs().get( 2 );
        assertEquals( "Baz",
                      third.getObjectType() );

        assertEquals( 4,
                      first.getLine() );
        assertEquals( 5,
                      second.getLine() );
        assertEquals( 6,
                      third.getLine() );
        assertFalse( this.parser.hasErrors() );
    }

    public void testMultiBindings() throws Exception {
        final RuleDescr rule = parseResource( "multiple_bindings.drl" ).rule();
        assertNotNull( rule );
        assertEquals( "simple_rule",
                      rule.getName() );

        assertEquals( 2,
                      rule.getLhs().getDescrs().size() );
        assertEquals( "foo",
                      ((ColumnDescr) rule.getLhs().getDescrs().get( 0 )).getIdentifier() );
        assertEquals( "baz",
                      ((ColumnDescr) rule.getLhs().getDescrs().get( 1 )).getIdentifier() );

    }

    public void testMultiBindingsMore() throws Exception {
        final RuleDescr rule = parseResource( "multiple_bindings_more.drl" ).rule();
        assertNotNull( rule );
        assertEquals( "simple_rule",
                      rule.getName() );

        assertEquals( 3,
                      rule.getLhs().getDescrs().size() );
        assertEquals( "foo",
                      ((ColumnDescr) rule.getLhs().getDescrs().get( 0 )).getIdentifier() );
        assertEquals( "something foo",
                      ((EvalDescr) rule.getLhs().getDescrs().get( 1 )).getText() );
        assertEquals( "another foo",
                      ((EvalDescr) rule.getLhs().getDescrs().get( 2 )).getText() );

    }

    public void testLhsSemicolonDelim() throws Exception {
        final RuleDescr rule = parseResource( "lhs_semicolon_delim.drl" ).rule();

        assertNotNull( rule );

        assertEquals( "simple_rule",
                      rule.getName() );

        final AndDescr lhs = rule.getLhs();

        assertNotNull( lhs );

        assertEquals( 3,
                      lhs.getDescrs().size() );

        //System.err.println( lhs.getDescrs() );

        // Check first column
        final ColumnDescr first = (ColumnDescr) lhs.getDescrs().get( 0 );
        assertEquals( "foo3",
                      first.getIdentifier() );
        assertEquals( "Bar",
                      first.getObjectType() );

        assertEquals( 1,
                      first.getDescrs().size() );

        LiteralDescr constraint = (LiteralDescr) first.getDescrs().get( 0 );

        assertNotNull( constraint );

        assertEquals( "a",
                      constraint.getFieldName() );
        assertEquals( "==",
                      constraint.getEvaluator() );
        assertEquals( "3",
                      constraint.getText() );

        // Check second column
        final ColumnDescr second = (ColumnDescr) lhs.getDescrs().get( 1 );
        assertEquals( "foo4",
                      second.getIdentifier() );
        assertEquals( "Bar",
                      second.getObjectType() );

        assertEquals( 2,
                      second.getDescrs().size() );

        //System.err.println( second.getDescrs() );

        final FieldBindingDescr fieldBindingDescr = (FieldBindingDescr) second.getDescrs().get( 0 );
        assertEquals( "a",
                      fieldBindingDescr.getFieldName() );
        assertEquals( "a4",
                      fieldBindingDescr.getIdentifier() );

        constraint = (LiteralDescr) second.getDescrs().get( 1 );

        assertNotNull( constraint );

        assertEquals( "a",
                      constraint.getFieldName() );
        assertEquals( "==",
                      constraint.getEvaluator() );
        assertEquals( "4",
                      constraint.getText() );

        // Check third column
        final ColumnDescr third = (ColumnDescr) lhs.getDescrs().get( 2 );
        assertNull( third.getIdentifier() );
        assertEquals( "Baz",
                      third.getObjectType() );

        assertEqualsIgnoreWhitespace( "if ( a == b ) { " + "  assert( foo3 );" + "} else {" + "  retract( foo4 );" + "}" + "  System.out.println( a4 );",
                                      rule.getConsequence() );

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

    public void testNotNode() throws Exception {
        final RuleDescr rule = parseResource( "rule_not.drl" ).rule();

        assertNotNull( rule );
        assertEquals( "simple_rule",
                      rule.getName() );

        final AndDescr lhs = rule.getLhs();
        assertEquals( 1,
                      lhs.getDescrs().size() );
        final NotDescr not = (NotDescr) lhs.getDescrs().get( 0 );
        assertEquals( 1,
                      not.getDescrs().size() );
        final ColumnDescr col = (ColumnDescr) not.getDescrs().get( 0 );

        assertEquals( "Cheese",
                      col.getObjectType() );
        assertEquals( 1,
                      col.getDescrs().size() );
        final LiteralDescr lit = (LiteralDescr) col.getDescrs().get( 0 );
        assertEquals( "==",
                      lit.getEvaluator() );
        assertEquals( "stilton",
                      lit.getText() );
        assertEquals( "type",
                      lit.getFieldName() );

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

    public void testNotExistWithBrackets() throws Exception {

        final RuleParser parser = parseResource( "not_exist_with_brackets.drl" );

        parser.compilation_unit();
        final PackageDescr pkg = parser.getPackageDescr();

        final RuleDescr rule = (RuleDescr) pkg.getRules().get( 0 );

        assertNotNull( rule );
        assertEquals( "simple_rule",
                      rule.getName() );

        final AndDescr lhs = rule.getLhs();
        assertEquals( 2,
                      lhs.getDescrs().size() );
        final NotDescr not = (NotDescr) lhs.getDescrs().get( 0 );
        assertEquals( 1,
                      not.getDescrs().size() );
        final ColumnDescr col = (ColumnDescr) not.getDescrs().get( 0 );

        assertEquals( "Cheese",
                      col.getObjectType() );

        final ExistsDescr ex = (ExistsDescr) lhs.getDescrs().get( 1 );
        assertEquals( 1,
                      ex.getDescrs().size() );
        final ColumnDescr exCol = (ColumnDescr) ex.getDescrs().get( 0 );
        assertEquals( "Foo",
                      exCol.getObjectType() );

        assertFalse( parser.hasErrors() );
    }

    public void testNotBindindShouldBarf() throws Exception {
        final RuleParser parser = parseResource( "not_with_binding_error.drl" );
        parser.compilation_unit();
        assertTrue( parser.hasErrors() );
    }

    public void testSimpleQuery() throws Exception {
        final QueryDescr query = parseResource( "simple_query.drl" ).query();

        assertNotNull( query );

⌨️ 快捷键说明

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