// Path: src/main/java/org/pentaho/di/dataset/TestType.java
// public enum TestType {
//   NONE, CONCEPTUAL, DEVELOPMENT, UNIT_TEST;
// }
// 
// Path: src/main/java/org/pentaho/di/dataset/UnitTestResult.java
// public class UnitTestResult {
//   private static final Class<?> PKG = UnitTestResult.class; // For i18n
// 
//   private String transformationName;
//   private String unitTestName;
//   private String dataSetName;
//   private String stepName;
//   private boolean error;
//   private String comment;
// 
//   public UnitTestResult() {
//     super();
//   }
// 
//   public UnitTestResult( String transformationName, String unitTestName, String dataSetName, String stepName, boolean error, String comment ) {
//     super();
//     this.transformationName = transformationName;
//     this.unitTestName = unitTestName;
//     this.dataSetName = dataSetName;
//     this.stepName = stepName;
//     this.error = error;
//     this.comment = comment;
//   }
// 
//   public String getTransformationName() {
//     return transformationName;
//   }
// 
//   public void setTransformationName( String transformationName ) {
//     this.transformationName = transformationName;
//   }
// 
//   public String getUnitTestName() {
//     return unitTestName;
//   }
// 
//   public void setUnitTestName( String unitTestName ) {
//     this.unitTestName = unitTestName;
//   }
// 
//   public String getDataSetName() {
//     return dataSetName;
//   }
// 
//   public void setDataSetName( String dataSetName ) {
//     this.dataSetName = dataSetName;
//   }
// 
//   public String getStepName() {
//     return stepName;
//   }
// 
//   public void setStepName( String stepName ) {
//     this.stepName = stepName;
//   }
// 
//   public boolean isError() {
//     return error;
//   }
// 
//   public void setError( boolean error ) {
//     this.error = error;
//   }
// 
//   public String getComment() {
//     return comment;
//   }
// 
//   public void setComment( String comment ) {
//     this.comment = comment;
//   }
// 
//   public static final RowMetaInterface getRowMeta() {
//     RowMetaInterface rowMeta = new RowMeta();
// 
//     rowMeta.addValueMeta( new ValueMetaString( BaseMessages.getString( PKG, "UnitTestResult.FieldName.TransformationName" ) ) );
//     rowMeta.addValueMeta( new ValueMetaString( BaseMessages.getString( PKG, "UnitTestResult.FieldName.UnitTestName" ) ) );
//     rowMeta.addValueMeta( new ValueMetaString( BaseMessages.getString( PKG, "UnitTestResult.FieldName.DataSetName" ) ) );
//     rowMeta.addValueMeta( new ValueMetaString( BaseMessages.getString( PKG, "UnitTestResult.FieldName.StepName" ) ) );
//     rowMeta.addValueMeta( new ValueMetaBoolean( BaseMessages.getString( PKG, "UnitTestResult.FieldName.Error" ) ) );
//     rowMeta.addValueMeta( new ValueMetaString( BaseMessages.getString( PKG, "UnitTestResult.FieldName.Comment" ) ) );
// 
//     return rowMeta;
//   }
// 
//   public static final List<Object[]> getRowData( List<UnitTestResult> results ) {
//     List<Object[]> rows = new ArrayList<Object[]>();
//     RowMetaInterface rowMeta = getRowMeta();
//     for ( UnitTestResult result : results ) {
//       int index = 0;
//       Object[] row = RowDataUtil.allocateRowData( rowMeta.size() );
//       row[ index++ ] = result.getTransformationName();
//       row[ index++ ] = result.getUnitTestName();
//       row[ index++ ] = result.getDataSetName();
//       row[ index++ ] = result.getStepName();
//       row[ index++ ] = result.isError();
//       row[ index++ ] = result.getComment();
//       rows.add( row );
//     }
//     return rows;
//   }
// 
// }


