private KieBase getKieBaseFromString( String drl, KieBaseOption... options ) { return new KieHelper().addContent( drl, ResourceType.DRL ).build(options); }
private KieSession getSessionFromString( String drl ) { return new KieHelper().addContent( drl, ResourceType.DRL ).build().newKieSession(); }
@Before public void setup() { this.kieBase = new KieHelper().build(); // create several KieSessions this.kieBase.newKieSession(); this.kieBase.newKieSession(); this.kieBase.newKieSession(); }
@Test public void testDeclarationOfClassWithNonStandardSetterAndFulllName() { final String s1 = "package test; " + "import " + BeanishClass.class.getCanonicalName() + "; " + "declare " + BeanishClass.class.getName() + " @propertyReactive end " + "rule Check when BeanishClass() @watch( foo ) then end "; KieHelper kh = new KieHelper(); kh.addContent( s1, ResourceType.DRL ); assertEquals( 0, kh.verify().getMessages( Message.Level.ERROR ).size() ); }
@Test public void testLogEvents() throws Exception { final KieSession ksession = new KieHelper().build() .newKieSession(); final WorkingMemoryInMemoryLogger logger = new WorkingMemoryInMemoryLogger((WorkingMemory) ksession); logger.afterNodeLeft(new ProcessNodeLeftEventImpl(new EmtpyNodeInstance(), ksession)); List<LogEvent> logEvents = logger.getLogEvents(); assertEquals(logEvents.size(), 1); assertTrue(logEvents.get(0).toString().startsWith("AFTER PROCESS NODE EXITED")); }
@Test public void testPatternMatchingWithFakeImplicitCast() { // DROOLS-966 String drl = "rule R1 when\n" + " String( this == \"\\\"#\")\n" + "then \n" + "end\n"; KieSession ksession = new KieHelper().addContent( drl, ResourceType.DRL ) .build() .newKieSession(); ksession.insert( "\"#" ); assertEquals( 1, ksession.fireAllRules() ); }
@Test public void testRedeclareWithInterfaceExtensionAndOverride() { final String s1 = "package test;\n" + "declare trait " + Ext.class.getCanonicalName() + " extends " + Base.class.getCanonicalName() + " " + " fld : String " + "end " + "declare trait " + Base.class.getCanonicalName() + " " + "end " + ""; KieHelper kh = new KieHelper(); kh.addContent( s1, ResourceType.DRL ); assertEquals( 0, kh.verify().getMessages( Message.Level.ERROR ).size() ); }
private KieSession getSession( String... ruleFiles ) { KieHelper kieHelper = new KieHelper(); for (String file : ruleFiles) { kieHelper.kfs.write( new ClassPathResource( file ) ); } return kieHelper.build().newKieSession(); }
private static KieBase getKieBase(String drl) { return new KieHelper().addContent(drl, ResourceType.DRL).build(); }
@Test public void testGenericsInRHSWithModify() { // DROOLS-493 String drl = "import java.util.Map;\n" + "import java.util.HashMap;\n" + "rule R no-loop when\n" + " $s : String( )\n" + "then\n" + " Map<String,String> a = new HashMap<String,String>();\n" + " modify( $s ) { };" + "end"; KieHelper helper = new KieHelper(); helper.addContent( drl, ResourceType.DRL ); KieSession ksession = helper.build().newKieSession(); ksession.insert( "1" ); ksession.fireAllRules(); }
@Test public void testRedeclareClassAsTrait() { final String s1 = "package test; " + "global java.util.List list; " + "declare trait " + SomeClass.class.getCanonicalName() + " end "; KieHelper kh = new KieHelper(); kh.addContent( s1, ResourceType.DRL ); assertEquals( 1, kh.verify().getMessages( Message.Level.ERROR ).size() ); }
private void checkDrl(String drl) { InternalKnowledgeBase kbase = (InternalKnowledgeBase) new KieHelper().addContent( drl, ResourceType.DRL ) .build( MultithreadEvaluationOption.YES ); Rete rete = kbase.getRete(); for (EntryPointNode entryPointNode : rete.getEntryPointNodes().values()) { traverse( entryPointNode ); } }
@Test public void testNormalizeRuleName() { // DROOLS-1192 String drl = "rule \"rule(hello)\" when\n" + " Integer()\n" + "then\n" + "end\n"; KieSession kieSession = new KieHelper().addContent( drl, ResourceType.DRL ) .build().newKieSession(); kieSession.insert( 1 ); assertEquals( 1, kieSession.fireAllRules() ); }
@Test public void testDeclarationOfClassWithNonStandardSetter() { final String s1 = "package test; " + "import " + BeanishClass.class.getCanonicalName() + "; " + "declare " + BeanishClass.class.getSimpleName() + " @propertyReactive end " + "rule Check when BeanishClass() @Watch( foo ) then end "; KieHelper kh = new KieHelper(); kh.addContent( s1, ResourceType.DRL ); assertEquals( 0, kh.verify().getMessages( Message.Level.ERROR ).size() ); }
@Test public void testJittingEnum() { final String drl = "import " + AnEnum.class.getCanonicalName() + ";\n" + " rule R1 \n" + " when \n" + " $enumFact: AnEnum(this == AnEnum.FIRST)\n" + " then \n" + " end "; final KieHelper kieHelper = new KieHelper(); kieHelper.addContent( drl, ResourceType.DRL ); final KieBase kieBase = kieHelper.build(ConstraintJittingThresholdOption.get(0)); final KieSession kieSession = kieBase.newKieSession(); kieSession.insert(AnEnum.FIRST); Assertions.assertThat(kieSession.fireAllRules()).isEqualTo(1); }
@Test public void testDeclarationOfClassWithNonStandardSetterAndCanonicalName() { // DROOLS-815 final String s1 = "package test; " + "import " + BeanishClass.class.getCanonicalName() + "; " + "declare " + BeanishClass.class.getCanonicalName() + " @propertyReactive end " + "rule Check when BeanishClass() @Watch( foo ) then end "; KieHelper kh = new KieHelper(); kh.addContent( s1, ResourceType.DRL ); assertEquals( 0, kh.verify().getMessages( Message.Level.ERROR ).size() ); }
@Test public void testModifySubclassOverWindow() { // DROOLS-1501 String drl = "declare Number @role( event ) end\n" + "declare Integer @role( event ) end\n" + "\n" + "rule R1 no-loop when\n" + " $i: Integer()\n" + "then\n" + " update($i);\n" + "end\n" + "rule R2 when\n" + " $n: Number() over window:length(1)\n" + "then\n" + "end"; KieSession ksession = new KieHelper().addContent( drl, ResourceType.DRL ) .build( EventProcessingOption.STREAM ) .newKieSession(); ksession.insert(1); ksession.fireAllRules(); }
@Test() public void testPojoExtendInterface() { //DROOLS-697 final String s1 = "package test;\n" + "declare Poojo extends Mask " + "end " + "declare trait Mask " + "end " + ""; KieHelper kh = new KieHelper(); kh.addContent( s1, ResourceType.DRL ); assertEquals( 1, kh.verify().getMessages( Message.Level.ERROR ).size() ); }
@Test public void testPatternMatchingWithFakeNullSafe() { // DROOLS-966 String drl = "rule R1 when\n" + " String( this == \"\\\"!.\")\n" + "then \n" + "end\n"; KieSession ksession = new KieHelper().addContent( drl, ResourceType.DRL ) .build() .newKieSession(); ksession.insert( "\"!." ); assertEquals( 1, ksession.fireAllRules() ); }
@Test() public void testTraitExtendPojo() { //DROOLS-697 final String s1 = "package test;\n" + "declare Poojo " + "end " + "declare trait Mask extends Poojo " + "end " + ""; KieHelper kh = new KieHelper(); kh.addContent( s1, ResourceType.DRL ); assertEquals( 1, kh.verify().getMessages( Message.Level.ERROR ).size() ); }