package org.test4j.spec.scenario;
import java.util.List;
import org.test4j.spec.inner.IScenario;
import org.test4j.spec.inner.IScenarioStep;
import org.test4j.tools.datagen.DataProviderIterator;
/**
* 场景文件解析错误时,返回一个错误原因的场景列表
*
* @author darui.wudr 2012-7-12 下午4:57:01
*/
public final class ExceptionJSpecScenario implements IScenario {
private RuntimeException exception;
private ExceptionJSpecScenario(Throwable e) {
this.exception = new RuntimeException("parse scenario error", e);
}
@Override
public void validate() throws Throwable {
throw exception;
}
public static DataProviderIterator<IScenario> iterator(Throwable e) {
DataProviderIterator<IScenario> it = new DataProviderIterator<IScenario>();
it.data(new ExceptionJSpecScenario(e));
return it;
}
@Override
public List<IScenarioStep> getSteps() {
throw exception;
}
@Override
public String getName() {
return exception == null ? ExceptionJSpecScenario.class.getName() : exception.getMessage();
}
int index = 0;
@Override
public int getIndex() {
return index;
}
@Override
public void setIndex(int index) {
this.index = index;
}
@Override
public String toString() {
String msg = exception.getMessage();
return String.format("%02d - %s", index, msg.replaceAll("\\s", " "));
}
}