[jboss-svn-commits] JBL Code SVN: r31938 - in labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint: src/main/java/org/drools/factconstraint/predefined and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Mar 4 09:15:57 EST 2010
Author: eaa
Date: 2010-03-04 09:15:56 -0500 (Thu, 04 Mar 2010)
New Revision: 31938
Added:
labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/test/java/org/drools/factconstraint/model/
labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/test/java/org/drools/factconstraint/model/Person.java
Modified:
labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/pom.xml
labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/main/java/org/drools/factconstraint/predefined/NotNullConstraint.java
labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/main/java/org/drools/factconstraint/predefined/RangeConstraint.java
labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/test/java/org/drools/factconstraint/IntegerConstraintTest.java
labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/test/java/org/drools/factconstraint/NotNullConstraintTest.java
labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/test/java/org/drools/factconstraint/RangeConstraintTest.java
Log:
Added project dependency to drools-verifier
Added test cases that use verifier.
Fixed available constraints to generate well-formed verifier's rules
Modified: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/pom.xml
===================================================================
--- labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/pom.xml 2010-03-04 14:06:56 UTC (rev 31937)
+++ labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/pom.xml 2010-03-04 14:15:56 UTC (rev 31938)
@@ -17,5 +17,11 @@
<version>4.7</version>
<scope>test</scope>
</dependency>
+
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-verifier</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
Modified: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/main/java/org/drools/factconstraint/predefined/NotNullConstraint.java
===================================================================
--- labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/main/java/org/drools/factconstraint/predefined/NotNullConstraint.java 2010-03-04 14:06:56 UTC (rev 31937)
+++ labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/main/java/org/drools/factconstraint/predefined/NotNullConstraint.java 2010-03-04 14:15:56 UTC (rev 31938)
@@ -18,7 +18,7 @@
@Override
public String getVerifierRule() {
List<String> constraints = new ArrayList<String>();
- constraints.add("value == null");
+ constraints.add("valueType == Field.UNKNOWN");
return this.createVerifierRuleTemplate("Not_null_Field_Constraint", constraints, "The value could not be null"); //I18N
}
Modified: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/main/java/org/drools/factconstraint/predefined/RangeConstraint.java
===================================================================
--- labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/main/java/org/drools/factconstraint/predefined/RangeConstraint.java 2010-03-04 14:06:56 UTC (rev 31937)
+++ labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/main/java/org/drools/factconstraint/predefined/RangeConstraint.java 2010-03-04 14:15:56 UTC (rev 31938)
@@ -15,8 +15,7 @@
public static final String RANGE_CONSTRAINT_MIN = "Min. value";
public static final String RANGE_CONSTRAINT_MAX = "Max. value";
-
- public RangeConstraint(){
+ public RangeConstraint() {
//set default values
this.setArgumentValue(RANGE_CONSTRAINT_MIN, 0);
this.setArgumentValue(RANGE_CONSTRAINT_MAX, 0);
@@ -28,9 +27,19 @@
try {
double min = Double.parseDouble(this.getMandatoryArgument(RANGE_CONSTRAINT_MIN).toString());
double max = Double.parseDouble(this.getMandatoryArgument(RANGE_CONSTRAINT_MAX).toString());
- List<String> constraints = new ArrayList<String>();
- constraints.add("value < " + min + " || > " + max);
- return this.createVerifierRuleTemplate("Range_Field_Constraint", constraints, "The value must be an integer"); //I18N
+
+ this.verifierRestrictiondPatternTemplate = " ($restriction :LiteralRestriction(\n";
+ this.verifierRestrictiondPatternTemplate += " fieldGuid == $field.guid,\n";
+ this.verifierRestrictiondPatternTemplate += " valueType == Field.INT,\n";
+ this.verifierRestrictiondPatternTemplate += " intValue < " + min + " || > " + max+"\n";
+ this.verifierRestrictiondPatternTemplate += " ) OR\n";
+ this.verifierRestrictiondPatternTemplate += " $restriction :LiteralRestriction(\n";
+ this.verifierRestrictiondPatternTemplate += " fieldGuid == $field.guid,\n";
+ this.verifierRestrictiondPatternTemplate += " valueType == Field.DOUBLE,\n";
+ this.verifierRestrictiondPatternTemplate += " doubleValue < " + min + " || > " + max+"\n";
+ this.verifierRestrictiondPatternTemplate += " ))\n";
+
+ return this.createVerifierRuleTemplate("Range_Field_Constraint", null, "The value must be between " + min + " and " + max); //I18N
} catch (ArgumentNotSetException ex) {
throw new IllegalStateException("Some arguments are missing");
}
@@ -40,24 +49,24 @@
public ValidationResult validate(Object value) {
ValidationResult result = new ValidationResult();
- try{
- if (value == null || !(value instanceof Number || value instanceof String )){
+ try {
+ if (value == null || !(value instanceof Number || value instanceof String)) {
result.setSuccess(false);
if (value == null) {
result.setMessage("The value is null"); //TODO: I18N
- }else{
- result.setMessage("Invalid value type "+value.getClass().getName()); //TODO: I18N
+ } else {
+ result.setMessage("Invalid value type " + value.getClass().getName()); //TODO: I18N
}
- }else{
+ } else {
double min = Double.parseDouble(this.getMandatoryArgument(RANGE_CONSTRAINT_MIN).toString());
double max = Double.parseDouble(this.getMandatoryArgument(RANGE_CONSTRAINT_MAX).toString());
double d = Double.parseDouble(value.toString());
result.setSuccess((d > min && d < max));
- if (!result.isSuccess()){
- result.setMessage("The value should be between "+min+" and "+max); //TODO: I18N
+ if (!result.isSuccess()) {
+ result.setMessage("The value should be between " + min + " and " + max); //TODO: I18N
}
}
- }catch (Throwable t){
+ } catch (Throwable t) {
result.setSuccess(false);
result.setMessage(t.getMessage()); //TODO: I18N
}
Modified: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/test/java/org/drools/factconstraint/IntegerConstraintTest.java
===================================================================
--- labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/test/java/org/drools/factconstraint/IntegerConstraintTest.java 2010-03-04 14:06:56 UTC (rev 31937)
+++ labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/test/java/org/drools/factconstraint/IntegerConstraintTest.java 2010-03-04 14:15:56 UTC (rev 31938)
@@ -1,7 +1,20 @@
package org.drools.factconstraint;
+import java.util.Collection;
+import org.drools.builder.ResourceType;
import org.drools.factconstraint.predefined.IntegerConstraint;
+import org.drools.io.ResourceFactory;
+import org.drools.verifier.Verifier;
+import org.drools.verifier.VerifierConfiguration;
+import org.drools.verifier.VerifierConfigurationImpl;
+import org.drools.verifier.VerifierError;
+import org.drools.verifier.builder.VerifierBuilder;
+import org.drools.verifier.builder.VerifierBuilderFactory;
+import org.drools.verifier.data.VerifierReport;
+import org.drools.verifier.report.components.Severity;
+import org.drools.verifier.report.components.VerifierMessageBase;
import org.junit.Assert;
+import org.junit.Before;
import org.junit.Test;
/**
@@ -10,15 +23,22 @@
*/
public class IntegerConstraintTest {
- @Test
- public void testValidConstraint(){
+ private Constraint cons;
- Constraint cons = new IntegerConstraint();
- cons.setFactType("some.fact.Type");
- cons.setFieldName("someField");
+ @Before
+ public void setup() {
+ cons = new IntegerConstraint();
+ cons.setFactType("Person");
+ cons.setFieldName("age");
- System.out.println("Validation Rule:\n"+cons.getVerifierRule()+"\n\n");
+ System.out.println("Validation Rule:\n" + cons.getVerifierRule() + "\n\n");
+
+ }
+
+ @Test
+ public void testValidConstraint() {
+
ValidationResult result = cons.validate(12);
Assert.assertTrue(result.isSuccess());
@@ -31,41 +51,108 @@
}
@Test
- public void testInvalidConstraint(){
+ public void testInvalidConstraint() {
- Constraint cons = new IntegerConstraint();
- cons.setFactType("some.fact.Type");
- cons.setFieldName("someField");
-
ValidationResult result = cons.validate(new Object());
Assert.assertFalse(result.isSuccess());
- System.out.println("Message: "+result.getMessage());
+ System.out.println("Message: " + result.getMessage());
result = cons.validate("");
Assert.assertFalse(result.isSuccess());
- System.out.println("Message: "+result.getMessage());
+ System.out.println("Message: " + result.getMessage());
result = cons.validate("ABC");
Assert.assertFalse(result.isSuccess());
- System.out.println("Message: "+result.getMessage());
+ System.out.println("Message: " + result.getMessage());
result = cons.validate(null);
Assert.assertFalse(result.isSuccess());
- System.out.println("Message: "+result.getMessage());
+ System.out.println("Message: " + result.getMessage());
result = cons.validate(new Long("12"));
Assert.assertFalse(result.isSuccess());
- System.out.println("Message: "+result.getMessage());
+ System.out.println("Message: " + result.getMessage());
result = cons.validate(12L);
Assert.assertFalse(result.isSuccess());
- System.out.println("Message: "+result.getMessage());
+ System.out.println("Message: " + result.getMessage());
result = cons.validate(12.8);
Assert.assertFalse(result.isSuccess());
- System.out.println("Message: "+result.getMessage());
+ System.out.println("Message: " + result.getMessage());
}
+ @Test
+ public void testUsingVerifier() {
+
+ String ruleToVerify = "";
+
+ //FAIL
+ ruleToVerify += "package org.drools.factconstraint.test\n\n";
+ ruleToVerify += "import org.drools.factconstraint.model.*\n";
+ ruleToVerify += "rule \"rule1\"\n";
+ ruleToVerify += " when\n";
+ ruleToVerify += " Person(age == 'abc')\n";
+ ruleToVerify += " then\n";
+ ruleToVerify += " System.out.println(\"Rule fired\");\n";
+ ruleToVerify += "end\n\n";
+
+ //OK
+ ruleToVerify += "rule \"rule2\"\n";
+ ruleToVerify += " when\n";
+ ruleToVerify += " Person(age == 12)\n";
+ ruleToVerify += " then\n";
+ ruleToVerify += " System.out.println(\"Rule fired\");\n";
+ ruleToVerify += "end\n\n";
+
+ //FAIL
+ ruleToVerify += "rule \"rule3\"\n";
+ ruleToVerify += " when\n";
+ ruleToVerify += " Person(age == '')\n";
+ ruleToVerify += " then\n";
+ ruleToVerify += " System.out.println(\"Rule fired\");\n";
+ ruleToVerify += "end\n";
+
+
+ VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+ //VerifierConfiguration conf = new DefaultVerifierConfiguration();
+ VerifierConfiguration conf = new VerifierConfigurationImpl();
+
+ conf.getVerifyingResources().put(ResourceFactory.newByteArrayResource(cons.getVerifierRule().getBytes()), ResourceType.DRL);
+
+ Verifier verifier = vBuilder.newVerifier(conf);
+
+ verifier.addResourcesToVerify(ResourceFactory.newByteArrayResource(ruleToVerify.getBytes()),
+ ResourceType.DRL);
+
+ if (verifier.hasErrors()) {
+ for (VerifierError error : verifier.getErrors()) {
+ System.out.println(error.getMessage());
+ }
+ throw new RuntimeException("Error building verifier");
+ }
+
+ Assert.assertFalse(verifier.hasErrors());
+
+ boolean noProblems = verifier.fireAnalysis();
+ Assert.assertTrue(noProblems);
+
+ VerifierReport result = verifier.getResult();
+
+ Collection<VerifierMessageBase> warnings = result.getBySeverity(Severity.ERROR);
+
+ int counter = 0;
+ for (VerifierMessageBase message : warnings) {
+ System.out.println(message);
+ counter++;
+ }
+
+ Assert.assertEquals(2,
+ counter);
+
+ verifier.dispose();
+ }
}
Modified: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/test/java/org/drools/factconstraint/NotNullConstraintTest.java
===================================================================
--- labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/test/java/org/drools/factconstraint/NotNullConstraintTest.java 2010-03-04 14:06:56 UTC (rev 31937)
+++ labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/test/java/org/drools/factconstraint/NotNullConstraintTest.java 2010-03-04 14:15:56 UTC (rev 31938)
@@ -1,8 +1,20 @@
package org.drools.factconstraint;
-import org.drools.factconstraint.predefined.IntegerConstraint;
+import java.util.Collection;
+import org.drools.builder.ResourceType;
import org.drools.factconstraint.predefined.NotNullConstraint;
+import org.drools.io.ResourceFactory;
+import org.drools.verifier.Verifier;
+import org.drools.verifier.VerifierConfiguration;
+import org.drools.verifier.VerifierConfigurationImpl;
+import org.drools.verifier.VerifierError;
+import org.drools.verifier.builder.VerifierBuilder;
+import org.drools.verifier.builder.VerifierBuilderFactory;
+import org.drools.verifier.data.VerifierReport;
+import org.drools.verifier.report.components.Severity;
+import org.drools.verifier.report.components.VerifierMessageBase;
import org.junit.Assert;
+import org.junit.Before;
import org.junit.Test;
/**
@@ -11,15 +23,19 @@
*/
public class NotNullConstraintTest {
- @Test
- public void testValidConstraint(){
+ private Constraint cons;
- Constraint cons = new NotNullConstraint();
- cons.setFactType("some.fact.Type");
- cons.setFieldName("someField");
+ @Before
+ public void setup() {
+ cons = new NotNullConstraint();
+ cons.setFactType("Person");
+ cons.setFieldName("name");
+ System.out.println("Validation Rule:\n" + cons.getVerifierRule() + "\n\n");
- System.out.println("Validation Rule:\n"+cons.getVerifierRule()+"\n\n");
+ }
+ @Test
+ public void testValidConstraint(){
ValidationResult result = cons.validate(new Object());
Assert.assertTrue(result.isSuccess());
@@ -46,14 +62,82 @@
@Test
public void testInvalidConstraint(){
- Constraint cons = new IntegerConstraint();
- cons.setFactType("some.fact.Type");
- cons.setFieldName("someField");
-
ValidationResult result = cons.validate(null);
Assert.assertFalse(result.isSuccess());
System.out.println("Message: "+result.getMessage());
}
+ @Test
+ public void testUsingVerifier() {
+
+ String ruleToVerify = "";
+
+ //OK
+ ruleToVerify += "package org.drools.factconstraint.test\n\n";
+ ruleToVerify += "import org.drools.factconstraint.model.*\n";
+ ruleToVerify += "rule \"rule1\"\n";
+ ruleToVerify += " when\n";
+ ruleToVerify += " Person(name == 'John McClane')\n";
+ ruleToVerify += " then\n";
+ ruleToVerify += " System.out.println(\"Rule fired\");\n";
+ ruleToVerify += "end\n\n";
+
+ //FAIL
+ ruleToVerify += "rule \"rule2\"\n";
+ ruleToVerify += " when\n";
+ ruleToVerify += " Person(name == null)\n";
+ ruleToVerify += " then\n";
+ ruleToVerify += " System.out.println(\"Rule fired\");\n";
+ ruleToVerify += "end\n\n";
+
+ //OK
+ ruleToVerify += "rule \"rule3\"\n";
+ ruleToVerify += " when\n";
+ ruleToVerify += " Person(name == '')\n";
+ ruleToVerify += " then\n";
+ ruleToVerify += " System.out.println(\"Rule fired\");\n";
+ ruleToVerify += "end\n";
+
+
+ VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+ //VerifierConfiguration conf = new DefaultVerifierConfiguration();
+ VerifierConfiguration conf = new VerifierConfigurationImpl();
+
+ conf.getVerifyingResources().put(ResourceFactory.newByteArrayResource(cons.getVerifierRule().getBytes()), ResourceType.DRL);
+
+ Verifier verifier = vBuilder.newVerifier(conf);
+
+ verifier.addResourcesToVerify(ResourceFactory.newByteArrayResource(ruleToVerify.getBytes()),
+ ResourceType.DRL);
+
+ if (verifier.hasErrors()) {
+ for (VerifierError error : verifier.getErrors()) {
+ System.out.println(error.getMessage());
+ }
+ throw new RuntimeException("Error building verifier");
+ }
+
+ Assert.assertFalse(verifier.hasErrors());
+
+ boolean noProblems = verifier.fireAnalysis();
+ Assert.assertTrue(noProblems);
+
+ VerifierReport result = verifier.getResult();
+
+ Collection<VerifierMessageBase> warnings = result.getBySeverity(Severity.ERROR);
+
+ int counter = 0;
+ for (VerifierMessageBase message : warnings) {
+ System.out.println(message);
+ counter++;
+ }
+
+ Assert.assertEquals(1,
+ counter);
+
+ verifier.dispose();
+ }
+
}
Modified: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/test/java/org/drools/factconstraint/RangeConstraintTest.java
===================================================================
--- labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/test/java/org/drools/factconstraint/RangeConstraintTest.java 2010-03-04 14:06:56 UTC (rev 31937)
+++ labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/test/java/org/drools/factconstraint/RangeConstraintTest.java 2010-03-04 14:15:56 UTC (rev 31938)
@@ -1,7 +1,20 @@
package org.drools.factconstraint;
+import java.util.Collection;
+import org.drools.builder.ResourceType;
import org.drools.factconstraint.predefined.RangeConstraint;
+import org.drools.io.ResourceFactory;
+import org.drools.verifier.Verifier;
+import org.drools.verifier.VerifierConfiguration;
+import org.drools.verifier.VerifierConfigurationImpl;
+import org.drools.verifier.VerifierError;
+import org.drools.verifier.builder.VerifierBuilder;
+import org.drools.verifier.builder.VerifierBuilderFactory;
+import org.drools.verifier.data.VerifierReport;
+import org.drools.verifier.report.components.Severity;
+import org.drools.verifier.report.components.VerifierMessageBase;
import org.junit.Assert;
+import org.junit.Before;
import org.junit.Test;
/**
@@ -10,17 +23,24 @@
*/
public class RangeConstraintTest {
+ private Constraint cons;
+
+ @Before
+ public void setup() {
+ cons = new RangeConstraint();
+ cons.setFactType("Person");
+ cons.setFieldName("age");
+
+ System.out.println("Validation Rule:\n" + cons.getVerifierRule() + "\n\n");
+
+ }
+
@Test
public void testValidConstraint(){
- Constraint cons = new RangeConstraint();
- cons.setFactType("some.fact.Type");
- cons.setFieldName("someField");
cons.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MIN, -0.5);
cons.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MAX, 100);
-
- System.out.println("Validation Rule:\n"+cons.getVerifierRule()+"\n\n");
-
+
ValidationResult result = cons.validate(12);
Assert.assertTrue(result.isSuccess());
@@ -44,10 +64,6 @@
@Test
public void testInvalidConstraint(){
- Constraint cons = new RangeConstraint();
- cons.setFactType("some.fact.Type");
- cons.setFieldName("someField");
-
cons.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MIN, -0.5);
cons.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MAX, 100);
@@ -82,4 +98,165 @@
}
+ @Test
+ public void testUsingVerifier() {
+
+ //age constraint
+ cons.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MIN, 0);
+ cons.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MAX, 120);
+
+ //salary constraint
+ Constraint salaryCons = new RangeConstraint();
+ salaryCons.setFactType("Person");
+ salaryCons.setFieldName("salary");
+ salaryCons.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MIN, 0);
+ salaryCons.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MAX, 1000.6);
+
+ System.out.println("Validation Rule:\n" + cons.getVerifierRule() + "\n\n");
+
+
+ String ruleToVerify = "";
+
+ //OK
+ ruleToVerify += "package org.drools.factconstraint.test\n\n";
+ ruleToVerify += "import org.drools.factconstraint.model.*\n";
+ ruleToVerify += "rule \"rule1\"\n";
+ ruleToVerify += " when\n";
+ ruleToVerify += " Person(age == 10)\n";
+ ruleToVerify += " then\n";
+ ruleToVerify += " System.out.println(\"Rule fired\");\n";
+ ruleToVerify += "end\n\n";
+
+ //FAIL
+ ruleToVerify += "rule \"rule2\"\n";
+ ruleToVerify += " when\n";
+ ruleToVerify += " Person(age == -5)\n";
+ ruleToVerify += " then\n";
+ ruleToVerify += " System.out.println(\"Rule fired\");\n";
+ ruleToVerify += "end\n\n";
+
+ //OK
+ ruleToVerify += "rule \"rule3\"\n";
+ ruleToVerify += " when\n";
+ ruleToVerify += " Person(age == 100)\n";
+ ruleToVerify += " then\n";
+ ruleToVerify += " System.out.println(\"Rule fired\");\n";
+ ruleToVerify += "end\n";
+
+ //OK
+ ruleToVerify += "rule \"rule4\"\n";
+ ruleToVerify += " when\n";
+ ruleToVerify += " Person(salary == 100)\n";
+ ruleToVerify += " then\n";
+ ruleToVerify += " System.out.println(\"Rule fired\");\n";
+ ruleToVerify += "end\n";
+
+ //OK
+ ruleToVerify += "rule \"rule5\"\n";
+ ruleToVerify += " when\n";
+ ruleToVerify += " Person(salary == 89.67)\n";
+ ruleToVerify += " then\n";
+ ruleToVerify += " System.out.println(\"Rule fired\");\n";
+ ruleToVerify += "end\n";
+
+ //FAIL
+ ruleToVerify += "rule \"rule6\"\n";
+ ruleToVerify += " when\n";
+ ruleToVerify += " Person(salary == 1000.7)\n";
+ ruleToVerify += " then\n";
+ ruleToVerify += " System.out.println(\"Rule fired\");\n";
+ ruleToVerify += "end\n";
+
+ //FAIL
+ ruleToVerify += "rule \"rule7\"\n";
+ ruleToVerify += " when\n";
+ ruleToVerify += " Person(salary == 1001)\n";
+ ruleToVerify += " then\n";
+ ruleToVerify += " System.out.println(\"Rule fired\");\n";
+ ruleToVerify += "end\n";
+
+ //OK
+ ruleToVerify += "rule \"rule8\"\n";
+ ruleToVerify += " when\n";
+ ruleToVerify += " Person(age == 40, salary == 1000)\n";
+ ruleToVerify += " then\n";
+ ruleToVerify += " System.out.println(\"Rule fired\");\n";
+ ruleToVerify += "end\n";
+
+ //FAIL: age
+ ruleToVerify += "rule \"rule9\"\n";
+ ruleToVerify += " when\n";
+ ruleToVerify += " Person(age == 400, salary == 1000)\n";
+ ruleToVerify += " then\n";
+ ruleToVerify += " System.out.println(\"Rule fired\");\n";
+ ruleToVerify += "end\n";
+
+ //FAIL salary
+ ruleToVerify += "rule \"rule10\"\n";
+ ruleToVerify += " when\n";
+ ruleToVerify += " Person(age == 40, salary == 1003)\n";
+ ruleToVerify += " then\n";
+ ruleToVerify += " System.out.println(\"Rule fired\");\n";
+ ruleToVerify += "end\n";
+
+ //FAIL both (creates 2 warnings)
+ ruleToVerify += "rule \"rule11\"\n";
+ ruleToVerify += " when\n";
+ ruleToVerify += " Person(age == 400, salary == 1003)\n";
+ ruleToVerify += " then\n";
+ ruleToVerify += " System.out.println(\"Rule fired\");\n";
+ ruleToVerify += "end\n";
+
+ //FAIL both (creates 2 warnings)
+ ruleToVerify += "rule \"rule11\"\n";
+ ruleToVerify += " when\n";
+ ruleToVerify += " Person(age == 400, salary == -0.69)\n";
+ ruleToVerify += " then\n";
+ ruleToVerify += " System.out.println(\"Rule fired\");\n";
+ ruleToVerify += "end\n";
+
+
+
+
+ VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+ //VerifierConfiguration conf = new DefaultVerifierConfiguration();
+ VerifierConfiguration conf = new VerifierConfigurationImpl();
+
+ conf.getVerifyingResources().put(ResourceFactory.newByteArrayResource(cons.getVerifierRule().getBytes()), ResourceType.DRL);
+ conf.getVerifyingResources().put(ResourceFactory.newByteArrayResource(salaryCons.getVerifierRule().getBytes()), ResourceType.DRL);
+
+ Verifier verifier = vBuilder.newVerifier(conf);
+
+ verifier.addResourcesToVerify(ResourceFactory.newByteArrayResource(ruleToVerify.getBytes()),
+ ResourceType.DRL);
+
+ if (verifier.hasErrors()) {
+ for (VerifierError error : verifier.getErrors()) {
+ System.out.println(error.getMessage());
+ }
+ throw new RuntimeException("Error building verifier");
+ }
+
+ Assert.assertFalse(verifier.hasErrors());
+
+ boolean noProblems = verifier.fireAnalysis();
+ Assert.assertTrue(noProblems);
+
+ VerifierReport result = verifier.getResult();
+
+ Collection<VerifierMessageBase> warnings = result.getBySeverity(Severity.ERROR);
+
+ int counter = 0;
+ for (VerifierMessageBase message : warnings) {
+ System.out.println(message);
+ counter++;
+ }
+
+ Assert.assertEquals(9,
+ counter);
+
+ verifier.dispose();
+ }
+
}
Added: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/test/java/org/drools/factconstraint/model/Person.java
===================================================================
--- labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/test/java/org/drools/factconstraint/model/Person.java (rev 0)
+++ labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/test/java/org/drools/factconstraint/model/Person.java 2010-03-04 14:15:56 UTC (rev 31938)
@@ -0,0 +1,45 @@
+package org.drools.factconstraint.model;
+
+/**
+ *
+ * @author esteban.aliverti at gmail.com
+ */
+public class Person {
+ private String name;
+ private int age;
+ private double salary;
+
+ public Person(String name, int age,double salary) {
+ this.name = name;
+ this.age = age;
+ this.salary = salary;
+ }
+
+ public int getAge() {
+ return age;
+ }
+
+ public void setAge(int age) {
+ this.age = age;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public double getSalary() {
+ return salary;
+ }
+
+ public void setSalary(double salary) {
+ this.salary = salary;
+ }
+
+
+
+
+}
More information about the jboss-svn-commits
mailing list