Refine search
@Test public void testDoubleNullSafe() { String str = "import org.drools.compiler.*;\n" + "rule R1 when\n" + " Person( address!.street!.length > 15 ) \n" + "then\n" + "end"; KieBase kbase = loadKnowledgeBaseFromString(str); KieSession ksession = kbase.newKieSession(); ksession.insert(new Person("Mario", 38)); Person mark = new Person("Mark", 37); mark.setAddress(new Address("Main Street")); ksession.insert(mark); Person edson = new Person("Edson", 34); edson.setAddress(new Address(null)); ksession.insert(edson); Person alex = new Person("Alex", 34); alex.setAddress(new Address("The Main Very Big Street")); ksession.insert(alex); assertEquals(1, ksession.fireAllRules()); ksession.dispose(); }
@Test public void testMixedNullSafes() { String str = "import org.drools.compiler.*;\n" + "rule R1 when\n" + " $p : Person( " + " address!.street!.length > 0 && ( address!.street!.length < 15 || > 20 && < 30 ) " + " && address!.zipCode!.length > 0 && address.zipCode == \"12345\" " + " ) \n" + "then\n" + " System.out.println( $p ); \n" + "end"; KieBase kbase = loadKnowledgeBaseFromString(str); KieSession ksession = kbase.newKieSession(); ksession.insert(new Person("Mario", 38)); Person mark = new Person("Mark", 37); mark.setAddress(new Address("Main Street",null,"12345")); ksession.insert(mark); Person edson = new Person("Edson", 34); edson.setAddress(new Address(null)); ksession.insert(edson); Person alex = new Person("Alex", 34); alex.setAddress(new Address("The Main Verrry Long Street")); ksession.insert(alex); Person frank = new Person("Frank", 24); frank.setAddress(new Address("Long Street number 21",null,"12345")); ksession.insert(frank); assertEquals(2, ksession.fireAllRules()); ksession.dispose(); }
@Test public void testGroupedAccess() { String drl = "package org.drools.compiler.integrationtests\n" + "import org.drools.compiler.*;\n" + "rule R1\n" + " when\n" + " Person( address#LongAddress.(country == \"United States\" || country == \"United Kingdom\") )\n" + " then\n" + "end\n"; KieBase kbase = loadKnowledgeBaseFromString(drl); KieSession ksession = kbase.newKieSession(); try { Person mark1 = new Person("mark"); mark1.setAddress(new LongAddress("United States")); ksession.insert(mark1); Person mark2 = new Person("mark"); mark2.setAddress(new LongAddress("United Kingdom")); ksession.insert(mark2); Person mark3 = new Person("mark"); mark3.setAddress(new LongAddress("Czech Republic")); ksession.insert(mark3); assertEquals("wrong number of rules fired", 2, ksession.fireAllRules()); } finally { ksession.dispose(); } }
@Test public void testMatchesOperator() { // BZ-971008 String drl = "package org.drools.compiler.integrationtests\n" + "import org.drools.compiler.*;\n" + "rule R1\n" + " when\n" + " Person( address#LongAddress.country matches \"[Uu]nited.*\" )\n" + " then\n" + "end\n"; KieBase kbase = loadKnowledgeBaseFromString(drl); KieSession ksession = kbase.newKieSession(); try { Person mark1 = new Person("mark"); mark1.setAddress(new LongAddress("United States")); ksession.insert(mark1); Person mark2 = new Person("mark"); mark2.setAddress(new LongAddress("United Kingdom")); ksession.insert(mark2); Person mark3 = new Person("mark"); mark3.setAddress(new LongAddress("Czech Republic")); ksession.insert(mark3); assertEquals( "wrong number of rules fired", 2, ksession.fireAllRules() ); } finally { ksession.dispose(); } }
@Test public void testNullSafeBinding() { String str = "import org.drools.compiler.*;\n" + "rule R1 when\n" + " Person( $streetName : address!.street ) \n" + "then\n" + "end"; KieBase kbase = loadKnowledgeBaseFromString(str); KieSession ksession = kbase.newKieSession(); ksession.insert(new Person("Mario", 38)); Person mark = new Person("Mark", 37); mark.setAddress(new Address("Main Street")); ksession.insert(mark); Person edson = new Person("Edson", 34); edson.setAddress(new Address(null)); ksession.insert(edson); assertEquals(2, ksession.fireAllRules()); ksession.dispose(); }
@Test public void testNullSafeNullComparison() { String str = "import org.drools.compiler.*;\n" + "rule R1 when\n" + " Person( address!.street == null ) \n" + "then\n" + "end"; KieBase kbase = loadKnowledgeBaseFromString(str); KieSession ksession = kbase.newKieSession(); ksession.insert(new Person("Mario", 38)); Person mark = new Person("Mark", 37); mark.setAddress(new Address("Main Street")); ksession.insert(mark); Person edson = new Person("Edson", 34); edson.setAddress(new Address(null)); ksession.insert(edson); assertEquals(1, ksession.fireAllRules()); ksession.dispose(); }
@Test public void testSuperclass() { String drl = "package org.drools.compiler.integrationtests\n" + "import org.drools.compiler.*;\n" + "rule R1\n" + " when\n" + " Person( address#LongAddress.country str[startsWith] \"United\" )\n" + " then\n" + "end\n"; KieBase kbase = loadKnowledgeBaseFromString(drl); KieSession ksession = kbase.newKieSession(); try { Person mark1 = new Person("mark"); mark1.setAddress(new Address()); ksession.insert(mark1); Person mark2 = new Person("mark"); mark2.setAddress(new LongAddress("United Kingdom")); ksession.insert(mark2); Person mark3 = new Person("mark"); mark3.setAddress(new LongAddress("Czech Republic")); ksession.insert(mark3); assertEquals("wrong number of rules fired", 1, ksession.fireAllRules()); } finally { ksession.dispose(); } }
@Test public void testInferredCast() throws Exception { String str = "import org.drools.compiler.*;\n" + "rule R1 when\n" + " Person( name == \"mark\", address instanceof LongAddress, address.country == \"uk\" )\n" + "then\n" + "end\n"; KieBase kbase = loadKnowledgeBaseFromString(str); KieSession ksession = kbase.newKieSession(); Person mark1 = new Person("mark"); mark1.setAddress(new LongAddress("uk")); ksession.insert(mark1); Person mark2 = new Person("mark"); ksession.insert(mark2); Person mark3 = new Person("mark"); mark3.setAddress(new Address()); ksession.insert(mark3); assertEquals(1, ksession.fireAllRules()); ksession.dispose(); }
@Test public void testInlineCast() throws Exception { String str = "import org.drools.compiler.*;\n" + "rule R1 when\n" + " Person( name == \"mark\", address#LongAddress.country == \"uk\" )\n" + "then\n" + "end\n"; KieBase kbase = loadKnowledgeBaseFromString(str); KieSession ksession = kbase.newKieSession(); Person mark1 = new Person("mark"); mark1.setAddress(new LongAddress("uk")); ksession.insert(mark1); Person mark2 = new Person("mark"); ksession.insert(mark2); Person mark3 = new Person("mark"); mark3.setAddress(new Address()); ksession.insert(mark3); assertEquals(1, ksession.fireAllRules()); ksession.dispose(); }
@Test public void testInlineCastWithBinding() throws Exception { String str = "import org.drools.compiler.*;\n" + "rule R1 when\n" + " Person( name == \"mark\", $country : address#LongAddress.country == \"uk\" )\n" + "then\n" + "end\n"; KieBase kbase = loadKnowledgeBaseFromString(str); KieSession ksession = kbase.newKieSession(); Person mark1 = new Person("mark"); mark1.setAddress(new LongAddress("uk")); ksession.insert(mark1); Person mark2 = new Person("mark"); ksession.insert(mark2); Person mark3 = new Person("mark"); mark3.setAddress(new Address()); ksession.insert(mark3); assertEquals(1, ksession.fireAllRules()); ksession.dispose(); }
@Test public void testInlineCastWithNestedAccces() throws Exception { // DROOLS-127 String str = "import org.drools.compiler.*;\n" + "rule R1 when\n" + " Person( name == \"mark\", address#LongAddress.country.length == 2 )\n" + "then\n" + "end\n"; KieBase kbase = loadKnowledgeBaseFromString(str); KieSession ksession = kbase.newKieSession(); Person mark1 = new Person("mark"); mark1.setAddress(new LongAddress("uk")); ksession.insert(mark1); Person mark2 = new Person("mark"); ksession.insert(mark2); Person mark3 = new Person("mark"); mark3.setAddress(new Address()); ksession.insert(mark3); assertEquals(1, ksession.fireAllRules()); ksession.dispose(); }
@Test public void testInlineCastOnlyBinding() throws Exception { String str = "import org.drools.compiler.*;\n" + "rule R1 when\n" + " Person( name == \"mark\", $country : address#LongAddress.country )\n" + "then\n" + "end\n"; KieBase kbase = loadKnowledgeBaseFromString(str); KieSession ksession = kbase.newKieSession(); Person mark1 = new Person("mark"); mark1.setAddress(new LongAddress("uk")); ksession.insert(mark1); Person mark2 = new Person("mark"); ksession.insert(mark2); Person mark3 = new Person("mark"); mark3.setAddress(new Address()); ksession.insert(mark3); assertEquals(1, ksession.fireAllRules()); ksession.dispose(); }
@Test public void testNestedAccessorWithInlineCast() throws Exception { final String str = "import org.drools.compiler.*;\n" + "rule R1 when\n" + " Person( name == \"mark\", address#LongAddress.(country == \"uk\", suburb == \"suburb\") )\n" + "then\n" + "end\n"; final KieBase kbase = loadKnowledgeBaseFromString(str); final KieSession ksession = kbase.newKieSession(); final Person mark1 = new Person("mark"); mark1.setAddress(new LongAddress("street", "suburb", "zipCode", "uk")); ksession.insert(mark1); final Person mark2 = new Person("mark"); ksession.insert(mark2); final Person mark3 = new Person("mark"); mark3.setAddress(new Address("street", "suburb", "zipCode")); ksession.insert(mark3); assertEquals(1, ksession.fireAllRules()); ksession.dispose(); }
@Test public void testInlineTypeCast() throws Exception { // DROOLS-136 String str = "import org.drools.compiler.*;\n" + "rule R1 when\n" + " Person( name == \"mark\", address#LongAddress )\n" + "then\n" + "end\n"; KieBase kbase = loadKnowledgeBaseFromString(str); KieSession ksession = kbase.newKieSession(); Person mark1 = new Person("mark"); mark1.setAddress(new LongAddress("uk")); ksession.insert(mark1); Person mark2 = new Person("mark"); ksession.insert(mark2); Person mark3 = new Person("mark"); mark3.setAddress(new Address()); ksession.insert(mark3); assertEquals(1, ksession.fireAllRules()); ksession.dispose(); }
@Test public void testInlineCastWithNestedAcccesAndNullSafeDereferencing() throws Exception { String str = "import org.drools.compiler.*;\n" + "rule R1 when\n" + " Person( name == \"mark\", address#LongAddress.country!.length == 2 )\n" + "then\n" + "end\n"; KieBase kbase = loadKnowledgeBaseFromString(str); KieSession ksession = kbase.newKieSession(); Person mark1 = new Person("mark"); mark1.setAddress(new LongAddress("uk")); ksession.insert(mark1); Person mark2 = new Person("mark"); ksession.insert(mark2); Person mark3 = new Person("mark"); mark3.setAddress(new LongAddress( null ) ); ksession.insert(mark3); assertEquals(1, ksession.fireAllRules()); ksession.dispose(); }
@Test public void testNullSafeNullComparisonReverse() { // DROOLS-82 String str = "import org.drools.compiler.*;\n" + "rule R1 when\n" + " Person( \"Main Street\".equalsIgnoreCase(address!.street) )\n" + "then\n" + "end"; KieBase kbase = loadKnowledgeBaseFromString(str); KieSession ksession = kbase.newKieSession(); ksession.insert(new Person("Mario", 38)); Person mark = new Person("Mark", 37); mark.setAddress(new Address("Main Street")); ksession.insert(mark); Person edson = new Person("Edson", 34); edson.setAddress(new Address(null)); ksession.insert(edson); assertEquals(1, ksession.fireAllRules()); ksession.dispose(); }
@Test public void testNullSafeNullComparisonReverseComplex() { // DROOLS-82 String str = "import org.drools.compiler.*;\n" + "rule R1 when\n" + " Person( \"Main\".equalsIgnoreCase(address!.street!.substring(0, address!.street!.indexOf(' '))) )\n" + "then\n" + "end"; KieBase kbase = loadKnowledgeBaseFromString(str); KieSession ksession = kbase.newKieSession(); ksession.insert(new Person("Mario", 38)); Person mark = new Person("Mark", 37); mark.setAddress(new Address("Main Street")); ksession.insert(mark); Person edson = new Person("Edson", 34); edson.setAddress(new Address(null)); ksession.insert(edson); assertEquals(1, ksession.fireAllRules()); ksession.dispose(); }
@Test public void testInlineCastWithNestedAcccesAndNullSafeDereferencing2() throws Exception { String str = "import org.drools.compiler.*;\n" + "rule R1 when\n" + " Person( " + " name == \"mark\", " + " name == \"john\" || address#LongAddress.country!.length == 2 )\n" + "then\n" + "end\n"; KieBase kbase = loadKnowledgeBaseFromString(str); KieSession ksession = kbase.newKieSession(); Person mark1 = new Person("mark"); mark1.setAddress(new LongAddress("uk")); ksession.insert(mark1); Person mark2 = new Person("mark"); ksession.insert(mark2); Person mark3 = new Person("mark"); mark3.setAddress(new LongAddress( null ) ); ksession.insert(mark3); assertEquals(1, ksession.fireAllRules()); ksession.dispose(); }
@Test public void testNullSafeNullComparison2() { String str = "import org.drools.compiler.*;\n" + "rule R1 when\n" + " $street : String()\n"+ " Person( address!.street == $street ) \n" + "then\n" + "end"; KieBase kbase = loadKnowledgeBaseFromString(str); KieSession ksession = kbase.newKieSession(); ksession.insert(new Person("Mario", 38)); ksession.insert("Main Street"); Person mark = new Person("Mark", 37); mark.setAddress(new Address("Main Street")); ksession.insert(mark); Person edson = new Person("Edson", 34); edson.setAddress(new Address(null)); ksession.insert(edson); assertEquals(1, ksession.fireAllRules()); ksession.dispose(); }
@Test public void testNullSafeNestedAccessors() { String str = "package org.drools.test; " + "import " + Person.class.getName() + "; " + "global java.util.List list; " + "rule R1 when " + " $street : String() "+ " Person( address!.( street == $street, $zip : zipCode ) ) " + "then " + " list.add( $zip ); " + "end"; KieBase kbase = loadKnowledgeBaseFromString( str ); KieSession ksession = kbase.newKieSession(); List list = new ArrayList(); ksession.setGlobal( "list", list ); ksession.insert(new Person("Mario", 38)); Person mark = new Person("Mark", 37); mark.setAddress(new Address("Main Street", "", "123456")); ksession.insert(mark); ksession.insert("Main Street"); assertEquals( 1, ksession.fireAllRules() ); ksession.dispose(); assertEquals( Arrays.asList( "123456" ), list ); }