package org.jnario.jnario.tests.integration;
import com.google.common.base.Objects;
import com.google.common.collect.Iterators;
import com.google.inject.Inject;
import java.util.Iterator;
import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.xtext.util.StringInputStream;
import org.eclipse.xtext.xbase.lib.Extension;
import org.jnario.Executable;
import org.jnario.jnario.test.util.ModelStore;
import org.jnario.jnario.test.util.SpecTestCreator;
import org.jnario.jnario.tests.integration.ParsingSpecResultsFromJUnitXMLReportsFeature;
import org.jnario.lib.Assert;
import org.jnario.lib.JnarioIterableExtensions;
import org.jnario.lib.JnarioIteratorExtensions;
import org.jnario.lib.Should;
import org.jnario.lib.StepArguments;
import org.jnario.report.Failed;
import org.jnario.report.HashBasedSpec2ResultMapping;
import org.jnario.report.Passed;
import org.jnario.report.SpecExecution;
import org.jnario.report.SpecResultParser;
import org.jnario.runner.CreateWith;
import org.jnario.runner.FeatureRunner;
import org.jnario.runner.Named;
import org.jnario.runner.Order;
import org.jnario.spec.spec.ExampleGroup;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(FeatureRunner.class)
@Named("Scenario: Matching successfull Spec Runs")
@CreateWith(SpecTestCreator.class)
@SuppressWarnings("all")
public class ParsingSpecResultsFromJUnitXMLReportsFeatureMatchingSuccessfullSpecRuns extends ParsingSpecResultsFromJUnitXMLReportsFeature {
@Inject
@Extension
@org.jnario.runner.Extension
public ModelStore _modelStore;
@Inject
HashBasedSpec2ResultMapping spec2ResultMapping;
@Inject
SpecResultParser resultParser;
Executable specification;
@Test
@Order(0)
@Named("Given a specification")
public void _givenASpecification() {
final StepArguments args = new StepArguments("package example\ndescribe \"Adding values\"{\n\tfact \"4 + 3 is 7\"{\n\t\t4 + 3 => 7\n\t}\n}\n");
String _first = JnarioIterableExtensions.<String>first(args);
Resource _parseSpec = this._modelStore.parseSpec(_first);
TreeIterator<EObject> _allContents = _parseSpec.getAllContents();
Iterator<ExampleGroup> _filter = Iterators.<ExampleGroup>filter(_allContents, ExampleGroup.class);
ExampleGroup _first_1 = JnarioIteratorExtensions.<ExampleGroup>first(_filter);
this.specification = _first_1;
}
@Test
@Order(1)
@Named("And a test result xml file")
public void _andATestResultXmlFile() {
final StepArguments args = new StepArguments("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<testsuite failures=\"0\" time=\"0.001\" errors=\"0\" skipped=\"0\" tests=\"1\" name=\"example.AddingValuesSpec\">\n <properties>\n <property name=\"java.runtime.name\" value=\"Java(TM) SE Runtime Environment\"/>\n </properties>\n <testcase time=\"0.001\" classname=\"example.AddingValuesSpec\" name=\"4 + 3 is 7\"/>\n</testsuite>\n");
String _first = JnarioIterableExtensions.<String>first(args);
String _trim = _first.trim();
StringInputStream _stringInputStream = new StringInputStream(_trim);
this.resultParser.parse(_stringInputStream, this.spec2ResultMapping);
}
@Test
@Order(2)
@Named("Then the spec execution \\\"passed\\\"")
public void _thenTheSpecExecutionPassed() {
final StepArguments args = new StepArguments("passed");
final SpecExecution result = this.spec2ResultMapping.getResult(this.specification);
String _first = JnarioIterableExtensions.<String>first(args);
boolean _equals = Objects.equal(_first, "passed");
if (_equals) {
Assert.assertTrue("\nExpected result => typeof(Passed) but"
+ "\n result is " + new org.hamcrest.StringDescription().appendValue(result).toString() + "\n", Should.operator_doubleArrow(result, Passed.class));
} else {
Assert.assertTrue("\nExpected result => typeof(Failed) but"
+ "\n result is " + new org.hamcrest.StringDescription().appendValue(result).toString() + "\n", Should.operator_doubleArrow(result, Failed.class));
}
}
}