Pattern p1 = ( Pattern ) rule1.getLhs().getChildren().get( 0 ); Constraint rvc1 = p1.getConstraints().get( 0 ); Pattern p2 = ( Pattern ) rule2.getLhs().getChildren().get( 0 ); Constraint rvc2 = p2.getConstraints().get( 0 ); assertEquals( rvc1, rvc2 ); Pattern p3 = ( Pattern ) rule3.getLhs().getChildren().get( 0 ); Constraint rvc3 = p3.getConstraints().get( 0 ); EvalCondition ec1 = ( EvalCondition ) rule1.getLhs().getChildren().get( 1 ); EvalExpression ee1 =( EvalExpression) ec1.getEvalExpression(); EvalCondition ec2 = ( EvalCondition ) rule2.getLhs().getChildren().get( 1 ); EvalExpression ee2 =( EvalExpression) ec2.getEvalExpression(); assertNotSame( ee1, ee2 ); assertEquals(ee1, ee2 ); EvalCondition ec3 = ( EvalCondition ) rule3.getLhs().getChildren().get( 1 ); EvalExpression ee3 =( EvalExpression) ec3.getEvalExpression(); assertNotSame( ee1,ee3 ); assertNotSame( rule1.getLhs(), rule2.getLhs() ); assertEquals( rule1.getLhs(), rule2.getLhs() ); assertNotSame( rule1.getLhs(), rule3.getLhs() ); assertThat(rule1.getLhs(), not( equalTo( rule3.getLhs() ) ) );
fail( builder1.getErrors().toString() ); final Pattern pattern1 = (Pattern) ((RuleImpl)builder1.getPackage("package1").getRules().iterator().next()).getLhs().getChildren().get( 0 ); final Constraint returnValue1 = pattern1.getConstraints().get( 0 ); " x + y " ); builder2.addPackage( packageDescr2 ); final Pattern pattern2 = (Pattern) ((RuleImpl)builder2.getPackage("package2").getRules().iterator().next()).getLhs().getChildren().get( 0 ); final Constraint returnValue2 = pattern2.getConstraints().get( 0 ); " x - y " ); builder3.addPackage( packageDescr3 ); final Pattern pattern3 = (Pattern) ((RuleImpl)builder3.getPackage("package3").getRules().iterator().next()).getLhs().getChildren().get( 0 ); final Constraint returnValue3 = pattern3.getConstraints().get( 0 );
@Test public void testEvalMethodCompare() { final KnowledgeBuilderImpl builder1 = new KnowledgeBuilderImpl(); final PackageDescr packageDescr1 = new PackageDescr( "package1" ); createEvalRule( packageDescr1, "1==1" ); builder1.addPackage( packageDescr1 ); final EvalCondition eval1 = (EvalCondition) ((RuleImpl)builder1.getPackage("package1").getRules().iterator().next()).getLhs().getChildren().get( 0 ); final KnowledgeBuilderImpl builder2 = new KnowledgeBuilderImpl(); final PackageDescr packageDescr2 = new PackageDescr( "package2" ); createEvalRule( packageDescr2, "1==1" ); builder2.addPackage( packageDescr2 ); final EvalCondition eval2 = (EvalCondition) ((RuleImpl)builder2.getPackage("package2").getRules().iterator().next()).getLhs().getChildren().get( 0 ); final KnowledgeBuilderImpl builder3 = new KnowledgeBuilderImpl(); final PackageDescr packageDescr3 = new PackageDescr( "package3" ); createEvalRule( packageDescr3, "1==3" ); builder3.addPackage( packageDescr3 ); final EvalCondition eval3 = (EvalCondition) ((RuleImpl)builder3.getPackage("package3").getRules().iterator().next()).getLhs().getChildren().get( 0 ); assertEquals( eval1, eval2 ); assertFalse( eval1.equals( eval3 ) ); assertFalse( eval2.equals( eval3 ) ); }
@Test public void testAnd() throws Exception { final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); final RuleImpl rule = createRule( new AndDescr(), builder, "update(stilton);" ); assertLength( 0, builder.getErrors().getErrors() ); final GroupElement lhs = rule.getLhs(); assertLength( 1, lhs.getChildren() ); final GroupElement and = (GroupElement) lhs.getChildren().get( 0 ); assertLength( 1, and.getChildren() ); final Pattern pattern = (Pattern) and.getChildren().get( 0 ); }
@Test public void testOr() throws Exception { final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); final RuleImpl rule = createRule( new OrDescr(), builder, "update(stilton);" ); assertLength( 0, builder.getErrors().getErrors() ); final GroupElement lhs = rule.getLhs(); assertLength( 1, lhs.getChildren() ); final GroupElement or = (GroupElement) lhs.getChildren().get( 0 ); assertLength( 1, or.getChildren() ); final Pattern pattern = (Pattern) or.getChildren().get( 0 ); }
fail( builder1.getErrors().toString() ); final Pattern pattern1 = (Pattern) ((RuleImpl)builder1.getPackage("package1").getRules().iterator().next()).getLhs().getChildren().get( 0 ); final PredicateConstraint predicate1 = (PredicateConstraint) pattern1.getConstraints().get( 0 ); final Pattern pattern2 = (Pattern) ((RuleImpl)builder2.getPackage("package2").getRules().iterator().next()).getLhs().getChildren().get( 0 ); final PredicateConstraint predicate2 = (PredicateConstraint) pattern2.getConstraints().get( 0 ); "eval(x!=y)" ); builder3.addPackage( packageDescr3 ); final Pattern pattern3 = (Pattern) ((RuleImpl)builder3.getPackage("package3").getRules().iterator().next()).getLhs().getChildren().get( 0 ); final PredicateConstraint predicate3 = (PredicateConstraint) pattern3.getConstraints().get( 0 );
final GroupElement not = (GroupElement) rule.getLhs().getChildren().get( 1 ); assertTrue( not.isNot() );
assertNotNull( rule ); final Pattern pattern = (Pattern) rule.getLhs().getChildren().get( 0 ); assertEquals( StockTick.class.getName(), ((ClassObjectType) pattern.getObjectType()).getClassType().getName() );
@Test public void testNot() throws Exception { KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); // Make sure we can't accessa variable bound inside the not node RuleImpl rule = createRule( new NotDescr(), builder, "update(stilton);" ); assertTrue( builder.hasErrors() ); builder = new KnowledgeBuilderImpl(); rule = createRule( new NotDescr(), builder, "" ); assertEquals( 0, builder.getErrors().getErrors().length ); final GroupElement lhs = rule.getLhs(); assertLength( 1, lhs.getChildren() ); final GroupElement not = (GroupElement) lhs.getChildren().get( 0 ); assertLength( 1, not.getChildren() ); final Pattern pattern = (Pattern) not.getChildren().get( 0 ); }
@Test public void testExists() throws Exception { KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); // Make sure we can't accessa variable bound inside the not node RuleImpl rule = createRule( new ExistsDescr(), builder, "update(stilton);" ); assertTrue( builder.hasErrors() ); builder = new KnowledgeBuilderImpl(); rule = createRule( new ExistsDescr(), builder, "" ); assertEquals( 0, builder.getErrors().getErrors().length ); final GroupElement lhs = rule.getLhs(); assertLength( 1, lhs.getChildren() ); final GroupElement exists = (GroupElement) lhs.getChildren().get( 0 ); assertLength( 1, exists.getChildren() ); final Pattern pattern = (Pattern) exists.getChildren().get( 0 ); }
@Test public void testBuildBigIntegerLiteralConstraint() throws Exception { final PackageDescr pkgDescr = new PackageDescr( "org.drools" ); final RuleDescr ruleDescr = new RuleDescr( "Test Rule" ); AndDescr andDescr = new AndDescr(); PatternDescr patDescr = new PatternDescr( "java.math.BigInteger", "$bd" ); ExprConstraintDescr fcd = new ExprConstraintDescr( "this==10" ); patDescr.addConstraint( fcd ); andDescr.addDescr( patDescr ); ruleDescr.setLhs( andDescr ); ruleDescr.setConsequence( "" ); pkgDescr.addRule( ruleDescr ); final KnowledgeBuilderImpl kBuilder = new KnowledgeBuilderImpl(); kBuilder.addPackage(pkgDescr); assertTrue(kBuilder.getErrors().toString(), kBuilder.getErrors().isEmpty()); final RuleImpl rule = kBuilder.getPackages()[0].getRule( "Test Rule" ); final GroupElement and = rule.getLhs(); final Pattern pat = (Pattern) and.getChildren().get( 0 ); if (pat.getConstraints().get(0) instanceof MvelConstraint) { final MvelConstraint fc = (MvelConstraint) pat.getConstraints().get( 0 ); assertTrue( "Wrong class. Expected java.math.BigInteger. Found: " + fc.getField().getValue().getClass(), fc.getField().getValue() instanceof BigInteger ); } }
@Test public void testBuildBigDecimalLiteralConstraint() throws Exception { final PackageDescr pkgDescr = new PackageDescr( "org.drools" ); final RuleDescr ruleDescr = new RuleDescr( "Test Rule" ); AndDescr andDescr = new AndDescr(); PatternDescr patDescr = new PatternDescr( "java.math.BigDecimal", "$bd" ); ExprConstraintDescr fcd = new ExprConstraintDescr( "this == 10" ); patDescr.addConstraint( fcd ); andDescr.addDescr( patDescr ); ruleDescr.setLhs( andDescr ); ruleDescr.setConsequence( "" ); pkgDescr.addRule( ruleDescr ); final KnowledgeBuilderImpl kBuilder = new KnowledgeBuilderImpl(); kBuilder.addPackage(pkgDescr); assertTrue(kBuilder.getErrors().toString(), kBuilder.getErrors().isEmpty()); final RuleImpl rule = kBuilder.getPackages()[0].getRule( "Test Rule" ); final GroupElement and = rule.getLhs(); final Pattern pat = (Pattern) and.getChildren().get( 0 ); if (pat.getConstraints().get(0) instanceof MvelConstraint) { final MvelConstraint fc = (MvelConstraint) pat.getConstraints().get( 0 ); assertTrue( "Wrong class. Expected java.math.BigDecimal. Found: " + fc.getField().getValue().getClass(), fc.getField().getValue() instanceof BigDecimal ); } }
new RuleTerminalNode( 1, new MockTupleSource( 2 ), rule, rule.getLhs(), 0, buildContext );
final EvalCondition eval = (EvalCondition) rule.getLhs().getChildren().get( 1 ); final CompiledInvoker invoker = (CompiledInvoker) eval.getEvalExpression(); String s = invoker.getMethodBytecode();
pkg, reg.getDialect( pkgRegistry.getDialect() ) ); context.getDeclarationResolver().pushOnBuildStack( rule.getLhs() );
context.getDeclarationResolver().pushOnBuildStack(rule.getLhs());
context.getDeclarationResolver().pushOnBuildStack(rule.getLhs());