[jboss-svn-commits] JBL Code SVN: r24769 - labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Jan 18 18:54:18 EST 2009


Author: mark.proctor at jboss.com
Date: 2009-01-18 18:54:16 -0500 (Sun, 18 Jan 2009)
New Revision: 24769

Modified:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MVELTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
Log:
JBRULES-1654 eval() Incorrectly Evaluating BigDecimal to False
-Added unit test to show this isn't broken in 5.0.x

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MVELTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MVELTest.java	2009-01-18 23:35:33 UTC (rev 24768)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MVELTest.java	2009-01-18 23:54:16 UTC (rev 24769)
@@ -4,6 +4,7 @@
 import java.io.InputStreamReader;
 import java.io.Reader;
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
@@ -99,6 +100,43 @@
         assertEquals( 1, list.size() );
         assertEquals( 10, list.get( 0 ) );
     }
+    
+    public void testEvalWithBigDecimal() throws Exception {        
+        String str = "";
+        str += "package org.drools \n";
+        str += "import java.math.BigDecimal; \n";
+        str += "global java.util.List list \n";
+        str += "rule rule1 \n";
+        str += "    dialect \"mvel\" \n";
+        str += "when \n";
+        str += "    $bd : BigDecimal() \n";
+        str += "    eval( $bd.compareTo( BigDecimal.ZERO ) > 0 ) \n";        
+        str += "then \n";
+        str += "    list.add( $bd ); \n";
+        str += "end \n";
+        
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        
+        kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL );
+        
+        if ( kbuilder.hasErrors() ) {
+            System.err.println( kbuilder.getErrors() );
+        }
+        assertFalse( kbuilder.hasErrors() );
+        
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+        
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+        List list = new ArrayList();
+        ksession.setGlobal( "list", list );
+        ksession.insert( new BigDecimal( 1.5 ) );        
+        
+        ksession.fireAllRules();
+        
+        assertEquals( 1, list.size() );
+        assertEquals( new BigDecimal( 1.5 ), list.get( 0 ) );
+    }      
 
     public void testLocalVariableMVELConsequence() throws Exception {
         final PackageBuilder builder = new PackageBuilder();

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2009-01-18 23:35:33 UTC (rev 24768)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2009-01-18 23:54:16 UTC (rev 24769)
@@ -524,7 +524,44 @@
         
         assertEquals( 1, list.size() );
         assertEquals( 10, list.get( 0 ) );
-    }    
+    }   
+    
+    public void testEvalWithBigDecimal() throws Exception {        
+        String str = "";
+        str += "package org.drools \n";
+        str += "import java.math.BigDecimal; \n";
+        str += "global java.util.List list \n";
+        str += "rule rule1 \n";
+        str += "    dialect \"java\" \n";
+        str += "when \n";
+        str += "    $bd : BigDecimal() \n";
+        str += "    eval( $bd.compareTo( BigDecimal.ZERO ) > 0 ) \n";        
+        str += "then \n";
+        str += "    list.add( $bd ); \n";
+        str += "end \n";
+        
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        
+        kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL );
+        
+        if ( kbuilder.hasErrors() ) {
+            System.err.println( kbuilder.getErrors() );
+        }
+        assertFalse( kbuilder.hasErrors() );
+        
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+        
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+        List list = new ArrayList();
+        ksession.setGlobal( "list", list );
+        ksession.insert( new BigDecimal( 1.5 ) );        
+        
+        ksession.fireAllRules();
+        
+        assertEquals( 1, list.size() );
+        assertEquals( new BigDecimal( 1.5 ), list.get( 0 ) );
+    }     
 
     public void testCustomGlobalResolver() throws Exception {
         final PackageBuilder builder = new PackageBuilder();




More information about the jboss-svn-commits mailing list