Details
-
Bug
-
Resolution: Done
-
Major
-
5.2.0.M2
-
None
Description
The rule in the test case crashes during execution with
java.lang.ClassCastException: java.lang.Double cannot be cast to [Ljava.lang.Object;
at org.drools.base.extractors.ArrayElementReader.getValue(ArrayElementReader.java:162)
at org.drools.rule.Declaration.getValue(Declaration.java:219)
This is meant to be part of AccumulateTest.java.
public void execTestAccumulateMinMax() throws Exception {
String drl = "package org.drools.test; " +
"import org.drools.Cheese; " +
"global java.util.List results; " +
"rule minMax " +
"when " +
"$min1: Number( $min2: intValue ) " +
"from accumulate( Cheese( $p: price ), $min3: min($p), $max: max($p) ) " +
"then " +
"results.add($min1); results.add($min2); results.add($min3); results.add($max); " +
"end ";
final Reader reader = new StringReader( drl );
final RuleBase ruleBase = loadRuleBase( reader );
final WorkingMemory wm = ruleBase.newStatefulSession();
final List results = new ArrayList();
wm.setGlobal( "results", results );
final Cheese[] cheese = new Cheese[]
;
final FactHandle[] cheeseHandles = new FactHandle[cheese.length];
for ( int i = 0; i < cheese.length; i++ )
// ---------------- 1st scenario
wm.fireAllRules();
assertEquals( 4, results.size() );
assertEquals( results.get(0), Integer.valueOf( 2 ) );
assertEquals( results.get(1), Integer.valueOf( 2 ) );
assertEquals( results.get(2), Integer.valueOf( 2 ) );
assertEquals( results.get(3), Integer.valueOf( 17 ) );
}