Refine search
@Test public void testSimpleAction() throws Exception { final InternalKnowledgePackage pkg = new KnowledgePackageImpl( "pkg1" ); actionDescr.setText( "list.add( 'hello world' )" ); KnowledgeBuilderImpl pkgBuilder = new KnowledgeBuilderImpl( pkg ); DialectCompiletimeRegistry dialectRegistry = pkgBuilder.getPackageRegistry( pkg.getName() ).getDialectCompiletimeRegistry(); MVELDialect mvelDialect = ( MVELDialect ) dialectRegistry.getDialect( "mvel" );
@Test public void testPackageMerge() throws Exception { final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); try { builder.addPackage( new PackageDescr( "org.drools" ) ); builder.addPackageFromDrl( new StringReader( "package org.drools\n" + "function boolean testIt() {\n" + " return true;\n" + "}\n" ) ); } catch ( RuntimeException e ) { fail( "Should not raise any exception: " + e.getMessage() ); } }
@Test public void testWarnings() { System.setProperty( "drools.kbuilder.severity." + DuplicateRule.KEY, "WARNING"); final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); final PackageDescr packageDescr1 = createBasicPackageWithOneRule(11, 1); final PackageDescr packageDescr2 = createBasicPackageWithOneRule(22, 2); builder.addPackage(packageDescr1); builder.addPackage(packageDescr2); assertFalse(builder.hasErrors()); assertTrue(builder.hasWarnings()); }
@Test public void testBuildMetaAttributes() throws Exception { // creates mock objects final RuleBuildContext context = mock( RuleBuildContext.class ); final RuleImpl rule = mock( RuleImpl.class ); // creates input object final RuleDescr ruleDescr = new RuleDescr( "my rule" ); ruleDescr.addAnnotation( "ruleId", "123" ); ruleDescr.addAnnotation( "author", "Bob Doe" ); ruleDescr.addAnnotation( "text", "\"It's a quoted\\\" string\"" ); // creates expected results // defining expectations on the mock object when( context.getRule() ).thenReturn( rule ); when( context.getRuleDescr() ).thenReturn( ruleDescr ); when( context.getKnowledgeBuilder() ).thenReturn( new KnowledgeBuilderImpl() ); // calling the build method RuleBuilder.buildMetaAttributes( context ); // check expectations verify( rule ).addMetaAttribute( "ruleId", 123 ); verify( rule ).addMetaAttribute( "author", "Bob Doe" ); verify( rule ).addMetaAttribute( "text", "It's a quoted\" string" ); }
private void createLiteralRule( final BaseDescr descr ) { final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); 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 PatternDescr pattern = new PatternDescr( Primitives.class.getName() ); lhs.addDescr( pattern ); pattern.addConstraint( descr ); ruleDescr.setConsequence( "" ); builder.addPackage( packageDescr ); assertLength( 0, builder.getErrors().getErrors() ); }
@Test public void testWarningsReportAsErrors() { System.setProperty( "drools.kbuilder.severity." + DuplicateRule.KEY, "ERROR"); KnowledgeBuilderConfigurationImpl cfg = new KnowledgeBuilderConfigurationImpl(); final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(cfg); final PackageDescr packageDescr1 = createBasicPackageWithOneRule(11, 1); final PackageDescr packageDescr2 = createBasicPackageWithOneRule(22, 2); builder.addPackage(packageDescr1); builder.addPackage(packageDescr2); assertTrue(builder.hasErrors()); assertFalse(builder.hasWarnings()); }
@Test public void testSimpleAction() throws Exception { final InternalKnowledgePackage pkg = new KnowledgePackageImpl( "pkg1" ); actionDescr.setText( "list.add( 'hello world' )" ); KnowledgeBuilderImpl pkgBuilder = new KnowledgeBuilderImpl( pkg );
@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 @Ignore public void testNoPackageName() throws Exception { final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); try { builder.addPackage( new PackageDescr( null ) ); fail( "should have errored here." ); } catch ( final RuntimeException e ) { assertNotNull( e.getMessage() ); } try { builder.addPackage( new PackageDescr( "" ) ); fail( "should have errored here." ); } catch ( final RuntimeException e ) { assertNotNull( e.getMessage() ); } builder.addPackageFromDrl( new StringReader( "package foo" ) ); builder.addPackageFromDrl( new StringReader( "rule x then end" ) ); }
@Test public void testResetWarnings() { System.setProperty( "drools.kbuilder.severity." + DuplicateRule.KEY, "WARNING"); final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); final PackageDescr packageDescr1 = createBasicPackageWithOneRule(11, 1); final PackageDescr packageDescr2 = createBasicPackageWithOneRule(22, 2); builder.addPackage(packageDescr1); builder.addPackage(packageDescr2); assertTrue(builder.hasWarnings()); builder.resetWarnings(); assertFalse(builder.hasWarnings()); builder.addPackage(packageDescr1); assertTrue(builder.hasWarnings()); }
@Test public void testSimpleAction() throws Exception { final InternalKnowledgePackage pkg = new KnowledgePackageImpl( "pkg1" ); actionDescr.setText( "list.add( \"hello world\" );" ); KnowledgeBuilderImpl pkgBuilder = new KnowledgeBuilderImpl( pkg ); DialectCompiletimeRegistry dialectRegistry = pkgBuilder.getPackageRegistry( pkg.getName() ).getDialectCompiletimeRegistry(); JavaDialect javaDialect = ( JavaDialect ) dialectRegistry.getDialect( "java" );
@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 testResetProblems() throws DroolsParserException, IOException { System.setProperty( "drools.kbuilder.severity." + DuplicateRule.KEY, "WARNING"); System.setProperty( "drools.kbuilder.severity." + DuplicateFunction.KEY, "ERROR"); final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); final PackageDescr packageDescr1 = createBasicPackageWithOneRule(11, 1); final PackageDescr packageDescr2 = createBasicPackageWithOneRule(22, 2); builder.addPackage(packageDescr1); builder.addPackage(packageDescr2); builder.addPackageFromDrl( new StringReader( "package foo \n rule ORB" ) ); builder.addPackageFromDrl( new StringReader( "package org.drools\n" + "function boolean testIt() {\n" + " return true;\n" + "}\n" ) ); builder.addPackageFromDrl( new StringReader( "package org.drools\n" + "function boolean testIt() {\n" + " return false;\n" + "}\n" ) ); assertTrue(builder.hasWarnings()); assertTrue(builder.hasErrors()); builder.resetProblems(); assertFalse(builder.hasWarnings()); assertFalse(builder.hasErrors()); }
@Test public void testDebug() throws Exception { String rule = "package com.sample; dialect \"mvel\" rule myRule when then\n System.out.println( \"test\" ); end"; KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); DrlParser parser = new DrlParser(LanguageLevelOption.DRL5); PackageDescr packageDescr = parser.parse(null, rule); RuleDescr ruleDescr = packageDescr.getRules().get(0); builder = new KnowledgeBuilderImpl( ); builder.addPackage(packageDescr); InternalKnowledgePackage pkg = builder.getPackage("com.sample"); MVELConsequence consequence = (MVELConsequence) pkg.getRule("myRule").getConsequence(); String sourceName = ((CompiledExpression) consequence.getCompExpr()).getSourceName(); System.out.println(sourceName); String ruleName = ruleDescr.getNamespace() + "." + ruleDescr.getClassName(); System.out.println(ruleName); assertEquals(sourceName, ruleName); }
@Test public void testSimpleAction() throws Exception { final InternalKnowledgePackage pkg = new KnowledgePackageImpl("pkg1"); actionDescr.setText( "var testString; print('Hello')" ); KnowledgeBuilderImpl pkgBuilder = new KnowledgeBuilderImpl( pkg ); DialectCompiletimeRegistry dialectRegistry = pkgBuilder.getPackageRegistry( pkg.getName() ).getDialectCompiletimeRegistry();
@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 testResetWarningsButNotErrors() throws DroolsParserException, IOException { System.setProperty( "drools.kbuilder.severity." + DuplicateRule.KEY, "WARNING"); System.setProperty( "drools.kbuilder.severity." + DuplicateFunction.KEY, "ERROR"); final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); final PackageDescr packageDescr1 = createBasicPackageWithOneRule(11, 1); final PackageDescr packageDescr2 = createBasicPackageWithOneRule(22, 2); builder.addPackage(packageDescr1); builder.addPackage(packageDescr2); builder.addPackageFromDrl( new StringReader( "package foo \n rule ORB" ) ); builder.addPackageFromDrl( new StringReader( "package org.drools\n" + "function boolean testIt() {\n" + " return true;\n" + "}\n" ) ); builder.addPackageFromDrl( new StringReader( "package org.drools\n" + "function boolean testIt() {\n" + " return false;\n" + "}\n" ) ); assertTrue(builder.hasWarnings()); assertTrue(builder.hasErrors()); builder.resetWarnings(); assertFalse(builder.hasWarnings()); assertTrue(builder.hasErrors()); }
@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 testSimpleReturnValueConstraintEvaluator() throws Exception { final InternalKnowledgePackage pkg = new KnowledgePackageImpl( "pkg1" ); descr.setText( "return value" ); KnowledgeBuilderImpl pkgBuilder = new KnowledgeBuilderImpl( pkg ); DialectCompiletimeRegistry dialectRegistry = pkgBuilder.getPackageRegistry( pkg.getName() ).getDialectCompiletimeRegistry(); MVELDialect mvelDialect = (MVELDialect) dialectRegistry.getDialect( "mvel" );
@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 ); }