@Test public void testNullBinding() throws Exception { final KieBase kbase = SerializationHelper.serializeObject(loadKnowledgeBase("test_nullBindings.drl")); final KieSession ksession = createKnowledgeSession(kbase); final List list = new ArrayList(); ksession.setGlobal("results", list); ksession.insert(new Person("bob")); ksession.insert(new Person(null)); ksession.fireAllRules(); assertEquals(1, list.size()); assertEquals("OK", list.get(0)); }
private void testJitting(final String drl) { final KieBase kbase = loadKnowledgeBaseFromString(drl); final KieSession ksession = kbase.newKieSession(); ksession.insert(new Person("mark", 37)); ksession.insert(new Person("mario", 38)); ksession.fireAllRules(); ksession.dispose(); }
@Test public void testSalience() throws Exception { KieBase kbase = loadKnowledgeBase(kconf, "simpleSalience.drl"); StatelessKieSession ksession = createStatelessKnowledgeSession( kbase ); final List list = new ArrayList(); ksession.setGlobal( "list", list ); ksession.execute( new Person( "pob") ); assertEquals( 3, list.size() ); assertEquals( "rule 3", list.get( 0 )); assertEquals( "rule 2", list.get( 1 ) ); assertEquals( "rule 1", list.get( 2 ) ); }
@Test public void testSalienceExpression() throws Exception { KieBase kbase = loadKnowledgeBase("test_salienceExpressionRule.drl"); KieSession ksession = kbase.newKieSession(); final List list = new ArrayList(); ksession.setGlobal( "list", list ); final PersonInterface person10 = new Person( "bob", "cheese", 10 ); ksession.insert( person10 ); final PersonInterface person20 = new Person( "mic", "cheese", 20 ); ksession.insert( person20 ); ksession.fireAllRules(); assertEquals( "Two rules should have been fired", 2, list.size() ); assertEquals( "Rule 3 should have been fired first", "Rule 3", list.get( 0 ) ); assertEquals( "Rule 2 should have been fired second", "Rule 2", list.get( 1 ) ); }
@Test public void testStringCoercionComparison() { // DROOLS-167 String str = "import " + Person.class.getName() + ";\n" + "rule R1 when\n" + " $p : Person( name < \"90201304122000000000000017\" )\n" + "then end\n"; KieBase kbase = loadKnowledgeBaseFromString( str ); KieSession ksession = kbase.newKieSession(); ksession.insert( new Person( "90201304122000000000000015", 38 ) ); assertEquals( 1, ksession.fireAllRules() ); }
@Test public void testLocalVariableMVELConsequence() { final KieBase kbase = loadKnowledgeBase("test_LocalVariableMVELConsequence.drl"); final KieSession ksession = kbase.newKieSession(); final List list = new ArrayList(); ksession.setGlobal("results", list); ksession.insert(new Person("bob", "stilton")); ksession.insert(new Person("mark", "brie")); try { ksession.fireAllRules(); assertEquals("should have fired twice", 2, list.size()); } catch (final Exception e) { e.printStackTrace(); fail("Should not raise any exception"); } }
@Test(timeout = 10000) public void testSalienceIntegerAndLoadOrder() throws Exception { KieBase kbase = loadKnowledgeBase("test_salienceIntegerRule.drl"); KieSession ksession = kbase.newKieSession(); final List list = new ArrayList(); ksession.setGlobal( "list", list ); final PersonInterface person = new Person( "Edson", "cheese" ); ksession.insert( person ); ksession.fireAllRules(); assertEquals( "Three rules should have been fired", 3, list.size() ); assertEquals( "Rule 4 should have been fired first", "Rule 4", list.get( 0 ) ); assertEquals( "Rule 2 should have been fired second", "Rule 2", list.get( 1 ) ); assertEquals( "Rule 3 should have been fired third", "Rule 3", list.get( 2 ) ); }
@Test public void testNullBehaviour() throws Exception { final KieBase kbase = loadKnowledgeBase("null_behaviour.drl"); KieSession session = kbase.newKieSession(); final PersonInterface p1 = new Person("michael", "food", 40); final PersonInterface p2 = new Person(null, "drink", 30); session.insert(p1); session.insert(p2); session = SerializationHelper.getSerialisedStatefulKnowledgeSession(session, true); session.fireAllRules(); }
@Test public void testNullConstantLeft() { // JBRULES-3627 final String str = "import org.drools.compiler.*;\n" + "rule R1 when\n" + " $p : Person( null == name )\n" + "then\n" + "end"; final KieBase kbase = loadKnowledgeBaseFromString(str); final KieSession ksession = kbase.newKieSession(); ksession.insert(new Person(null)); ksession.insert(new Person("Mark")); assertEquals(1, ksession.fireAllRules()); ksession.dispose(); }
@Test public void testCoercionInJoinOnField() { // DROOLS-2695 final String drl = "import " + Person.class.getCanonicalName() + "\n" + " rule R1 when\n" + " Integer($i : intValue)\n" + " Person(name == $i)\n" + " then end\n"; KieBase kieBase = loadKnowledgeBaseFromString(drl); KieSession kieSession = kieBase.newKieSession(); kieSession.insert(2); kieSession.insert(new Person("2", 11)); assertEquals(1, kieSession.fireAllRules()); } }
@Test public void testPrimitiveToBoxedCoercionInMethodArgument() throws Exception { final String str = "package org.drools.compiler.test;\n" + "import " + TypeCoercionTest.class.getName() + "\n" + "import org.drools.compiler.*\n" + "rule R1 when\n" + " Person( $ag1 : age )" + " $p2 : Person( name == TypeCoercionTest.integer2String($ag1) )" + "then\n" + "end\n"; final KieBase kbase = loadKnowledgeBaseFromString(str); final KieSession ksession = kbase.newKieSession(); final Person p = new Person("42", 42); ksession.insert(p); assertEquals(1, ksession.fireAllRules()); }
@Test public void testJBRules2055() { final KieBase kbase = loadKnowledgeBase("test_JBRules2055.drl"); final KieSession ksession = createKnowledgeSession(kbase); final List<String> results = new ArrayList<String>(); ksession.setGlobal("results", results); ksession.insert(new Cheese("stilton")); ksession.insert(new Cheese("brie")); ksession.insert(new Cheese("muzzarella")); ksession.insert(new Person("bob", "stilton")); ksession.fireAllRules(); assertEquals(2, results.size()); assertEquals("stilton", results.get(0)); assertEquals("brie", results.get(1)); }
@Test public void testModifyWithLockOnActive() throws Exception { final KieBase kbase = SerializationHelper.serializeObject(loadKnowledgeBase("test_ModifyWithLockOnActive.drl")); final KieSession session = createKnowledgeSession(kbase); final List results = new ArrayList(); session.setGlobal("results", results); final Person bob = new Person("Bob", 15); final Person mark = new Person("Mark", 16); final Person michael = new Person("Michael", 14); session.insert(bob); session.insert(mark); session.insert(michael); session.getAgenda().getAgendaGroup("feeding").setFocus(); session.fireAllRules(5); assertEquals(2, ((List) session.getGlobal("results")).size()); }
@Test public void testIntCoercion() { // DROOLS-1688 final String drl = "package org.drools.compiler.test;\n" + "import " + Person.class.getCanonicalName() + "\n" + " rule R1 when\n" + " Person(age == 12)\n" + " then end\n" + " rule R2 when\n" + " Person(age == \"11\")\n " + " then\n end\n" + " rule R3 when\n" + " Person(age == 11)\n" + " then end\n"; KieBase kieBase = loadKnowledgeBaseFromString(drl); KieSession kieSession = kieBase.newKieSession(); kieSession.insert(new Person("Mario", 11)); assertEquals(2, kieSession.fireAllRules()); }
@Test public void testStringCoercion() { // DROOLS-1688 final String drl = "package org.drools.compiler.test;\n" + "import " + Person.class.getCanonicalName() + "\n" + " rule R1 when\n" + " Person(name == \"12\")\n" + " then end\n" + " rule R2 when\n" + " Person(name == 11)\n " + " then\n end\n" + " rule R3 when\n" + " Person(name == \"11\")\n" + " then end\n"; KieBase kieBase = loadKnowledgeBaseFromString(drl); KieSession kieSession = kieBase.newKieSession(); kieSession.insert(new Person("11")); assertEquals(2, kieSession.fireAllRules()); }
@Test public void testJitConstraintInvokingConstructor() { // JBRULES-3628 final String str = "import org.drools.compiler.Person;\n" + "rule R1 when\n" + " Person( new Integer( ageAsInteger ) < 40 ) \n" + "then\n" + "end"; final KieBase kbase = loadKnowledgeBaseFromString(str); final KieSession ksession = kbase.newKieSession(); ksession.insert(new Person("Mario", 38)); assertEquals(1, ksession.fireAllRules()); ksession.dispose(); }
@Test public void testStrWithInlineCastAndFieldOnThis() { String drl = "package org.drools.compiler.integrationtests " + "import " + Person.class.getName() + "; " + "rule R1 " + " when " + " Object( this#" + Person.class.getName() + ".name str[startsWith] \"M\" ) " + " then " + "end "; KieBase kbase = loadKnowledgeBaseFromString(drl); KieSession ksession = kbase.newKieSession(); try { ksession.insert( new Person( "Mark" ) ); assertEquals("Wrong number of rules fired", 1, ksession.fireAllRules()); } finally { ksession.dispose(); } }
@Test public void testDynamicNegativeSalienceWithSpace() { // DROOLS-302 String str = "import org.drools.compiler.Person\n" + "rule R\n" + "salience - $age\n" + "when\n" + " Person( $age : age )\n" + "then\n" + "end\n"; KieBase kbase = loadKnowledgeBaseFromString( str ); KieSession ksession = kbase.newKieSession(); Person p1 = new Person( "A", 31 ); FactHandle fh1 = ksession.insert( p1 ); ksession.fireAllRules(); }
@Test public void testModifyRetractAndModifyInsert() throws Exception { final KieBase kbase = SerializationHelper.serializeObject( loadKnowledgeBase( "test_ModifyRetractInsert.drl" ) ); final KieSession ksession = createKnowledgeSession( kbase ); final List list = new ArrayList(); ksession.setGlobal("results", list); final org.drools.compiler.Person bob = new org.drools.compiler.Person("Bob"); bob.setStatus("hungry"); ksession.insert(bob); ksession.insert(new org.drools.compiler.Cheese()); ksession.insert(new org.drools.compiler.Cheese()); ksession.fireAllRules(2); assertEquals("should have fired only once", 1, list.size()); }
@Test public void testEmptyAfterRetractInIndexedMemory() { String str = ""; str += "package org.simple \n"; str += "import org.drools.compiler.Person\n"; str += "global java.util.List list \n"; str += "rule xxx dialect 'mvel' \n"; str += "when \n"; str += " Person( $name : name ) \n"; str += " $s : String( this == $name) \n"; str += "then \n"; str += " list.add($s); \n"; str += "end \n"; final KieBase kbase = loadKnowledgeBaseFromString(str); final KieSession ksession = createKnowledgeSession(kbase); final List list = new ArrayList(); ksession.setGlobal("list", list); final org.drools.compiler.Person p = new org.drools.compiler.Person("ackbar"); ksession.insert(p); ksession.insert("ackbar"); ksession.fireAllRules(); ksession.dispose(); assertEquals(1, list.size()); assertEquals("ackbar", list.get(0)); }