Refine search
@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 ); }
@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 testPackNestedExists() { final GroupElement exists1 = GroupElementFactory.newExistsInstance(); final Pattern pattern1 = new Pattern( 0, null ); exists1.addChild( pattern1 ); assertEquals( 1, exists1.getChildren().size() ); assertSame( pattern1, exists1.getChildren().get( 0 ) ); final GroupElement exists2 = GroupElementFactory.newExistsInstance(); exists2.addChild( exists1 ); exists2.pack(); assertEquals( 1, exists2.getChildren().size() ); assertSame( pattern1, exists2.getChildren().get( 0 ) ); }
@Test public void testAddSingleBranchAnd() { final GroupElement and1 = GroupElementFactory.newAndInstance(); final Pattern pattern = new Pattern( 0, null ); and1.addChild( pattern ); assertEquals( 1, and1.getChildren().size() ); assertSame( pattern, and1.getChildren().get( 0 ) ); final GroupElement or1 = GroupElementFactory.newOrInstance(); or1.addChild( and1 ); or1.pack(); assertEquals( 1, or1.getChildren().size() ); assertSame( pattern, or1.getChildren().get( 0 ) ); }
@Test public void testAddSingleBranchOr() { final GroupElement or1 = GroupElementFactory.newOrInstance(); final Pattern pattern = new Pattern( 0, null ); or1.addChild( pattern ); assertEquals( 1, or1.getChildren().size() ); assertSame( pattern, or1.getChildren().get( 0 ) ); final GroupElement and1 = GroupElementFactory.newAndInstance(); and1.addChild( or1 ); and1.pack(); assertEquals( 1, and1.getChildren().size() ); assertSame( pattern, and1.getChildren().get( 0 ) ); }
@Test public void testPackNestedOr() { final GroupElement or1 = GroupElementFactory.newOrInstance(); final Pattern pattern1 = new Pattern( 0, null ); or1.addChild( pattern1 ); final Pattern pattern2 = new Pattern( 0, null ); or1.addChild( pattern2 ); assertEquals( 2, or1.getChildren().size() ); assertSame( pattern1, or1.getChildren().get( 0 ) ); assertSame( pattern2, or1.getChildren().get( 1 ) ); final GroupElement or2 = GroupElementFactory.newOrInstance(); or2.addChild( or1 ); or2.pack(); assertEquals( 2, or2.getChildren().size() ); assertSame( pattern1, or2.getChildren().get( 0 ) ); assertSame( pattern2, or2.getChildren().get( 1 ) ); }
@Test public void testPackNestedAnd() { final GroupElement and1 = GroupElementFactory.newAndInstance(); final Pattern pattern1 = new Pattern( 0, null ); and1.addChild( pattern1 ); final Pattern pattern2 = new Pattern( 0, null ); and1.addChild( pattern2 ); assertEquals( 2, and1.getChildren().size() ); assertSame( pattern1, and1.getChildren().get( 0 ) ); assertSame( pattern2, and1.getChildren().get( 1 ) ); final GroupElement and2 = GroupElementFactory.newAndInstance(); and2.addChild( and1 ); and2.pack(); assertEquals( 2, and2.getChildren().size() ); assertSame( pattern1, and2.getChildren().get( 0 ) ); assertSame( pattern2, and2.getChildren().get( 1 ) ); }
parent.getChildren() ); assertEquals( GroupElement.class, parent.getChildren().get( 0 ).getClass() ); assertEquals( GroupElement.class, parent.getChildren().get( 1 ).getClass() ); final GroupElement and1 = (GroupElement) parent.getChildren().get( 0 ); assertTrue( and1.isAnd() ); and1.getChildren().get( 0 ) ); assertEquals( c, and1.getChildren().get( 1 ) ); final GroupElement and2 = (GroupElement) parent.getChildren().get( 1 ); assertEquals( b, and2.getChildren().get( 0 ) ); assertEquals( c, and2.getChildren().get( 1 ) );
and1.addChild( or1 ); assertEquals( 1, and1.getChildren().size() ); assertSame( or1, and1.getChildren().get( 0 ) ); or1.getChildren().get( 0 ) ); assertSame( pattern2, or1.getChildren().get( 1 ) ); or2.getChildren().size() ); assertSame( and1, or2.getChildren().get( 0 ) ); or2.getChildren().size() ); assertSame( or2, or3.getChildren().get( 0 ) ); and2.getChildren().size() ); assertSame( or3, and2.getChildren().get( 0 ) ); and2.getChildren().size() ); and2.getChildren().get( 0 ) ); assertSame( pattern2, and2.getChildren().get( 1 ) );
and1.addChild( or1 ); assertEquals( 1, and1.getChildren().size() ); assertSame( or1, and1.getChildren().get( 0 ) ); or1.getChildren().get( 0 ) ); assertSame( pattern2, or1.getChildren().get( 1 ) ); or2.getChildren().size() ); assertSame( and1, or2.getChildren().get( 0 ) ); or2.getChildren().size() ); assertSame( or2, or3.getChildren().get( 0 ) ); and2.getChildren().size() ); assertSame( or3, and2.getChildren().get( 0 ) ); assertSame( pattern3, and2.getChildren().get( 1 ) ); and2.getChildren().size() ); and2.getChildren().get( 0 ) ); assertSame( pattern3, and2.getChildren().get( 1 ) );
@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 ); }
GroupElement notR = (GroupElement) wrapper.getChildren().get( 0 ); notR.getChildren().size() ); assertTrue( notR.getChildren().get( 0 ) instanceof GroupElement ); GroupElement andR = (GroupElement) notR.getChildren().get( 0 ); assertTrue( andR.isAnd() ); andR.getChildren().size() ); assertTrue( andR.getChildren().get( 0 ) instanceof Pattern ); assertTrue( andR.getChildren().get( 1 ) instanceof Pattern ); final Pattern a1 = (Pattern) andR.getChildren().get( 0 ); final Pattern b1 = (Pattern) andR.getChildren().get( 1 );
@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 ); }
parent.getChildren().size() ); final GroupElement and = (GroupElement) parent.getChildren().get( 0 ); assertTrue( and.isAnd() ); assertEquals( 2, and.getChildren().size() ); final GroupElement b1 = (GroupElement) and.getChildren().get( 0 ); final GroupElement b2 = (GroupElement) and.getChildren().get( 1 ); assertTrue( b1.isNot() ); assertTrue( b2.isNot() ); b1.getChildren().size() ); assertEquals( a, b1.getChildren().get( 0 ) ); b2.getChildren().size() ); assertEquals( b, b2.getChildren().get( 0 ) );
parent.getChildren() ); assertEquals( GroupElement.class, parent.getChildren().get( 0 ).getClass() ); assertEquals( GroupElement.class, parent.getChildren().get( 1 ).getClass() ); assertEquals( GroupElement.class, parent.getChildren().get( 2 ).getClass() ); assertEquals( GroupElement.class, parent.getChildren().get( 3 ).getClass() ); GroupElement and1 = (GroupElement) parent.getChildren().get( 0 ); assertTrue( and1.isAnd() ); assertLength( 4, and1.getChildren() ); assertEquals( a, and1.getChildren().get( 0 ) ); assertEquals( c, and1.getChildren().get( 1 ) ); assertEquals( d, and1.getChildren().get( 2 ) ); assertEquals( not, and1.getChildren().get( 3 ) ); and1 = (GroupElement) parent.getChildren().get( 1 ); assertTrue( and1.isAnd() ); assertLength( 4, and1.getChildren() ); assertEquals( a, and1.getChildren().get( 0 ) );
parent.getChildren().size() ); final GroupElement b1 = (GroupElement) parent.getChildren().get( 0 ); final GroupElement b2 = (GroupElement) parent.getChildren().get( 1 ); assertTrue( b1.isNot() ); assertTrue( b2.isNot() ); b1.getChildren().size() ); assertEquals( a, b1.getChildren().get( 0 ) ); b2.getChildren().size() ); assertEquals( b, b2.getChildren().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 ) ); }
result ); assertLength( 4, result[0].getChildren() ); result[0].getChildren().get( 0 ) ); assertEquals( b, result[0].getChildren().get( 1 ) ); assertEquals( c, result[0].getChildren().get( 2 ) ); assertEquals( d, result[0].getChildren().get( 3 ) );
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 );
and1.getChildren().size() ); assertSame( pattern1, and1.getChildren().get( 0 ) ); assertSame( pattern2, and1.getChildren().get( 1 ) ); and2.getChildren().size() ); assertSame( pattern1, and2.getChildren().get( 0 ) ); assertSame( pattern2, and2.getChildren().get( 1 ) ); assertSame( pattern3, and2.getChildren().get( 2 ) );