@Test
public void basicTest() throws ExecutionException, InterruptedException {

    Application application = new ApplicationImpl(transformedAppFolder);
    Configuration configuration = new ConfigurationImpl(null);
    TransformationTemplate transformationTemplate = getNewTestTransformationTemplate();
    transformationTemplate.add(getNewTestTransformationUtility());
    AbstractTransformationRequest transformation = new TemplateTransformationRequest(application, transformationTemplate, configuration);
    TransformationResult transformationResult = transformationEngine.perform(transformation).get();
    assertNotNull(transformationResult);
    assertTrue(transformationResult.isSuccessful());
    assertEquals(transformationResult.getTransformationRequest().getConfiguration(), configuration);
    assertFalse(transformationResult.hasManualInstructions());
    assertNull(transformationResult.getManualInstructionsFile());
    assertEquals(transformationResult.getTransformedApplicationDir(), transformedAppFolder);
    assertNull(transformationResult.getAbortDetails());
    List<TransformationMetrics> metricsList = transformationResult.getMetrics();
    assertNotNull(metricsList);
    assertEquals(metricsList.size(), 1);
    TransformationMetrics metrics = metricsList.get(0);
    assertNull(metrics.getFromVersion());
    TransformationStatistics statistics = metrics.getStatistics();
    assertEquals(statistics.getManualInstructionsCount(), 0);
    assertEquals(statistics.getOperationsCount(), 0);
    assertEquals(statistics.getPerformResultErrorCount(), 0);
    assertEquals(statistics.getPerformResultExecutionResultCount(), 1);
    assertEquals(statistics.getPerformResultSkippedConditionCount(), 0);
    assertEquals(statistics.getPerformResultSkippedDependencyCount(), 0);
    assertEquals(statistics.getTOExecutionResultErrorCount(), 0);
    assertEquals(statistics.getTOExecutionResultNoOpCount(), 0);
    assertEquals(statistics.getTOExecutionResultSuccessCount(), 0);
    assertEquals(statistics.getTOExecutionResultWarningCount(), 0);
    assertEquals(statistics.getUtilitiesCount(), 1);
    assertEquals(statistics.getTUExecutionResultErrorCount(), 0);
    assertEquals(statistics.getTUExecutionResultNullCount(), 0);
    assertEquals(statistics.getTUExecutionResultValueCount(), 1);
    assertEquals(statistics.getTUExecutionResultWarningCount(), 0);
}