@Override public ITestUnit build(TestDescription test, Object res, Throwable error, long executionTime) { return new BaseTestUnit(test, res, error, executionTime); } }
private boolean isEqual(Object expectedResult, Object actualResult) { boolean success = true; for (IOpenField field : test.getFields()) { Object actualFieldValue = getFieldValueOrNull(actualResult, field); Object expectedFieldValue = getFieldValueOrNull(expectedResult, field); success &= isFieldEqual(field, expectedFieldValue, actualFieldValue); } return success; }
/** * Return the comparison of the expected result and actual. * */ private TestStatus compareResult(String expectedError, Object expectedResult, Object actualResult) { if (actualError != null) { Throwable rootCause = ExceptionUtils.getRootCause(actualError); if (rootCause instanceof OpenLUserRuntimeException) { String actualMessage = rootCause.getMessage(); return actualMessage.equals(expectedError == null ? "" : expectedError) ? TR_OK : TR_NEQ; } else { return TR_EXCEPTION; } } else { if (expectedError != null) { return TR_NEQ; } else { return isEqual(expectedResult, actualResult) ? TR_OK : TR_NEQ; } } }
BaseTestUnit(TestDescription test, Object res, Throwable error, long executionTime) { this.test = test; this.executionTime = executionTime; Object expectedResult = test.getExpectedResult(); String expectedError = test.getExpectedError(); if (expectedError != null && expectedResult != null) { // Force testcase failure this.actualError = new IllegalArgumentException( "Ambiguous expectation in the test case. Two expected result has been declared."); } else { this.actualError = error; } this.resultStatus = compareResult(expectedError, expectedResult, res); }
private boolean isFieldEqual(IOpenField field, Object expectedFieldValue, Object actualFieldValue) { // Get delta for field if setted Double columnDelta = null; if (field instanceof PrecisionFieldChain) { if (((PrecisionFieldChain) field).hasDelta()) { columnDelta = ((PrecisionFieldChain) field).getDelta(); } } Class<?> clazz = field.getType().getInstanceClass(); TestResultComparator comparator = TestResultComparatorFactory.getComparator(clazz, columnDelta); final boolean equal = comparator.isEqual(expectedFieldValue, actualFieldValue); if (writeFailuresOnly() && equal) { return equal; } ComparedResult fieldComparisonResults = new ComparedResult(); fieldComparisonResults.setFieldName(field.getName()); fieldComparisonResults.setActualValue(actualFieldValue); fieldComparisonResults.setExpectedValue(expectedFieldValue); fieldComparisonResults.setStatus(equal ? TestStatus.TR_OK : TestStatus.TR_NEQ); comparisonResults.add(fieldComparisonResults); return equal; }