[jboss-svn-commits] JBL Code SVN: r8406 - in labs/jbossrules/trunk/drools-compiler/src/test: java/org java/org/acme java/org/acme/insurance java/org/drools/integrationtests resources/org/drools/integrationtests
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Dec 19 10:09:43 EST 2006
Author: michael.neale at jboss.com
Date: 2006-12-19 10:09:37 -0500 (Tue, 19 Dec 2006)
New Revision: 8406
Added:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/acme/
labs/jbossrules/trunk/drools-compiler/src/test/java/org/acme/insurance/
labs/jbossrules/trunk/drools-compiler/src/test/java/org/acme/insurance/Approve.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/acme/insurance/Driver.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/acme/insurance/Policy.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/acme/insurance/Rejection.java
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/insurance_pricing_example.drl
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
Log:
added tests based on insurance pricing examples
Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/acme/insurance/Approve.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/acme/insurance/Approve.java 2006-12-19 14:54:42 UTC (rev 8405)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/acme/insurance/Approve.java 2006-12-19 15:09:37 UTC (rev 8406)
@@ -0,0 +1,24 @@
+package org.acme.insurance;
+
+/**
+ * This is a simple fact class to mark something as approved.
+ * @author Michael Neale
+ *
+ */
+public class Approve {
+
+ private String reason;
+
+ public Approve(String reason) {
+ this.reason = reason;
+ }
+
+ public String getReason() {
+ return reason;
+ }
+
+ public void setReason(String reason) {
+ this.reason = reason;
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/java/org/acme/insurance/Approve.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/acme/insurance/Driver.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/acme/insurance/Driver.java 2006-12-19 14:54:42 UTC (rev 8405)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/acme/insurance/Driver.java 2006-12-19 15:09:37 UTC (rev 8406)
@@ -0,0 +1,41 @@
+package org.acme.insurance;
+
+/**
+ * This represents obviously a driver who is applying for an insurance Policy.
+ * @author Michael Neale
+ *
+ */
+public class Driver {
+
+ private String name = "Mr Joe Blogs";
+ private Integer age = new Integer(30);
+ private Integer priorClaims = new Integer(0);
+ private String locationRiskProfile = "LOW";
+
+ public Integer getAge() {
+ return age;
+ }
+ public void setAge(Integer age) {
+ this.age = age;
+ }
+ public String getLocationRiskProfile() {
+ return locationRiskProfile;
+ }
+ public void setLocationRiskProfile(String locationRiskProfile) {
+ this.locationRiskProfile = locationRiskProfile;
+ }
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+ public Integer getPriorClaims() {
+ return priorClaims;
+ }
+ public void setPriorClaims(Integer priorClaims) {
+ this.priorClaims = priorClaims;
+ }
+
+
+}
Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/java/org/acme/insurance/Driver.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/acme/insurance/Policy.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/acme/insurance/Policy.java 2006-12-19 14:54:42 UTC (rev 8405)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/acme/insurance/Policy.java 2006-12-19 15:09:37 UTC (rev 8406)
@@ -0,0 +1,49 @@
+package org.acme.insurance;
+
+/**
+ * This represents a policy that a driver is applying for.
+ *
+ * Obviously in the real world, there are actuaries to mess things up, but lets just pretend there is
+ * some simple base price and discount that we can calculate with relatively simple rules !
+ *
+ * @author Michael Neale
+ */
+public class Policy {
+
+ private String type = "COMPREHENSIVE";
+ private boolean approved = false;
+ private int discountPercent = 0;
+ private int basePrice;
+
+ public boolean isApproved() {
+ return approved;
+ }
+ public void setApproved(boolean approved) {
+ this.approved = approved;
+ }
+ public int getDiscountPercent() {
+ return discountPercent;
+ }
+ public void setDiscountPercent(int discountPercent) {
+ this.discountPercent = discountPercent;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public void applyDiscount(int discount) {
+ discountPercent += discount;
+ }
+ public int getBasePrice() {
+ return basePrice;
+ }
+ public void setBasePrice(int basePrice) {
+ this.basePrice = basePrice;
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/java/org/acme/insurance/Policy.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/acme/insurance/Rejection.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/acme/insurance/Rejection.java 2006-12-19 14:54:42 UTC (rev 8405)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/acme/insurance/Rejection.java 2006-12-19 15:09:37 UTC (rev 8406)
@@ -0,0 +1,23 @@
+package org.acme.insurance;
+
+/**
+ *
+ * @author Michael Neale
+ */
+public class Rejection {
+
+ private String reason;
+
+ public Rejection(String reason) {
+ this.reason = reason;
+ }
+
+ public String getReason() {
+ return reason;
+ }
+
+ public void setReason(String reason) {
+ this.reason = reason;
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/java/org/acme/insurance/Rejection.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java 2006-12-19 14:54:42 UTC (rev 8405)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java 2006-12-19 15:09:37 UTC (rev 8406)
@@ -36,6 +36,8 @@
import junit.framework.Assert;
import junit.framework.TestCase;
+import org.acme.insurance.Driver;
+import org.acme.insurance.Policy;
import org.drools.AssertedObject;
import org.drools.Cell;
import org.drools.Cheese;
@@ -3099,6 +3101,26 @@
assertEquals( 1,
list.size() );
}
+
+ public void testInsurancePricingExample() throws Exception {
+ final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "insurance_pricing_example.drl" ) );
+ final RuleBase ruleBase = loadRuleBase( reader );
+ final WorkingMemory wm = ruleBase.newWorkingMemory();
+
+ //now create some test data
+ Driver driver = new Driver();
+ Policy policy = new Policy();
+
+ wm.assertObject(driver);
+ wm.assertObject(policy);
+
+ wm.fireAllRules();
+
+ System.out.println("BASE PRICE IS: " + policy.getBasePrice());
+ System.out.println("DISCOUNT IS: " + policy.getDiscountPercent());
+
+ assertEquals(120, policy.getBasePrice());
+ }
public void testLLR() throws Exception {
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/insurance_pricing_example.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/insurance_pricing_example.drl 2006-12-19 14:54:42 UTC (rev 8405)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/insurance_pricing_example.drl 2006-12-19 15:09:37 UTC (rev 8406)
@@ -0,0 +1,177 @@
+package org.acme.insurance;
+#generated from Decision Table
+#From row number: 10
+rule "Pricing bracket_10"
+
+ when
+ Driver(age >= 18, age <= 24, locationRiskProfile == "LOW", priorClaims == "1")
+ policy: Policy(type == "COMPREHENSIVE")
+ then
+ policy.setBasePrice(450);
+end
+
+#From row number: 11
+rule "Pricing bracket_11"
+
+ when
+ Driver(age >= 18, age <= 24, locationRiskProfile == "MED")
+ policy: Policy(type == "FIRE_THEFT")
+ then
+ policy.setBasePrice(200);
+ System.out.println("Priors not relevant");
+end
+
+#From row number: 12
+rule "Pricing bracket_12"
+
+ when
+ Driver(age >= 18, age <= 24, locationRiskProfile == "MED", priorClaims == "0")
+ policy: Policy(type == "COMPREHENSIVE")
+ then
+ policy.setBasePrice(300);
+end
+
+#From row number: 13
+rule "Pricing bracket_13"
+
+ when
+ Driver(age >= 18, age <= 24, locationRiskProfile == "LOW")
+ policy: Policy(type == "FIRE_THEFT")
+ then
+ policy.setBasePrice(150);
+end
+
+#From row number: 14
+rule "Pricing bracket_14"
+
+ when
+ Driver(age >= 18, age <= 24, locationRiskProfile == "LOW", priorClaims == "0")
+ policy: Policy(type == "COMPREHENSIVE")
+ then
+ policy.setBasePrice(150);
+ System.out.println("Safe driver discount");
+end
+
+#From row number: 15
+rule "Pricing bracket_15"
+
+ when
+ Driver(age >= 18, age <= 24, locationRiskProfile == "MED", priorClaims == "1")
+ policy: Policy(type == "COMPREHENSIVE")
+ then
+ policy.setBasePrice(700);
+end
+
+#From row number: 16
+rule "Pricing bracket_16"
+
+ when
+ Driver(age >= 18, age <= 24, locationRiskProfile == "HIGH", priorClaims == "0")
+ policy: Policy(type == "COMPREHENSIVE")
+ then
+ policy.setBasePrice(700);
+ System.out.println("Location risk");
+end
+
+#From row number: 17
+rule "Pricing bracket_17"
+
+ when
+ Driver(age >= 18, age <= 24, locationRiskProfile == "HIGH")
+ policy: Policy(type == "FIRE_THEFT")
+ then
+ policy.setBasePrice(550);
+ System.out.println("Location risk");
+end
+
+#From row number: 18
+rule "Pricing bracket_18"
+
+ when
+ Driver(age >= 25, age <= 30, priorClaims == "0")
+ policy: Policy(type == "COMPREHENSIVE")
+ then
+ policy.setBasePrice(120);
+ System.out.println("Cheapest possible");
+end
+
+#From row number: 19
+rule "Pricing bracket_19"
+
+ when
+ Driver(age >= 25, age <= 30, priorClaims == "1")
+ policy: Policy(type == "COMPREHENSIVE")
+ then
+ policy.setBasePrice(300);
+end
+
+#From row number: 20
+rule "Pricing bracket_20"
+
+ when
+ Driver(age >= 25, age <= 30, priorClaims == "2")
+ policy: Policy(type == "COMPREHENSIVE")
+ then
+ policy.setBasePrice(590);
+end
+
+#From row number: 21
+rule "Pricing bracket_21"
+
+ when
+ Driver(age >= 25, age <= 35, priorClaims == "3")
+ policy: Policy(type == "THIRD_PARTY")
+ then
+ policy.setBasePrice(800);
+ System.out.println("High risk");
+end
+
+#From row number: 30
+rule "Discounts_30"
+
+ when
+ Driver(age >= 18, age <= 24, priorClaims == "0")
+ policy: Policy(type == "COMPREHENSIVE")
+ then
+ policy.applyDiscount(1);
+end
+
+#From row number: 31
+rule "Discounts_31"
+
+ when
+ Driver(age >= 18, age <= 24, priorClaims == "0")
+ policy: Policy(type == "FIRE_THEFT")
+ then
+ policy.applyDiscount(2);
+end
+
+#From row number: 32
+rule "Discounts_32"
+
+ when
+ Driver(age >= 25, age <= 30, priorClaims == "1")
+ policy: Policy(type == "COMPREHENSIVE")
+ then
+ policy.applyDiscount(5);
+end
+
+#From row number: 33
+rule "Discounts_33"
+
+ when
+ Driver(age >= 25, age <= 30, priorClaims == "2")
+ policy: Policy(type == "COMPREHENSIVE")
+ then
+ policy.applyDiscount(1);
+end
+
+#From row number: 34
+rule "Discounts_34"
+
+ when
+ Driver(age >= 25, age <= 30, priorClaims == "0")
+ policy: Policy(type == "COMPREHENSIVE")
+ then
+ policy.applyDiscount(20);
+end
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/insurance_pricing_example.drl
___________________________________________________________________
Name: svn:eol-style
+ native
More information about the jboss-svn-commits
mailing list