[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