void CdfExportTest::exportCdf()
{

    string command = "./apt-cdf-export -c ../../../rawq/test/data/Test3.CDF -ps Pae_16SrRNA_s_at -ps AFFX-Athal-Actin_5_r_at > "
                     + testDir + "/export.Test3.txt";

    vector<RegressionCheck *> checks;
    RegressionTest exportTest ("exportCdf", command.c_str(), checks);
    Verbose::out (1, "\nDoing exportCdf()");
    if (!exportTest.run())
    {
        Verbose::out (1, "Error in CdfExportTest::exportCdf(): " + exportTest.getErrorMsg());
        numFailed++;
    }
    else
    {
        TextFileCheck exportCheck (testDir + "/export.Test3.txt",
                                   "data/export.Test3.txt", 0);
        if (exportCheck.check (errorMsg))
        {
            numPassed++;
        }
        else
        {
            Verbose::out (1, "Error in CdfExportTest::exportCdf(): " + errorMsg);
            numFailed++;
        }
    }
}
void MD5CheckTest::testFileNotFound()
{
  string command =  md5app + " -v 2 -i file_does_not_exist";
  vector<RegressionCheck *> checks;
  RegressionTest differencesTest ("testFileNotFound", command.c_str(), checks);
  Verbose::out (1, "\nDoing testFileNotFound()");
  if (differencesTest.run() == false)
    ++numPassed;
  else
  {
    Verbose::out (1, "Error in MD5CheckTest::testFileNotFound(): " + differencesTest.getErrorMsg());
    ++numFailed;
  }
}
void MD5CheckTest::testFailure()
{
  string command = md5app + " -v 2 -i data/translations_md5.rpt";
  vector<RegressionCheck *> checks;
  RegressionTest differencesTest ("testFailure", command.c_str(), checks);
  Verbose::out (1, "\nDoing testFailure()");
  if (differencesTest.run() == false)
    ++numPassed;
  else
  {
    Verbose::out (1, "Error in MD5CheckTest::testFailure(): " + differencesTest.getErrorMsg());
    ++numFailed;
  }
}
// allowable differences only in checked datasets and header parameters
void File5EquivalentTest::testDifferencesPositive()
{
  string command = "./apt-file5-equivalent --epsilon 0.005 --correlation 1.1 --datasets-file ./data/datasets_similar.txt ./data/demean_false_diff1.ref.a5 ./data/demean_false_diff2.ref.a5";
  vector<RegressionCheck *> checks;
  RegressionTest differencesTest ("testDifferencesPositive", command, checks);
  Verbose::out (1, "\nDoing testDifferencesPositive()");
  if (differencesTest.run()) {
    ++numPassed;
  }
  else {
    Verbose::out (1, "Error in File5EquivalentTest::testDifferencesPositive(): " + differencesTest.getErrorMsg());
    ++numFailed;
  }
}
// ignore column with integer differences Cyto2.AntigenomicProbes.ProbeID
void File5EquivalentTest::testIgnoreListPositive()
{
  string command = "./apt-file5-equivalent -e 0.005 -c 1.1 -d ./data/datasets_integer_diff.txt -i ./data/ignore_columns.txt ./data/demean_false_diff1.ref.a5 ./data/demean_false_diff2.ref.a5";
  vector<RegressionCheck *> checks;
  RegressionTest differencesTest ("testIgnoreListPositive", command, checks);
  Verbose::out (1, "\nDoing testIgnoreListPositive()");
  if (differencesTest.run()) {
    ++numPassed;
  }
  else {
    Verbose::out (1, "Error in File5EquivalentTest::testIgnoreListPositive(): " + differencesTest.getErrorMsg());
    ++numFailed;
  }
}
void CelExtractTest::doExtractIntensitiesSubset()
{
  string command = "./apt-cel-extract --probeset-ids=../../../regression-data/data/idata/cel-extract/HG-U133_Plus_2/ps.txt -o " + testDir + "/qt.extract.intensities.sub.txt -s ../../../regression-data/data/idata/lib/HG-U133_Plus_2/HG-U133_Plus_2.spf " + tissueCels;
  vector<RegressionCheck *> checks;
  checks.push_back(new MixedFileCheck(testDir + "/qt.extract.intensities.sub.txt",
                                      "../../../regression-data/data/idata/cel-extract/HG-U133_Plus_2/qt.extract.intensities.sub.txt",
                                      0.1,
                                      0,0));
  RegressionTest extractTest ("qt-doExtractIntensitiesSubset", command.c_str(), checks);
  Verbose::out (1, "Doing qt-doExtractIntensitiesSubset()");
  if (!extractTest.pass()) {
    Verbose::out(1, "Error in qt-doExtractIntensitiesSubset():" + extractTest.getErrorMsg());
    numFailed++;
  }
  else {
    numPassed++;
  }
}
// ddemean_true_diff3.ref.a5 WaveCorrection datasets X7,X8 have NaN values, verify that it ignores differences if the -n option is false
void File5EquivalentTest::testIgnoreNanNumDifferences()
{
  string command = "./apt-file5-equivalent -n false -e 0.00001 -c 0.999999 -d ./data/datasets_correlation.txt -i ./data/ignore_columns_wc-except-x7-x8.txt ./data/demean_true_diff2.ref.a5 ./data/demean_true_diff3.ref.a5";
  vector<RegressionCheck *> checks;
  RegressionTest differencesTest ("testIgnoreNanNumDifferences", command, checks);
  Verbose::out (1, "\nDoing testIgnoreNanNumDifferences()");
  if (differencesTest.run()) {
    ++numPassed;
  }
  else {
    Verbose::out (1, "Error in File5EquivalentTest::testIgnoreNanNumDifferences(): " + differencesTest.getErrorMsg());
    ++numFailed;
  }
}
// datasets WaveCorrection X1,X2 have all same values with changed sign, X3,X4,X5,X6 have only some values with changed sign
void File5EquivalentTest::testSignAllowNegationPositive1()
{
  string command = "./apt-file5-equivalent -s -e 0.0001 -c 0.9999 -d ./data/datasets_correlation.txt ./data/demean_true_diff2.ref.a5 ./data/demean_true_diff3.ref.a5";
  vector<RegressionCheck *> checks;
  RegressionTest differencesTest ("testSignAllowNegationPositive1", command, checks);
  Verbose::out (1, "\nDoing testSignAllowNegationPositive1()");
  if (differencesTest.run()) {
    ++numPassed;
  }
  else {
    Verbose::out (1, "Error in File5EquivalentTest::testSignAllowNegationPositive1(): " + differencesTest.getErrorMsg());
    ++numFailed;
  }
}