import org.pentaho.di.core.annotations.Step;
import org.pentaho.di.core.database.DatabaseMeta;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.exception.KettleStepException;
import org.pentaho.di.core.exception.KettleXMLException;
import org.pentaho.di.core.row.RowMetaInterface;
import org.pentaho.di.core.variables.VariableSpace;
import org.pentaho.di.core.xml.XMLHandler;
import org.pentaho.di.dataset.TestType;
import org.pentaho.di.dataset.UnitTestResult;
import org.pentaho.di.repository.ObjectId;
import org.pentaho.di.repository.Repository;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;
import org.pentaho.di.trans.step.BaseStepMeta;
import org.pentaho.di.trans.step.StepDataInterface;
import org.pentaho.di.trans.step.StepInterface;
import org.pentaho.di.trans.step.StepMeta;
import org.pentaho.di.trans.step.StepMetaInterface;
import org.pentaho.metastore.api.IMetaStore;
import org.w3c.dom.Node;
import java.util.List;
  image = "ui/images/TRNEx.svg",
  categoryDescription = "Flow"
)
public class ExecuteTestsMeta extends BaseStepMeta implements StepMetaInterface {

  public static final String TAG_TEST_NAME_INPUT_FIELD = "test_name_input_field";
  public static final String TAG_TYPE_TO_EXECUTE = "type_to_execute";
  public static final String TAG_TRANSFORMATION_NAME_FIELD = "trans_name_field";
  public static final String TAG_UNIT_TEST_NAME_FIELD = "unit_test_name_field";
  public static final String TAG_DATASET_NAME_FIELD = "data_set_name_field";
  public static final String TAG_STEP_NAME_FIELD = "step_name_field";
  public static final String TAG_ERROR_FIELD = "error_field";
  public static final String TAG_COMMENT_FIELD = "comment_field";

  private String testNameInputField;
  private TestType typeToExecute;
  private String transformationNameField;
  private String unitTestNameField;
  private String dataSetNameField;
  private String stepNameField;
  private String errorField;
  private String commentField;

  public ExecuteTestsMeta() {
    super();
  }

