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

📄 packagebuildertest.java

📁 jboss规则引擎
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
        final PackageDescr packageDescr3 = new PackageDescr( "package3" );
        createReturnValueRule( packageDescr3,
                               "new Integer(x.intValue() - y.intValue() )" );
        builder3.addPackage( packageDescr3 );
        final Column column3 = (Column) builder3.getPackage().getRules()[0].getLhs().getChildren().get( 0 );
        final ReturnValueConstraint returnValue3 = (ReturnValueConstraint) column3.getConstraints().get( 2 );

        assertEquals( returnValue1,
                      returnValue2 );
        assertFalse( returnValue1.equals( returnValue3 ) );
        assertFalse( returnValue2.equals( returnValue3 ) );
    }

    public void testPredicate() throws Exception {
        final PackageBuilder builder = new PackageBuilder();

        final PackageDescr packageDescr = new PackageDescr( "p1" );
        final RuleDescr ruleDescr = new RuleDescr( "rule-1" );
        packageDescr.addRule( ruleDescr );

        final AndDescr lhs = new AndDescr();
        ruleDescr.setLhs( lhs );

        final ColumnDescr column = new ColumnDescr( Cheese.class.getName(),
                                                    "stilton" );
        lhs.addDescr( column );

        final FieldBindingDescr fieldBindingDescr = new FieldBindingDescr( "price",
                                                                           "x" );
        column.addDescr( fieldBindingDescr );

        packageDescr.addGlobal( "map",
                                "java.util.Map" );

        final PredicateDescr predicate = new PredicateDescr( "price",
                                                             "y",
                                                             "( ( Integer )map.get(x) ).intValue() == y.intValue()" );
        column.addDescr( predicate );

        ruleDescr.setConsequence( "modify(stilton);" );

        builder.addPackage( packageDescr );

        assertLength( 0,
                      builder.getErrors() );
    }

    public void testPredicateMethodCompare() {
        final PackageBuilder builder1 = new PackageBuilder();
        final PackageDescr packageDescr1 = new PackageDescr( "package1" );
        createPredicateRule( packageDescr1,
                             "x==y" );
        builder1.addPackage( packageDescr1 );
        final Column column1 = (Column) builder1.getPackage().getRules()[0].getLhs().getChildren().get( 0 );
        final PredicateConstraint predicate1 = (PredicateConstraint) column1.getConstraints().get( 2 );

        final PackageBuilder builder2 = new PackageBuilder();
        final PackageDescr packageDescr2 = new PackageDescr( "package2" );
        createPredicateRule( packageDescr2,
                             "x==y" );
        builder2.addPackage( packageDescr2 );
        final Column column2 = (Column) builder2.getPackage().getRules()[0].getLhs().getChildren().get( 0 );
        final PredicateConstraint predicate2 = (PredicateConstraint) column2.getConstraints().get( 2 );

        final PackageBuilder builder3 = new PackageBuilder();
        final PackageDescr packageDescr3 = new PackageDescr( "package3" );
        createPredicateRule( packageDescr3,
                             "x!=y" );
        builder3.addPackage( packageDescr3 );
        final Column column3 = (Column) builder3.getPackage().getRules()[0].getLhs().getChildren().get( 0 );
        final PredicateConstraint predicate3 = (PredicateConstraint) column3.getConstraints().get( 2 );

        assertEquals( predicate1,
                      predicate2 );
        assertFalse( predicate1.equals( predicate3 ) );
        assertFalse( predicate2.equals( predicate3 ) );
    }

    public void testEval() throws Exception {
        final PackageBuilder builder = new PackageBuilder();

        final PackageDescr packageDescr = new PackageDescr( "p1" );
        final RuleDescr ruleDescr = new RuleDescr( "rule-1" );
        packageDescr.addRule( ruleDescr );

        final AndDescr lhs = new AndDescr();
        ruleDescr.setLhs( lhs );

        final ColumnDescr column = new ColumnDescr( Cheese.class.getName(),
                                                    "stilton" );
        lhs.addDescr( column );

        FieldBindingDescr fieldBindingDescr = new FieldBindingDescr( "price",
                                                                     "x" );
        column.addDescr( fieldBindingDescr );
        fieldBindingDescr = new FieldBindingDescr( "price",
                                                   "y" );
        column.addDescr( fieldBindingDescr );

        packageDescr.addGlobal( "map",
                                "java.util.Map" );

        final EvalDescr evalDescr = new EvalDescr( "( ( Integer )map.get(x) ).intValue() == y.intValue()" );
        lhs.addDescr( evalDescr );

        ruleDescr.setConsequence( "modify(stilton);" );

        builder.addPackage( packageDescr );

        assertLength( 0,
                      builder.getErrors() );

        final Package pkg = builder.getPackage();
        final Rule rule = pkg.getRule( "rule-1" );
        final EvalCondition eval = (EvalCondition) rule.getLhs().getChildren().get( 1 );
        final CompiledInvoker invoker = (CompiledInvoker) eval.getEvalExpression();
        final List list = invoker.getMethodBytecode();
    }

    public void testEvalMethodCompare() {
        final PackageBuilder builder1 = new PackageBuilder();
        final PackageDescr packageDescr1 = new PackageDescr( "package1" );
        createEvalRule( packageDescr1,
                        "1==1" );
        builder1.addPackage( packageDescr1 );
        final EvalCondition eval1 = (EvalCondition) builder1.getPackage().getRules()[0].getLhs().getChildren().get( 0 );

        final PackageBuilder builder2 = new PackageBuilder();
        final PackageDescr packageDescr2 = new PackageDescr( "package2" );
        createEvalRule( packageDescr2,
                        "1==1" );
        builder2.addPackage( packageDescr2 );
        final EvalCondition eval2 = (EvalCondition) builder2.getPackage().getRules()[0].getLhs().getChildren().get( 0 );

        final PackageBuilder builder3 = new PackageBuilder();
        final PackageDescr packageDescr3 = new PackageDescr( "package3" );
        createEvalRule( packageDescr3,
                        "1==3" );
        builder3.addPackage( packageDescr3 );
        final EvalCondition eval3 = (EvalCondition) builder3.getPackage().getRules()[0].getLhs().getChildren().get( 0 );

        assertEquals( eval1,
                      eval2 );
        assertFalse( eval1.equals( eval3 ) );
        assertFalse( eval2.equals( eval3 ) );
    }

    public void testOr() throws Exception {
        final PackageBuilder builder = new PackageBuilder();
        final Rule rule = createRule( new OrDescr(),
                                      builder,
                                      "modify(stilton);" );
        assertLength( 0,
                      builder.getErrors() );

        final And lhs = rule.getLhs();
        assertLength( 1,
                      lhs.getChildren() );

        final Or or = (Or) lhs.getChildren().get( 0 );
        assertLength( 1,
                      or.getChildren() );
        final Column column = (Column) or.getChildren().get( 0 );

        final LiteralConstraint literalConstarint = (LiteralConstraint) column.getConstraints().get( 0 );
    }

    public void testAnd() throws Exception {
        final PackageBuilder builder = new PackageBuilder();
        final Rule rule = createRule( new AndDescr(),
                                      builder,
                                      "modify(stilton);" );
        assertLength( 0,
                      builder.getErrors() );

        final And lhs = rule.getLhs();
        assertLength( 1,
                      lhs.getChildren() );

        final And and = (And) lhs.getChildren().get( 0 );
        assertLength( 1,
                      and.getChildren() );
        final Column column = (Column) and.getChildren().get( 0 );

        final LiteralConstraint literalConstarint = (LiteralConstraint) column.getConstraints().get( 0 );
    }

    public void testNot() throws Exception {
        PackageBuilder builder = new PackageBuilder();

        // Make sure we can't accessa  variable bound inside the not node
        Rule rule = createRule( new NotDescr(),
                                builder,
                                "modify(stilton);" );
        assertEquals( 1,
                      builder.getErrors().length );

        builder = new PackageBuilder();
        rule = createRule( new NotDescr(),
                           builder,
                           "" );
        assertEquals( 0,
                      builder.getErrors().length );

        final And lhs = rule.getLhs();
        assertLength( 1,
                      lhs.getChildren() );

        final Not not = (Not) lhs.getChildren().get( 0 );
        assertLength( 1,
                      not.getChildren() );
        final Column column = (Column) not.getChildren().get( 0 );

        final LiteralConstraint literalConstarint = (LiteralConstraint) column.getConstraints().get( 0 );
    }

    public void testExists() throws Exception {
        PackageBuilder builder = new PackageBuilder();

        // Make sure we can't accessa  variable bound inside the not node
        Rule rule = createRule( new ExistsDescr(),
                                builder,
                                "modify(stilton);" );
        assertEquals( 1,
                      builder.getErrors().length );

        builder = new PackageBuilder();
        rule = createRule( new ExistsDescr(),
                           builder,
                           "" );
        assertEquals( 0,
                      builder.getErrors().length );

        final And lhs = rule.getLhs();
        assertLength( 1,
                      lhs.getChildren() );

        final Exists exists = (Exists) lhs.getChildren().get( 0 );
        assertLength( 1,
                      exists.getChildren() );
        final Column column = (Column) exists.getChildren().get( 0 );

        final LiteralConstraint literalConstarint = (LiteralConstraint) column.getConstraints().get( 0 );
    }

    public void testNumbers() throws Exception {
        // test boolean
        createLiteralRule( new LiteralDescr( "booleanPrimitive",
                                             "==",
                                             "true" ) );

        // test boolean
        createLiteralRule( new LiteralDescr( "booleanPrimitive",
                                             "==",
                                             "false" ) );

        // test char
        createLiteralRule( new LiteralDescr( "charPrimitive",
                                             "==",
                                             "a" ) );

        // test byte
        createLiteralRule( new LiteralDescr( "bytePrimitive",
                                             "==",
                                             "1" ) );

        createLiteralRule( new LiteralDescr( "bytePrimitive",
                                             "==",
                                             "0" ) );

        createLiteralRule( new LiteralDescr( "bytePrimitive",
                                             "==",
                                             "-1" ) );

        // test short
        createLiteralRule( new LiteralDescr( "shortPrimitive",
                                             "==",
                                             "1" ) );

        createLiteralRule( new LiteralDescr( "shortPrimitive",
                                             "==",
                                             "0" ) );

        createLiteralRule( new LiteralDescr( "shortPrimitive",
                                             "==",
                                             "-1" ) );

        // test int
        createLiteralRule( new LiteralDescr( "intPrimitive",
                                             "==",
                                             "1" ) );

        createLiteralRule( new LiteralDescr( "intPrimitive",
                                             "==",
                                             "0" ) );

        createLiteralRule( new LiteralDescr( "intPrimitive",
                                             "==",
                                             "-1" ) );

        //        // test long
        createLiteralRule( new LiteralDescr( "longPrimitive",
                                             "==",
                                             "1" ) );

        createLiteralRule( new LiteralDescr( "longPrimitive",
                                             "==",
                                             "0" ) );

        createLiteralRule( new LiteralDescr( "longPrimitive",
                                             "==",
                                             "-1" ) );

        // test float
        createLiteralRule( new LiteralDescr( "floatPrimitive",
                                             "==",
                                             "1.1" ) );

        createLiteralRule( new LiteralDescr( "floatPrimitive",
                                             "==",
                                             "0" ) );

        createLiteralRule( new LiteralDescr( "floatPrimitive",
                                             "==",
                                             "-1.1" ) );

        // test double
        createLiteralRule( new LiteralDescr( "doublePrimitive",
                                             "==",
                                             "1.1" ) );

        createLiteralRule( new LiteralDescr( "doublePrimitive",
                                             "==",
                                             "0" ) );

        createLiteralRule( new LiteralDescr( "doublePrimitive",
                                             "==",
                                             "-1.1" ) );
    }

    public void testNull() {
        final PackageBuilder builder = new PackageBuilder();

        final PackageDescr packageDescr = new PackageDescr( "p1" );
        final RuleDescr ruleDescr = new RuleDescr( "rule-1" );
        packageDescr.addRule( ruleDescr );

        final AndDescr lhs = new AndDescr();
        ruleDescr.setLhs( lhs );

        final ColumnDescr columnDescr = new ColumnDescr( Cheese.class.getName(),
                                                         "stilton" );

        final LiteralDescr literalDescr = new LiteralDescr( "type",
                                                            "==",
                                                            null );
        columnDescr.addDescr( literalDescr );

        ruleDescr.setConsequence( "" );

        builder.addPackage( packageDescr );

        final Package pkg = (Package) builder.getPackage();
        final Rule rule = pkg.getRule( "rule-1" );

⌨️ 快捷键说明

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