View Javadoc
1   /*
2    * Copyright (C) 2007-2012 Argeo GmbH
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *         http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.argeo.slc.core.test;
17  
18  import org.argeo.slc.SlcException;
19  import org.argeo.slc.core.test.context.ContextUtils;
20  import org.argeo.slc.test.IncompatibleTestDataException;
21  import org.argeo.slc.test.TestData;
22  import org.argeo.slc.test.TestDefinition;
23  import org.argeo.slc.test.TestResult;
24  import org.argeo.slc.test.TestRun;
25  import org.argeo.slc.test.TestStatus;
26  import org.argeo.slc.test.context.ContextAware;
27  
28  /** Understands basic test data and context aware test data. */
29  public class BasicTestDefinition implements TestDefinition {
30  
31  	public void execute(TestRun testRun) {
32  		if (testRun.<TestData> getTestData() instanceof BasicTestData) {
33  			BasicTestData testData = testRun.getTestData();
34  			TestResult result = testRun.getTestResult();
35  
36  			if (result == null)
37  				throw new SlcException("No test result defined.");
38  
39  			try {
40  				if (testData.getExpected().equals(testData.getReached())) {
41  					result.addResultPart(new SimpleResultPart(
42  							TestStatus.PASSED, "Reached and expected equals"));
43  				} else {
44  					result.addResultPart(new SimpleResultPart(
45  							TestStatus.FAILED, "Expected "
46  									+ testData.getExpected() + " but reached "
47  									+ testData.getReached()));
48  				}
49  			} catch (Exception e) {
50  				result.addResultPart(new SimpleResultPart(TestStatus.ERROR,
51  						"Could not compare", e));
52  			}
53  		} else if (testRun.<TestData> getTestData() instanceof ContextAware) {
54  			TestData testData = testRun.getTestData();
55  			ContextUtils.compareReachedExpected((ContextAware) testData,
56  					testRun.getTestResult());
57  		} else {
58  			throw new IncompatibleTestDataException(testRun);
59  		}
60  	}
61  }