/**
* Copyright 2010 JBoss Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.drools.reteoo.test;
import java.io.InputStream;
import java.io.SequenceInputStream;
import java.util.Arrays;
import junit.framework.TestCase;
import org.drools.reteoo.test.dsl.NodeTestCase;
import org.drools.reteoo.test.dsl.NodeTestCaseResult;
public class ReteDslTestEngineHelper {
public static void executeDsl(String[] fileNames) {
InputStream[] inputStreams = new InputStream[fileNames.length];
for ( int i = 0; i < fileNames.length; i++ ) {
inputStreams[i] = ReteDslTestEngineHelper.class.getResourceAsStream( fileNames[i] );
TestCase.assertNotNull( fileNames[i], inputStreams[i] );
}
executeDsl( fileNames, inputStreams );
}
public static void executeDsl(String[] fileNames, InputStream[] inputStreams) {
InputStream inputStream = inputStreams[0];
for ( int i = 1; i < inputStreams.length; i++ ) {
TestCase.assertNotNull( inputStreams[i] );
inputStream = new SequenceInputStream( inputStream,
inputStreams[i] );
}
executeDsl( Arrays.toString( fileNames ), inputStream );
}
public static void executeDsl(String fileName) {
executeDsl( fileName, ReteDslTestEngineHelper.class.getResourceAsStream( fileName ) );
}
public static void executeDsl( String fileName, InputStream inputStream) {
TestCase.assertNotNull( inputStream );
try {
NodeTestCase testCase = ReteDslTestEngine.compile( inputStream );
ReteDslTestEngine tester = new ReteDslTestEngine();
NodeTestCaseResult result = tester.run( testCase, null );
if( result.getTotalTests()-result.getSuccesses() > 0 ) {
TestCase.fail("Error executing "+fileName+" : \n "+ result );
}
} catch ( Exception e ) {
e.printStackTrace();
TestCase.fail("Unexpected exception: "+e.getMessage());
}
}
}