/** * 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.dsl; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * A class to store the results of the execution of a NodeTestCase * * @author etirelli */ public class NodeTestCaseResult { public static enum Result { NOT_EXECUTED, SUCCESS, FAILURE, ERROR; } private NodeTestCase testCase; private List<NodeTestResult> results; private int totalTests = 0; private int executed = 0; private int successes = 0; private int failures = 0; private int errors = 0; public NodeTestCaseResult(NodeTestCase testCase) { super(); this.testCase = testCase; this.totalTests = testCase.getTests().size(); this.results = new ArrayList<NodeTestResult>(this.totalTests); } public void add(NodeTestResult testResult) { executed++; switch( testResult.result ) { case SUCCESS : successes++; break; case FAILURE : failures++; break; case ERROR : errors++; break; } results.add( testResult ); } public NodeTestCase getTestCase() { return testCase; } public List<NodeTestResult> getResults() { return results; } public int getTotalTests() { return totalTests; } public int getExecuted() { return executed; } public int getSuccesses() { return successes; } public int getFailures() { return failures; } public int getErrors() { return errors; } public String toString() { String toString = "TestCase: '"+testCase.getName()+"' total="+totalTests+" executed="+executed+" successes="+successes+" failures="+failures+" errors="+errors; if( totalTests - successes > 0 ) { for( NodeTestResult result : this.results ) { if( result.result != Result.SUCCESS ) { toString+="\n "+result; } } } return toString; } public static class NodeTestResult { public NodeTestDef test; public Result result; public Map<String, Object> context; public List<String> errorMsgs; public NodeTestResult(NodeTestDef test, Result result, Map<String, Object> context, List<String> errorMsgs) { super(); this.test = test; this.result = result; this.context = context; this.errorMsgs = errorMsgs; } public String getMessages() { return "["+result+"] Test '"+test.getName()+"' returned messages: "+errorMsgs.toString(); } public String toString() { return getMessages(); } } }