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(); }
@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 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 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 testEnumsWithCompositeBuildingProcess() throws Exception { final String drl = "package org.test; " + "" + "declare enum DaysOfWeek " + " SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;\n" + "end\n" + "declare Test " + " field: DaysOfWeek " + "end"; final KieHelper kieHelper = new KieHelper(); kieHelper.addContent( drl, ResourceType.DRL ); final Results res = kieHelper.verify(); assertEquals( 0, res.getMessages().size() ); }
@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 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() ); }
@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()); }