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 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() ); }
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(); }
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 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 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 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 testFromAfterOr() { // DROOLS-707 String drl2 = "rule \"Disaster Rule\"\n" + " when\n" + " eval(true) or ( eval(false) and Integer() )\n" + " $a : Integer()\n" + " Integer() from $a\n" + " then\n" + "end\n"; KieSession ksession = new KieHelper().addContent( drl2, ResourceType.DRL ) .build() .newKieSession(); ksession.insert( 1 ); assertEquals( 1, ksession.fireAllRules() ); }
@Test public void testComplexEvals() { // DROOLS-1139 String drl = "rule R1 when\n" + " $s : String()\n" + " Integer()\n" + " not( ( eval($s.length() < 2) and (eval(true) or eval(false))))\n" + "then \n" + "end\n"; KieSession kieSession = new KieHelper().addContent( drl, ResourceType.DRL ) .build().newKieSession(); kieSession.insert( 42 ); kieSession.insert( "test" ); assertEquals(1, kieSession.fireAllRules()); }
@Test public void testSharedQueryNode() throws Exception { // DROOLS-561 String drl = "query find( Integer $i, String $s )\n" + " $i := Integer( toString() == $s )\n" + "end\n" + "\n" + "rule R2 salience -1 when\n" + " $s : String()\n" + " ?find( i, $s; )\n" + "then\n" + "end\n" + "rule R1 when\n" + " $s : String()\n" + " ?find( i, $s; )\n" + " $i : Integer( this == 1 ) from i\n" + "then\n" + " delete( $s );\n" + "end\n"; KieHelper helper = new KieHelper(); helper.addContent( drl, ResourceType.DRL ); KieSession ksession = helper.build().newKieSession(); ksession.insert( "1" ); ksession.insert( 1 ); ksession.fireAllRules(); }
@Test public void testPassiveExists() { // DROOLS-699 String drl2 = "import " + List.class.getCanonicalName() + ";\n" + "\n\n" + "rule \"NotExists\"\n" + "when\n" + "$l1: List() \n" + "$l2: List() \n" + "exists( String() from $l1 ) \n" + "not( exists( String() ) )\n" + "then end\n"; KieSession ksession = new KieHelper().addContent( drl2, ResourceType.DRL ) .build() .newKieSession(); ksession.insert( asList( "Mario", "Mark" ) ); ksession.insert( asList( "Julie", "Leiti" ) ); assertEquals( 4, ksession.fireAllRules() ); }
@Test public void testJITIncompatibleTypes() throws Exception { // BZ-1101295 String drl = "import " + Host.class.getCanonicalName() + ";\n" + "rule R when\n" + " $s: String()" + " Host($s == this)\n" + "then\n" + "end"; KieHelper helper = new KieHelper(); helper.addContent( drl, ResourceType.DRL ); KieSession ksession = helper.build().newKieSession(); ksession.insert( new Host() ); ksession.insert( "host" ); ksession.fireAllRules(); }
@Test public void testLeftTupleGetIndex() throws Exception { // DROOLS-570 String drl = "rule R1 when\n" + " $s : String()\n" + " (or Long(this == 1) Long(this == 2) )\n" + "then\n" + "end\n" + "rule R2 extends R1 when\n" + " $n : Number() from accumulate( Integer($value : this); sum($value) )\n" + "then\n" + " System.out.println($n);\n" + "end\n"; KieHelper helper = new KieHelper(); helper.addContent( drl, ResourceType.DRL ); KieSession ksession = helper.build().newKieSession(); ksession.insert( "1" ); ksession.insert( 1L ); ksession.insert( 1 ); ksession.fireAllRules(); }
@Test public void testModifyWithOr() { // DROOLS-1185 String drl = "import " + List.class.getCanonicalName() + "\n" + "import " + AtomicBoolean.class.getCanonicalName() + "\n" + "\n" + "rule R when\n" + " $l : List()\n" + " ( String() from $l\n" + " or\n" + " String() from $l )\n" + " $b : AtomicBoolean( get() )\n" + "then" + " modify($b) { set(false) }\n" + "end\n"; KieSession kieSession = new KieHelper().addContent( drl, ResourceType.DRL ) .build().newKieSession(); kieSession.insert( asList("test") ); kieSession.insert( new AtomicBoolean( true ) ); assertEquals( 1, kieSession.fireAllRules() ); }