  @Override
  public void getFields( RowMetaInterface inputRowMeta, String name, RowMetaInterface[] info, StepMeta nextStep,
                         VariableSpace space, Repository repository, IMetaStore metaStore ) throws KettleStepException {
// Path: src/main/java/org/pentaho/di/dataset/TestType.java
// public enum TestType {
//   NONE, CONCEPTUAL, DEVELOPMENT, UNIT_TEST;
// }
// 
// Path: src/main/java/org/pentaho/di/dataset/UnitTestResult.java
// public class UnitTestResult {
//   private static final Class<?> PKG = UnitTestResult.class; // For i18n
// 
//   private String transformationName;
//   private String unitTestName;
//   private String dataSetName;
//   private String stepName;
//   private boolean error;
//   private String comment;
// 
//   public UnitTestResult() {
//     super();
//   }
// 
//   public UnitTestResult( String transformationName, String unitTestName, String dataSetName, String stepName, boolean error, String comment ) {
//     super();
//     this.transformationName = transformationName;
//     this.unitTestName = unitTestName;
//     this.dataSetName = dataSetName;
//     this.stepName = stepName;
//     this.error = error;
//     this.comment = comment;
//   }
// 
//   public String getTransformationName() {
//     return transformationName;
//   }
// 
//   public void setTransformationName( String transformationName ) {
//     this.transformationName = transformationName;
//   }
// 
//   public String getUnitTestName() {
//     return unitTestName;
//   }
// 
//   public void setUnitTestName( String unitTestName ) {
//     this.unitTestName = unitTestName;
//   }
// 
//   public String getDataSetName() {
//     return dataSetName;
//   }
// 
//   public void setDataSetName( String dataSetName ) {
//     this.dataSetName = dataSetName;
//   }
// 
//   public String getStepName() {
//     return stepName;
//   }
// 
//   public void setStepName( String stepName ) {
//     this.stepName = stepName;
//   }
// 
//   public boolean isError() {
//     return error;
//   }
// 
//   public void setError( boolean error ) {
//     this.error = error;
//   }
// 
//   public String getComment() {
//     return comment;
//   }
// 
//   public void setComment( String comment ) {
//     this.comment = comment;
//   }
// 
//   public static final RowMetaInterface getRowMeta() {
//     RowMetaInterface rowMeta = new RowMeta();
// 
//     rowMeta.addValueMeta( new ValueMetaString( BaseMessages.getString( PKG, "UnitTestResult.FieldName.TransformationName" ) ) );
//     rowMeta.addValueMeta( new ValueMetaString( BaseMessages.getString( PKG, "UnitTestResult.FieldName.UnitTestName" ) ) );
//     rowMeta.addValueMeta( new ValueMetaString( BaseMessages.getString( PKG, "UnitTestResult.FieldName.DataSetName" ) ) );
//     rowMeta.addValueMeta( new ValueMetaString( BaseMessages.getString( PKG, "UnitTestResult.FieldName.StepName" ) ) );
//     rowMeta.addValueMeta( new ValueMetaBoolean( BaseMessages.getString( PKG, "UnitTestResult.FieldName.Error" ) ) );
//     rowMeta.addValueMeta( new ValueMetaString( BaseMessages.getString( PKG, "UnitTestResult.FieldName.Comment" ) ) );
// 
//     return rowMeta;
//   }
// 
//   public static final List<Object[]> getRowData( List<UnitTestResult> results ) {
//     List<Object[]> rows = new ArrayList<Object[]>();
//     RowMetaInterface rowMeta = getRowMeta();
//     for ( UnitTestResult result : results ) {
//       int index = 0;
//       Object[] row = RowDataUtil.allocateRowData( rowMeta.size() );
//       row[ index++ ] = result.getTransformationName();
//       row[ index++ ] = result.getUnitTestName();
//       row[ index++ ] = result.getDataSetName();
//       row[ index++ ] = result.getStepName();
//       row[ index++ ] = result.isError();
//       row[ index++ ] = result.getComment();
//       rows.add( row );
//     }
//     return rows;
//   }
// 
// }


// Path: src/main/java/org/pentaho/di/dataset/steps/exectests/ExecuteTestsMeta.java
import org.pentaho.di.core.annotations.Step;
import org.pentaho.di.core.database.DatabaseMeta;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.exception.KettleStepException;
import org.pentaho.di.core.exception.KettleXMLException;
import org.pentaho.di.core.row.RowMetaInterface;
import org.pentaho.di.core.variables.VariableSpace;
import org.pentaho.di.core.xml.XMLHandler;
import org.pentaho.di.dataset.TestType;
import org.pentaho.di.dataset.UnitTestResult;
import org.pentaho.di.repository.ObjectId;
import org.pentaho.di.repository.Repository;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;
import org.pentaho.di.trans.step.BaseStepMeta;
import org.pentaho.di.trans.step.StepDataInterface;
import org.pentaho.di.trans.step.StepInterface;
import org.pentaho.di.trans.step.StepMeta;
import org.pentaho.di.trans.step.StepMetaInterface;
import org.pentaho.metastore.api.IMetaStore;
import org.w3c.dom.Node;
import java.util.List;

  image = "ui/images/TRNEx.svg",
  categoryDescription = "Flow"
)
public class ExecuteTestsMeta extends BaseStepMeta implements StepMetaInterface {

  public static final String TAG_TEST_NAME_INPUT_FIELD = "test_name_input_field";
  public static final String TAG_TYPE_TO_EXECUTE = "type_to_execute";
  public static final String TAG_TRANSFORMATION_NAME_FIELD = "trans_name_field";
  public static final String TAG_UNIT_TEST_NAME_FIELD = "unit_test_name_field";
  public static final String TAG_DATASET_NAME_FIELD = "data_set_name_field";
  public static final String TAG_STEP_NAME_FIELD = "step_name_field";
  public static final String TAG_ERROR_FIELD = "error_field";
  public static final String TAG_COMMENT_FIELD = "comment_field";

  private String testNameInputField;
  private TestType typeToExecute;
  private String transformationNameField;
  private String unitTestNameField;
  private String dataSetNameField;
  private String stepNameField;
  private String errorField;
  private String commentField;

  public ExecuteTestsMeta() {
    super();
  }

  @Override
  public void getFields( RowMetaInterface inputRowMeta, String name, RowMetaInterface[] info, StepMeta nextStep,
                         VariableSpace space, Repository repository, IMetaStore metaStore ) throws KettleStepException {
    RowMetaInterface rowMeta = UnitTestResult.getRowMeta();