[jboss-svn-commits] JBL Code SVN: r23534 - in labs/jbossrules/trunk/drools-compiler/src/test: resources/org/drools/testframework and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Oct 21 02:06:17 EDT 2008


Author: michael.neale at jboss.com
Date: 2008-10-21 02:06:17 -0400 (Tue, 21 Oct 2008)
New Revision: 23534

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/testframework/test_rules_infinite_loop.drl
Modified:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/ScenarioRunnerTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/testframework/test_rules2.drl
Log:
tightening tests to detect for infinite loops

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/ScenarioRunnerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/ScenarioRunnerTest.java	2008-10-21 05:50:31 UTC (rev 23533)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/ScenarioRunnerTest.java	2008-10-21 06:06:17 UTC (rev 23534)
@@ -818,7 +818,81 @@
         assertTrue(executionTrace.rulesFired.length > 0);
 
     }
+    
+    
+    public void testIntegrationInfiniteLoop() throws Exception {
 
+        Scenario sc = new Scenario();
+        FactData[] facts = new FactData[]{new FactData( "Cheese",
+                                                        "c1",
+                                                        ls( new FieldData( "type",
+                                                                           "cheddar" ),
+                                                            new FieldData( "price",
+                                                                           "42" ) ),
+                                                        false )
+
+        };
+        sc.globals.add( new FactData( "Person",
+                                      "p",
+                                      new ArrayList(),
+                                      false ) );
+        sc.fixtures.addAll( Arrays.asList( facts ) );
+
+        ExecutionTrace executionTrace = new ExecutionTrace();
+
+        sc.rules.add( "rule1" );
+        sc.rules.add( "rule2" );
+        sc.inclusive = true;
+        sc.fixtures.add( executionTrace );
+
+        Expectation[] assertions = new Expectation[5];
+
+        assertions[0] = new VerifyFact( "c1",
+                                        ls( new VerifyField( "type",
+                                                             "cheddar",
+                                                             "==" )
+
+                                        ) );
+
+        assertions[1] = new VerifyFact( "p",
+                                        ls( new VerifyField( "name",
+                                                             "rule1",
+                                                             "==" ),
+                                            new VerifyField( "status",
+                                                             "rule2",
+                                                             "==" ) )
+
+        );
+
+        assertions[2] = new VerifyRuleFired( "rule1",
+                                             1,
+                                             null );
+        assertions[3] = new VerifyRuleFired( "rule2",
+                                             1,
+                                             null );
+        assertions[4] = new VerifyRuleFired( "rule3",
+                                             0,
+                                             null );
+
+        sc.fixtures.addAll( Arrays.asList( assertions ) );
+
+        TypeResolver resolver = new ClassTypeResolver( new HashSet<String>(),
+                                                       Thread.currentThread().getContextClassLoader() );
+        resolver.addImport( "org.drools.Cheese" );
+        resolver.addImport( "org.drools.Person" );
+
+        WorkingMemory wm = getWorkingMemory( "test_rules_infinite_loop.drl" );
+
+        ScenarioRunner run = new ScenarioRunner( sc,
+                                                 resolver,
+                                                 (InternalWorkingMemory) wm );
+
+        assertEquals( sc.maxRuleFirings,
+                      executionTrace.numberOfRulesFired.intValue() );
+        
+
+    }
+
     public void testIntegrationWithDeclaredTypes() throws Exception {
         Scenario sc = new Scenario();
         FactData[] facts = new FactData[]{new FactData( "Coolness",

Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/testframework/test_rules2.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/testframework/test_rules2.drl	2008-10-21 05:50:31 UTC (rev 23533)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/testframework/test_rules2.drl	2008-10-21 06:06:17 UTC (rev 23534)
@@ -26,5 +26,3 @@
 	    p.setAge(42);
 
 end
-
-

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/testframework/test_rules_infinite_loop.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/testframework/test_rules_infinite_loop.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/testframework/test_rules_infinite_loop.drl	2008-10-21 06:06:17 UTC (rev 23534)
@@ -0,0 +1,16 @@
+package foo.bar
+
+import org.drools.Cheese
+import org.drools.Person
+
+global Person p
+
+rule "rule1"
+	when
+		c: Cheese()
+	then
+		insert(new Cheese());
+end
+
+
+


Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/testframework/test_rules_infinite_loop.drl
___________________________________________________________________
Name: svn:eol-style
   + native




More information about the jboss-svn-commits mailing list