package net.sourceforge.seqware.pipeline.plugins.filelinker;
import java.io.StringReader;
import java.util.List;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.nullValue;
import static org.junit.Assert.assertThat;
import org.junit.Test;
public class FileLinkerParserTest {
@Test
public void test_csv_to_entry_samples() throws Exception {
String schema = "sample\n";
String line01 = "PCSI_0001_Pa_P_PE_230_EX\n";
String line02 = "PCSI_0006_Pa_X_PE_400_WG\n";
String csv = schema + line01 + line02;
List<FileLinkerLine> lines = FileLinkerParser.getFileInfo(new StringReader(csv), ',');
assertThat(lines.size(), is(2));
}
@Test
public void test_parse_csv_full() throws Exception {
String schema = "sequencer_run,sample,lane,ius_sw_accession,file_status,mime_type,size,md5sum,file\n";
String line01 = "110316_I580_00038_612RG_LT,PCSI_0001_Pa_P_PE_230_EX,1,9037,OK,application/bam,1024,3e5g434,/file1\n";
String line02 = "110316_I580_00038_612RG_LT,PCSI_0024_Pa_P_PE_230_EX,1,8378,OK,application/bam,2048,78a8e39,/file2\n";
String csv = schema + line01 + line02;
List<FileLinkerLine> lines = FileLinkerParser.getFileInfo(new StringReader(csv), ',');
assertThat(lines.size(), is(2));
assertThat(lines.get(1).getFilename(), is("/file2"));
assertThat(lines.get(1).getSequencerRun(), is("110316_I580_00038_612RG_LT"));
assertThat(lines.get(0).getSize(), is(1024L));
}
@Test
public void test_parse_csv_bad_integer() throws Exception {
String schema = "lane,ius_sw_accession\n";
String line01 = "8,bad_seqware_accession_number\n";
String line02 = "2,45693\n";
String csv = schema + line01 + line02;
List<FileLinkerLine> lines = FileLinkerParser.getFileInfo(new StringReader(csv), ',');
assertThat(lines.get(0).getSeqwareAccession(), nullValue());
assertThat(lines.get(1).getSeqwareAccession(), is(45693));
}
@Test(expected = FileLinkerLineException.class)
public void test_parse_csv_missing_required_fields() throws Exception {
String schema = "sequencer_run,sample,lane,ius_sw_accession,file_status,mime_type,size,md5sum,file\n";
String line01 = ",,4,4999,,,,,\n";
String line02 = "110316_I580_00038_612RG_LT,PCSI_0001_Pa_P_PE_230_EX,1,9037,OK,application/bam,1024,3e5g434,/file1\n";
String line03 = ",,2,45693,,,,,\n";
String csv = schema + line01 + line02 + line03;
List<FileLinkerLine> lines = FileLinkerParser.getFileInfo(new StringReader(csv), ',');
FileLinkerParser.requiredValuesPresent(lines);
}
}