Select Git revision
unit_test_main_utils.cpp
unit_test_main_utils.cpp 3.62 KiB
/*
* test_main_utils.cpp
*
* Created on: May 25, 2016
* Author: vlegrand
*/
#include <iostream>
#include <cassert>
#include <string>
#include <cmath>
using namespace std;
#include "rock_commons.h"
#include "main_utils.h"
#include "ROCKparams.h"
void test_processIOFileArgs() {
std::vector<IO_fq_files> single_files;
vector<PE_files> v_PE_files;
std::vector<string> v_input_lines;
std::vector<string> v_output_lines;
ROCKparams main_parms;
int f_id=0;
int ret=main_parms.loadInOutFileArgs("../test/data/unit/list_input1.txt","../test/data/unit/list_output1.txt",v_input_lines,v_output_lines);
assert(ret==EXIT_SUCCESS);
ret=main_parms.processInOutFileArgs(v_input_lines,v_output_lines,single_files,v_PE_files,f_id);
assert(ret==EXIT_FAILURE);
f_id=0;
v_PE_files.clear();
single_files.clear();
v_input_lines.clear();
v_output_lines.clear();
ret=main_parms.loadInOutFileArgs("../test/data/unit/list_input2.txt","../test/data/unit/list_output2.txt",v_input_lines,v_output_lines);
ret=main_parms.processInOutFileArgs(v_input_lines,v_output_lines,single_files,v_PE_files,f_id);
assert(ret==EXIT_FAILURE);
f_id=0;
v_PE_files.clear();
single_files.clear();
v_input_lines.clear();
v_output_lines.clear();
ret=main_parms.loadInOutFileArgs("../test/data/unit/list_input3.txt","../test/data/unit/list_output3.txt",v_input_lines,v_output_lines);
ret=main_parms.processInOutFileArgs(v_input_lines,v_output_lines,single_files,v_PE_files,f_id);
assert(ret==EXIT_SUCCESS);
assert(f_id==14);
assert(single_files.size()==2);
assert(v_PE_files.size()==6);
IO_fq_files s=single_files[0];
assert(s.in_fq_file.compare("fifi")==0);
assert(s.out_fq_file.compare("ofifi")==0);
PE_files s2=v_PE_files[5];
assert(s2.PE2.in_fq_file.compare("nono")==0);
assert(s2.PE2.out_fq_file.compare("onono")==0);
v_output_lines.clear();
v_input_lines.clear();
v_PE_files.clear();
single_files.clear();
ret=main_parms.loadInOutFileArgs("../test/data/unit/list_input3.txt","",v_input_lines,v_output_lines);
ret=main_parms.processInOutFileArgs(v_input_lines,v_output_lines,single_files,v_PE_files,f_id);
s=single_files[0];
assert(s.out_fq_file.compare("fifi.rock.fq")==0);
s2=v_PE_files[5];
assert(s2.PE2.out_fq_file.compare("nono.rock.fq")==0);
}
void test_getBestLambdaForN() {
int lambda_max=10;
unsigned long nb_k_mer=200000000;
int best=getBestLambdaForN(nb_k_mer,lambda_max);
assert(best==2);
nb_k_mer=600000000;
best=getBestLambdaForN(nb_k_mer,lambda_max);
assert(best==3);
nb_k_mer=2000000000;
best=getBestLambdaForN(nb_k_mer,lambda_max);
// cout<<best<<endl;
assert(best==5);
nb_k_mer=10000000000;
best=getBestLambdaForN(nb_k_mer,lambda_max);
assert(best==lambda_max);
}
void test_getCollisionProba() {
float p =getCollisionProba(1,2);
// cout<<p<<endl;
assert(p==0.0);
p =getCollisionProba(1000000000,2);
// cout<<p<<endl;
assert(floor(p*1000+0.5)==43);
p =getCollisionProba(1000000000,4);
assert(floor(p*1000+0.5)==2);
p =getCollisionProba(20000000000,10);
assert(floor(p*1000+0.5)==909);
}
int main() {
cout<<"testing main_utils"<<endl;
cout<<"testing processing of IOFile arguments ( following 2 error messages are what is expected; don't worry)."<<endl;
test_processIOFileArgs();
cout<<"test computation of the bast lambda value depending on nb distinct k-mers."<<endl;
test_getBestLambdaForN();
cout<<"testing computation of collision probability."<<endl;
test_getCollisionProba();
cout<<"done"<<endl;
}