package org.jnario.jnario.tests.unit.report;
import com.google.common.base.Objects;
import com.google.inject.Inject;
import org.eclipse.xtext.xbase.lib.Extension;
import org.jnario.Executable;
import org.jnario.feature.feature.Background;
import org.jnario.feature.feature.Feature;
import org.jnario.feature.feature.Scenario;
import org.jnario.feature.feature.Step;
import org.jnario.jnario.test.util.ModelStore;
import org.jnario.jnario.test.util.SpecTestCreator;
import org.jnario.jnario.test.util.Specs;
import org.jnario.jnario.tests.unit.report.HashBasedSpec2ResultMappingBackgroundSpec;
import org.jnario.jnario.tests.unit.report.HashBasedSpec2ResultMappingExampleGroupSpec;
import org.jnario.jnario.tests.unit.report.HashBasedSpec2ResultMappingExampleSpec;
import org.jnario.jnario.tests.unit.report.HashBasedSpec2ResultMappingFeatureSpec;
import org.jnario.jnario.tests.unit.report.HashBasedSpec2ResultMappingScenarioSpec;
import org.jnario.jnario.tests.unit.report.HashBasedSpec2ResultMappingStepSpec;
import org.jnario.jnario.tests.unit.report.HashBasedSpec2ResultMappingSuiteSpec;
import org.jnario.lib.Assert;
import org.jnario.lib.Should;
import org.jnario.report.Failed;
import org.jnario.report.HashBasedSpec2ResultMapping;
import org.jnario.report.NotRun;
import org.jnario.report.Passed;
import org.jnario.report.SpecExecution;
import org.jnario.report.SpecFailure;
import org.jnario.runner.Contains;
import org.jnario.runner.CreateWith;
import org.jnario.runner.ExampleGroupRunner;
import org.jnario.runner.Named;
import org.jnario.runner.Order;
import org.jnario.runner.Subject;
import org.jnario.spec.spec.Example;
import org.junit.Test;
import org.junit.runner.RunWith;
@Contains({ HashBasedSpec2ResultMappingExampleSpec.class, HashBasedSpec2ResultMappingExampleGroupSpec.class, HashBasedSpec2ResultMappingStepSpec.class, HashBasedSpec2ResultMappingScenarioSpec.class, HashBasedSpec2ResultMappingFeatureSpec.class, HashBasedSpec2ResultMappingBackgroundSpec.class, HashBasedSpec2ResultMappingSuiteSpec.class })
@CreateWith(SpecTestCreator.class)
@Named("HashBasedSpec2ResultMapping")
@RunWith(ExampleGroupRunner.class)
@SuppressWarnings("all")
public class HashBasedSpec2ResultMappingSpec {
@Subject
public HashBasedSpec2ResultMapping subject;
final static String SCENARIO_CLASSNAME = "test.MyFeatureFeatureMyScenario";
final static String OTHER_SCENARIO_CLASSNAME = "test.MyFeatureFeatureMyOtherScenario";
@Inject
@Extension
@org.jnario.runner.Extension
public ModelStore m;
final static double anyExecutionTime = 0.0;
final Example anyExecutable = Specs.example("");
final SpecFailure anyFailure = new SpecFailure("", "", "");
@Test
@Named("returns empty execution if no matching spec exists")
@Order(1)
public void _returnsEmptyExecutionIfNoMatchingSpecExists() throws Exception {
SpecExecution _result = this.subject.getResult(this.anyExecutable);
Assert.assertTrue("\nExpected subject.getResult(anyExecutable) => typeof(NotRun) but"
+ "\n subject.getResult(anyExecutable) is " + new org.hamcrest.StringDescription().appendValue(_result).toString()
+ "\n subject is " + new org.hamcrest.StringDescription().appendValue(this.subject).toString()
+ "\n anyExecutable is " + new org.hamcrest.StringDescription().appendValue(this.anyExecutable).toString() + "\n", Should.operator_doubleArrow(_result, NotRun.class));
}
@Test
@Named("returns empty execution if executable is null")
@Order(2)
public void _returnsEmptyExecutionIfExecutableIsNull() throws Exception {
SpecExecution _result = this.subject.getResult(null);
Assert.assertTrue("\nExpected subject.getResult(null) => typeof(NotRun) but"
+ "\n subject.getResult(null) is " + new org.hamcrest.StringDescription().appendValue(_result).toString()
+ "\n subject is " + new org.hamcrest.StringDescription().appendValue(this.subject).toString() + "\n", Should.operator_doubleArrow(_result, NotRun.class));
}
public boolean should_match(final Executable example, final SpecExecution execution) {
SpecExecution _result = this.subject.getResult(example);
return Objects.equal(_result, execution);
}
public Example example() {
return this.m.<Example>first(Example.class);
}
public Step step() {
return this.m.<Step>first(Step.class);
}
public Feature feature() {
return this.m.<Feature>first(Feature.class);
}
public Background background() {
return this.m.<Background>first(Background.class);
}
public Scenario scenario() {
return this.m.<Scenario>first(Scenario.class);
}
public SpecExecution result(final Executable executable) {
return this.subject.getResult(executable);
}
public void passedStep(final String name) {
this.passedStep(HashBasedSpec2ResultMappingSpec.SCENARIO_CLASSNAME, name);
}
public void passedStep(final String className, final String name) {
Passed _passingSpec = Passed.passingSpec(className, name, 0.0);
this.subject.accept(_passingSpec);
}
public void failedStep(final String name) {
this.failedStep(HashBasedSpec2ResultMappingSpec.SCENARIO_CLASSNAME, name);
}
public void failedStep(final String className, final String name) {
Failed _failingSpec = Failed.failingSpec(className, name, 0.0, this.anyFailure);
this.subject.accept(_failingSpec);
}
}