/*
* Eoulsan development code
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public License version 2.1 or
* later and CeCILL-C. This should be distributed with the code.
* If you do not have a copy, see:
*
* http://www.gnu.org/licenses/lgpl-2.1.txt
* http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.txt
*
* Copyright for this code is held jointly by the Genomic platform
* of the Institut de Biologie de l'École normale supérieure and
* the individual authors. These should be listed in @author doc
* comments.
*
* For more information on the Eoulsan project and its aims,
* or to join the Eoulsan Google group, visit the home page
* at:
*
* http://outils.genomique.biologie.ens.fr/eoulsan
*
*/
package fr.ens.biologie.genomique.eoulsan.bio;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import fr.ens.biologie.genomique.eoulsan.bio.BadBioEntryException;
import fr.ens.biologie.genomique.eoulsan.bio.GFFEntry;
public class GFFEntryTest {
private final String[] TEST_GFF3_STRINGS = {
"ctg123\t.\tgene\t1000\t9000\t.\t+\t.\tID=gene00001;Name=EDEN",
"ctg123\t.\tTF_binding_site\t1000\t1012\t.\t+\t.\tID=tfbs00001;Parent=gene00001",
"ctg123\t.\tmRNA\t1050\t9000\t.\t+\t.\tID=mRNA00001;Parent=gene00001;Name=EDEN.1",
"ctg123\t.\tmRNA\t1050\t9000\t.\t+\t.\tID=mRNA00002;Parent=gene00001;Name=EDEN.2",
"ctg123\t.\tmRNA\t1300\t9000\t.\t+\t.\tID=mRNA00003;Parent=gene00001;Name=EDEN.3",
"ctg123\t.\texon\t1300\t1500\t.\t+\t.\tID=exon00001;Parent=mRNA00003",
"ctg123\t.\texon\t1050\t1500\t.\t+\t.\tID=exon00002;Parent=mRNA00001,mRNA00002",
"ctg123\t.\texon\t3000\t3902\t.\t+\t.\tID=exon00003;Parent=mRNA00001,mRNA00003",
"ctg123\t.\texon\t5000\t5500\t.\t+\t.\tID=exon00004;Parent=mRNA00001,mRNA00002,mRNA00003",
"ctg123\t.\texon\t7000\t9000\t.\t+\t.\tID=exon00005;Parent=mRNA00001,mRNA00002,mRNA00003",
"ctg123\t.\tCDS\t1201\t1500\t.\t+\t0\tID=cds00001;Parent=mRNA00001;Name=edenprotein.1",
"ctg123\t.\tCDS\t3000\t3902\t.\t+\t0\tID=cds00001;Parent=mRNA00001;Name=edenprotein.1",
"ctg123\t.\tCDS\t5000\t5500\t.\t+\t0\tID=cds00001;Parent=mRNA00001;Name=edenprotein.1",
"ctg123\t.\tCDS\t7000\t7600\t.\t+\t0\tID=cds00001;Parent=mRNA00001;Name=edenprotein.1",
"ctg123\t.\tCDS\t1201\t1500\t.\t+\t0\tID=cds00002;Parent=mRNA00002;Name=edenprotein.2",
"ctg123\t.\tCDS\t5000\t5500\t.\t+\t0\tID=cds00002;Parent=mRNA00002;Name=edenprotein.2",
"ctg123\t.\tCDS\t7000\t7600\t.\t+\t0\tID=cds00002;Parent=mRNA00002;Name=edenprotein.2",
"ctg123\t.\tCDS\t3301\t3902\t.\t+\t0\tID=cds00003;Parent=mRNA00003;Name=edenprotein.3",
"ctg123\t.\tCDS\t5000\t5500\t.\t+\t1\tID=cds00003;Parent=mRNA00003;Name=edenprotein.3",
"ctg123\t.\tCDS\t7000\t7600\t.\t+\t2\tID=cds00003;Parent=mRNA00003;Name=edenprotein.3",
"ctg123\t.\tCDS\t3391\t3902\t.\t+\t0\tID=cds00004;Parent=mRNA00003;Name=edenprotein.4",
"ctg123\t.\tCDS\t5000\t5500\t.\t+\t1\tID=cds00004;Parent=mRNA00003;Name=edenprotein.4",
"Ctg123\t.\tCDS\t7000\t7600\t.\t+\t2\tID=cds00004;Parent=mRNA00003;Name=edenprotein.4",};
private final String[] TEST_GTF_STRINGS = {
"1\thavana\tgene\t11869\t14409\t.\t+\t.\tgene_id \"ENSG00000223972\"; gene_version \"5\"; gene_name \"DDX11L1\"; gene_source \"havana\"; gene_biotype \"transcribed_unprocessed_pseudogene\"; havana_gene \"OTTHUMG00000000961\"; havana_gene_version \"2\"",
"1\thavana\ttranscript\t11869\t14409\t.\t+\t.\tgene_id \"ENSG00000223972\"; gene_version \"5\"; transcript_id \"ENST00000456328\"; transcript_version \"2\"; gene_name \"DDX11L1\"; gene_source \"havana\"; gene_biotype \"transcribed_unprocessed_pseudogene\"; havana_gene \"OTTHUMG00000000961\"; havana_gene_version \"2\"; transcript_name \"DDX11L1-002\"; transcript_source \"havana\"; transcript_biotype \"processed_transcript\"; havana_transcript \"OTTHUMT00000362751\"; havana_transcript_version \"1\"; tag \"basic\"; transcript_support_level \"1\"",
"1\thavana\texon\t11869\t12227\t.\t+\t.\tgene_id \"ENSG00000223972\"; gene_version \"5\"; transcript_id \"ENST00000456328\"; transcript_version \"2\"; exon_number \"1\"; gene_name \"DDX11L1\"; gene_source \"havana\"; gene_biotype \"transcribed_unprocessed_pseudogene\"; havana_gene \"OTTHUMG00000000961\"; havana_gene_version \"2\"; transcript_name \"DDX11L1-002\"; transcript_source \"havana\"; transcript_biotype \"processed_transcript\"; havana_transcript \"OTTHUMT00000362751\"; havana_transcript_version \"1\"; exon_id \"ENSE00002234944\"; exon_version \"1\"; tag \"basic\"; transcript_support_level \"1\"",
"1\thavana\texon\t12613\t12721\t.\t+\t.\tgene_id \"ENSG00000223972\"; gene_version \"5\"; transcript_id \"ENST00000456328\"; transcript_version \"2\"; exon_number \"2\"; gene_name \"DDX11L1\"; gene_source \"havana\"; gene_biotype \"transcribed_unprocessed_pseudogene\"; havana_gene \"OTTHUMG00000000961\"; havana_gene_version \"2\"; transcript_name \"DDX11L1-002\"; transcript_source \"havana\"; transcript_biotype \"processed_transcript\"; havana_transcript \"OTTHUMT00000362751\"; havana_transcript_version \"1\"; exon_id \"ENSE00003582793\"; exon_version \"1\"; tag \"basic\"; transcript_support_level \"1\"",
"1\thavana\texon\t13221\t14409\t.\t+\t.\tgene_id \"ENSG00000223972\"; gene_version \"5\"; transcript_id \"ENST00000456328\"; transcript_version \"2\"; exon_number \"3\"; gene_name \"DDX11L1\"; gene_source \"havana\"; gene_biotype \"transcribed_unprocessed_pseudogene\"; havana_gene \"OTTHUMG00000000961\"; havana_gene_version \"2\"; transcript_name \"DDX11L1-002\"; transcript_source \"havana\"; transcript_biotype \"processed_transcript\"; havana_transcript \"OTTHUMT00000362751\"; havana_transcript_version \"1\"; exon_id \"ENSE00002312635\"; exon_version \"1\"; tag \"basic\"; transcript_support_level \"1\"",
"1\thavana\ttranscript\t12010\t13670\t.\t+\t.\tgene_id \"ENSG00000223972\"; gene_version \"5\"; transcript_id \"ENST00000450305\"; transcript_version \"2\"; gene_name \"DDX11L1\"; gene_source \"havana\"; gene_biotype \"transcribed_unprocessed_pseudogene\"; havana_gene \"OTTHUMG00000000961\"; havana_gene_version \"2\"; transcript_name \"DDX11L1-001\"; transcript_source \"havana\"; transcript_biotype \"transcribed_unprocessed_pseudogene\"; havana_transcript \"OTTHUMT00000002844\"; havana_transcript_version \"2\"; tag \"basic\"; transcript_support_level \"NA\"",
"1\thavana\texon\t12010\t12057\t.\t+\t.\tgene_id \"ENSG00000223972\"; gene_version \"5\"; transcript_id \"ENST00000450305\"; transcript_version \"2\"; exon_number \"1\"; gene_name \"DDX11L1\"; gene_source \"havana\"; gene_biotype \"transcribed_unprocessed_pseudogene\"; havana_gene \"OTTHUMG00000000961\"; havana_gene_version \"2\"; transcript_name \"DDX11L1-001\"; transcript_source \"havana\"; transcript_biotype \"transcribed_unprocessed_pseudogene\"; havana_transcript \"OTTHUMT00000002844\"; havana_transcript_version \"2\"; exon_id \"ENSE00001948541\"; exon_version \"1\"; tag \"basic\"; transcript_support_level \"NA\"",
"1\thavana\texon\t12179\t12227\t.\t+\t.\tgene_id \"ENSG00000223972\"; gene_version \"5\"; transcript_id \"ENST00000450305\"; transcript_version \"2\"; exon_number \"2\"; gene_name \"DDX11L1\"; gene_source \"havana\"; gene_biotype \"transcribed_unprocessed_pseudogene\"; havana_gene \"OTTHUMG00000000961\"; havana_gene_version \"2\"; transcript_name \"DDX11L1-001\"; transcript_source \"havana\"; transcript_biotype \"transcribed_unprocessed_pseudogene\"; havana_transcript \"OTTHUMT00000002844\"; havana_transcript_version \"2\"; exon_id \"ENSE00001671638\"; exon_version \"2\"; tag \"basic\"; transcript_support_level \"NA\"",
"1\thavana\texon\t12613\t12697\t.\t+\t.\tgene_id \"ENSG00000223972\"; gene_version \"5\"; transcript_id \"ENST00000450305\"; transcript_version \"2\"; exon_number \"3\"; gene_name \"DDX11L1\"; gene_source \"havana\"; gene_biotype \"transcribed_unprocessed_pseudogene\"; havana_gene \"OTTHUMG00000000961\"; havana_gene_version \"2\"; transcript_name \"DDX11L1-001\"; transcript_source \"havana\"; transcript_biotype \"transcribed_unprocessed_pseudogene\"; havana_transcript \"OTTHUMT00000002844\"; havana_transcript_version \"2\"; exon_id \"ENSE00001758273\"; exon_version \"2\"; tag \"basic\"; transcript_support_level \"NA\"",
"1\thavana\texon\t12975\t13052\t.\t+\t.\tgene_id \"ENSG00000223972\"; gene_version \"5\"; transcript_id \"ENST00000450305\"; transcript_version \"2\"; exon_number \"4\"; gene_name \"DDX11L1\"; gene_source \"havana\"; gene_biotype \"transcribed_unprocessed_pseudogene\"; havana_gene \"OTTHUMG00000000961\"; havana_gene_version \"2\"; transcript_name \"DDX11L1-001\"; transcript_source \"havana\"; transcript_biotype \"transcribed_unprocessed_pseudogene\"; havana_transcript \"OTTHUMT00000002844\"; havana_transcript_version \"2\"; exon_id \"ENSE00001799933\"; exon_version \"2\"; tag \"basic\"; transcript_support_level \"NA\"",
"1\thavana\texon\t13221\t13374\t.\t+\t.\tgene_id \"ENSG00000223972\"; gene_version \"5\"; transcript_id \"ENST00000450305\"; transcript_version \"2\"; exon_number \"5\"; gene_name \"DDX11L1\"; gene_source \"havana\"; gene_biotype \"transcribed_unprocessed_pseudogene\"; havana_gene \"OTTHUMG00000000961\"; havana_gene_version \"2\"; transcript_name \"DDX11L1-001\"; transcript_source \"havana\"; transcript_biotype \"transcribed_unprocessed_pseudogene\"; havana_transcript \"OTTHUMT00000002844\"; havana_transcript_version \"2\"; exon_id \"ENSE00001746346\"; exon_version \"2\"; tag \"basic\"; transcript_support_level \"NA\"",
"1\thavana\texon\t13453\t13670\t.\t+\t.\tgene_id \"ENSG00000223972\"; gene_version \"5\"; transcript_id \"ENST00000450305\"; transcript_version \"2\"; exon_number \"6\"; gene_name \"DDX11L1\"; gene_source \"havana\"; gene_biotype \"transcribed_unprocessed_pseudogene\"; havana_gene \"OTTHUMG00000000961\"; havana_gene_version \"2\"; transcript_name \"DDX11L1-001\"; transcript_source \"havana\"; transcript_biotype \"transcribed_unprocessed_pseudogene\"; havana_transcript \"OTTHUMT00000002844\"; havana_transcript_version \"2\"; exon_id \"ENSE00001863096\"; exon_version \"1\"; tag \"basic\"; transcript_support_level \"NA\""};
@Test
public void testParseGFF3() {
GFFEntry e = new GFFEntry();
for (String s : this.TEST_GFF3_STRINGS) {
try {
e.parseGFF3(s);
} catch (BadBioEntryException exp) {
assertTrue(false);
}
assertEquals(s, e.toGFF3());
}
}
@Test
public void testParseGTF() {
GFFEntry e = new GFFEntry();
for (String s : this.TEST_GTF_STRINGS) {
try {
e.parseGTF(s);
} catch (BadBioEntryException exp) {
assertTrue(false);
}
assertEquals(s, e.toGTF());
}
try {
e.parseGTF(
"IV\tcurated\tmRNA\t5506800\t5508917\t.\t+\t.\tTranscript B0273.1; Note \"Zn-Finger\"");
assertEquals(2, e.getAttributesNames().size());
assertEquals("B0273.1", e.getAttributeValue("Transcript"));
assertEquals("Zn-Finger", e.getAttributeValue("Note"));
e.parseGTF(
"IV\tcurated\t5'UTR\t5506800\t5508999\t.\t+\t.\tTranscript B0273.1");
assertEquals(1, e.getAttributesNames().size());
assertEquals("B0273.1", e.getAttributeValue("Transcript"));
e.parseGTF(
"Chr3\tgiemsa\theterochromatin\t4500000\t6000000\t.\t.\t.\tBand 3q12.1 ; Note \"Marfan's syndrome\"");
assertEquals(2, e.getAttributesNames().size());
assertEquals("3q12.1", e.getAttributeValue("Band"));
assertEquals("Marfan's syndrome", e.getAttributeValue("Note"));
e.parseGTF(
"Chr3\tgiemsa\theterochromatin\t4500000\t6000000\t.\t.\t.\tBand 3q12.1 ; Note \"Marfan's syndrome\" ; Note \"dystrophic dysplasia\"");
assertEquals(2, e.getAttributesNames().size());
assertEquals("3q12.1", e.getAttributeValue("Band"));
assertEquals("Marfan's syndrome,dystrophic dysplasia",
e.getAttributeValue("Note"));
e.parseGTF(
"Chr3\tgiemsa\theterochromatin\t4500000\t6000000\t.\t.\t.\tBand 3q12.1 ; Alias MFX");
assertEquals(2, e.getAttributesNames().size());
assertEquals("3q12.1", e.getAttributeValue("Band"));
assertEquals("MFX", e.getAttributeValue("Alias"));
e.parseGTF(
"Chr1\tassembly\tchromosome\t1\t14972282\t.\t+\t.\tSequence Chr1");
assertEquals(1, e.getAttributesNames().size());
assertEquals("Chr1", e.getAttributeValue("Sequence"));
} catch (BadBioEntryException exp) {
exp.printStackTrace();
assertTrue(false);
}
}
@Test
public void testMinimalEntry() {
GFFEntry e = new GFFEntry();
e.setSeqId("theId");
e.setSource("thesource");
e.setType("thetype");
e.setStart(1);
e.setEnd(1000);
assertTrue(e.isValidPhase());
assertTrue(e.isValidStartAndEnd());
assertTrue(e.isValidStrand());
assertTrue(e.isValidEntry());
}
@Test
public void testGetId() {
GFFEntry e = new GFFEntry();
e.setId(9999);
assertEquals(9999, e.getId());
}
@Test
public void testGetSeqId() {
GFFEntry e = new GFFEntry();
try {
e.parseGFF3(
"ctg123\t.\tgene\t1000\t9000\t.\t+\t.\tID=gene00001;Name=EDEN");
} catch (BadBioEntryException exp) {
assertTrue(false);
}
assertEquals("ctg123", e.getSeqId());
}
@Test
public void testGetSource() {
GFFEntry e = new GFFEntry();
try {
e.parseGFF3(
"ctg123\tGenbank\tgene\t1000\t9000\t.\t+\t.\tID=gene00001;Name=EDEN");
} catch (BadBioEntryException exp) {
assertTrue(false);
}
assertEquals("Genbank", e.getSource());
}
@Test
public void testGetType() {
GFFEntry e = new GFFEntry();
try {
e.parseGFF3(
"ctg123\t.\tgene\t1000\t9000\t.\t+\t.\tID=gene00001;Name=EDEN");
} catch (BadBioEntryException exp) {
assertTrue(false);
}
assertEquals("gene", e.getType());
}
@Test
public void testGetStart() {
GFFEntry e = new GFFEntry();
try {
e.parseGFF3(
"ctg123\t.\tgene\t1000\t9000\t.\t+\t.\tID=gene00001;Name=EDEN");
} catch (BadBioEntryException exp) {
assertTrue(false);
}
assertEquals(1000, e.getStart());
}
@Test
public void testGetEnd() {
GFFEntry e = new GFFEntry();
try {
e.parseGFF3(
"ctg123\t.\tgene\t1000\t9000\t.\t+\t.\tID=gene00001;Name=EDEN");
} catch (BadBioEntryException exp) {
assertTrue(false);
}
assertEquals(9000, e.getEnd());
}
@Test
public void testGetScore() {
GFFEntry e = new GFFEntry();
try {
e.parseGFF3(
"ctg123\t.\tgene\t1000\t9000\t.\t+\t.\tID=gene00001;Name=EDEN");
} catch (BadBioEntryException exp) {
assertTrue(false);
}
assertEquals(Double.NaN, e.getScore(), 0.0);
}
@Test
public void testGetStrand() {
GFFEntry e = new GFFEntry();
try {
e.parseGFF3(
"ctg123\t.\tgene\t1000\t9000\t.\t+\t.\tID=gene00001;Name=EDEN");
} catch (BadBioEntryException exp) {
assertTrue(false);
}
assertEquals('+', e.getStrand());
}
@Test
public void testGetPhase() {
GFFEntry e = new GFFEntry();
try {
e.parseGFF3(
"ctg123\t.\tgene\t1000\t9000\t.\t+\t.\tID=gene00001;Name=EDEN");
} catch (BadBioEntryException exp) {
assertTrue(false);
}
assertEquals(-1, e.getPhase());
e.setType("CDS");
e.setPhase(-2);
assertEquals(-1, e.getPhase());
e.setPhase(-1);
assertEquals(-1, e.getPhase());
e.setPhase(0);
assertEquals(0, e.getPhase());
e.setPhase(1);
assertEquals(1, e.getPhase());
e.setPhase(2);
assertEquals(2, e.getPhase());
e.setPhase(3);
assertEquals(-1, e.getPhase());
}
@Test
public void testGetMetadataKeyNames() {
GFFEntry e = new GFFEntry();
try {
e.parseGFF3(
"ctg123\t.\tgene\t1000\t9000\t.\t+\t.\tID=gene00001;Name=EDEN");
} catch (BadBioEntryException exp) {
assertTrue(false);
}
assertEquals(0, e.getMetadataKeyNames().size());
e.addMetaDataEntry("key1", "val1");
assertEquals(1, e.getMetadataKeyNames().size());
assertFalse(e.getMetadataKeyNames().contains("key0"));
assertTrue(e.getMetadataKeyNames().contains("key1"));
e.addMetaDataEntry("key2", "val2");
assertEquals(2, e.getMetadataKeyNames().size());
assertFalse(e.getMetadataKeyNames().contains("key0"));
assertTrue(e.getMetadataKeyNames().contains("key1"));
assertTrue(e.getMetadataKeyNames().contains("key2"));
}
@Test
public void testGetAttributesNames() {
GFFEntry e = new GFFEntry();
assertEquals(0, e.getAttributesNames().size());
try {
e.parseGFF3(
"ctg123\t.\tgene\t1000\t9000\t.\t+\t.\tID=gene00001;Name=EDEN");
} catch (BadBioEntryException exp) {
assertTrue(false);
}
assertEquals(2, e.getAttributesNames().size());
assertFalse(e.getAttributesNames().contains("key0"));
assertTrue(e.getAttributesNames().contains("ID"));
assertTrue(e.getAttributesNames().contains("Name"));
}
@Test
public void testIsMetaDataEntry() {
GFFEntry e = new GFFEntry();
try {
e.parseGFF3(
"ctg123\t.\tgene\t1000\t9000\t.\t+\t.\tID=gene00001;Name=EDEN");
} catch (BadBioEntryException exp) {
assertTrue(false);
}
assertFalse(e.isMetaDataEntry("key0"));
assertEquals(0, e.getMetadataKeyNames().size());
e.addMetaDataEntry("key1", "val1");
assertFalse(e.isMetaDataEntry("key0"));
assertTrue(e.isMetaDataEntry("key1"));
e.addMetaDataEntry("key2", "val2");
assertFalse(e.isMetaDataEntry("key0"));
assertTrue(e.isMetaDataEntry("key1"));
assertTrue(e.isMetaDataEntry("key2"));
}
@Test
public void testIsAttribute() {
GFFEntry e = new GFFEntry();
assertFalse(e.isAttribute("key0"));
assertFalse(e.isAttribute("ID"));
assertFalse(e.isAttribute("Name"));
try {
e.parseGFF3(
"ctg123\t.\tgene\t1000\t9000\t.\t+\t.\tID=gene00001;Name=EDEN");
} catch (BadBioEntryException exp) {
assertTrue(false);
}
assertEquals(2, e.getAttributesNames().size());
assertFalse(e.isAttribute("key0"));
assertTrue(e.isAttribute("ID"));
assertTrue(e.isAttribute("Name"));
assertFalse(e.isAttribute("id"));
assertFalse(e.isAttribute("name"));
}
@Test
public void testGetMetadataEntryValues() {
GFFEntry e = new GFFEntry();
try {
e.parseGFF3(
"ctg123\t.\tgene\t1000\t9000\t.\t+\t.\tID=gene00001;Name=EDEN");
} catch (BadBioEntryException exp) {
assertTrue(false);
}
e.addMetaDataEntry("key1", "val1");
assertEquals(1, e.getMetadataEntryValues("key1").size());
assertEquals("val1", e.getMetadataEntryValues("key1").get(0));
e.addMetaDataEntry("key2", "val2");
assertEquals(1, e.getMetadataEntryValues("key1").size());
assertEquals("val1", e.getMetadataEntryValues("key1").get(0));
assertEquals(1, e.getMetadataEntryValues("key2").size());
assertEquals("val2", e.getMetadataEntryValues("key2").get(0));
}
@Test
public void testGetAttributeValue() {
GFFEntry e = new GFFEntry();
try {
e.parseGFF3(
"ctg123\t.\tgene\t1000\t9000\t.\t+\t.\tID=gene00001;Name=EDEN");
} catch (BadBioEntryException exp) {
assertTrue(false);
}
assertEquals("gene00001", e.getAttributeValue("ID"));
assertEquals("EDEN", e.getAttributeValue("Name"));
}
@Test
public void testSetId() {
GFFEntry e = new GFFEntry();
assertEquals(0, e.getId());
e.setId(8888);
assertEquals(8888, e.getId());
}
@Test
public void testSetSeqId() {
GFFEntry e = new GFFEntry();
assertEquals("", e.getSeqId());
e.setSeqId("myseqid");
assertEquals("myseqid", e.getSeqId());
e.setSeqId(" ");
assertEquals("", e.getSeqId());
e.setSeqId(null);
assertEquals("", e.getSeqId());
}
@Test
public void testSetSource() {
GFFEntry e = new GFFEntry();
assertEquals("", e.getSource());
e.setSource("mysource");
assertEquals("mysource", e.getSource());
e.setSource(" ");
assertEquals("", e.getSource());
e.setSource(null);
assertEquals("", e.getSource());
}
@Test
public void testSetType() {
GFFEntry e = new GFFEntry();
assertEquals("", e.getType());
e.setType("mytype");
assertEquals("mytype", e.getType());
e.setType(" ");
assertEquals("", e.getType());
e.setType(null);
assertEquals("", e.getType());
}
@Test
public void testSetStart() {
GFFEntry e = new GFFEntry();
assertEquals(-1, e.getStart());
e.setStart(0);
assertEquals(-1, e.getStart());
e.setStart(1);
assertEquals(1, e.getStart());
e.setStart(10);
assertEquals(10, e.getStart());
}
@Test
public void testSetEnd() {
GFFEntry e = new GFFEntry();
assertEquals(-1, e.getEnd());
e.setEnd(0);
assertEquals(-1, e.getEnd());
e.setEnd(1);
assertEquals(1, e.getEnd());
e.setEnd(10);
assertEquals(10, e.getEnd());
}
@Test
public void testSetScore() {
GFFEntry e = new GFFEntry();
assertEquals(Double.NaN, e.getScore(), 0.0);
e.setScore(0.0);
assertEquals(0.0, e.getScore(), 0.0);
e.setScore(1);
assertEquals(1.0, e.getScore(), 0.0);
e.setScore(10);
assertEquals(10.0, e.getScore(), 0.0);
}
@Test
public void testSetStrand() {
GFFEntry e = new GFFEntry();
assertEquals('.', e.getStrand());
e.setStrand('+');
assertEquals('+', e.getStrand());
e.setStrand('.');
assertEquals('.', e.getStrand());
e.setStrand('-');
assertEquals('-', e.getStrand());
e.setStrand('a');
assertEquals('.', e.getStrand());
}
@Test
public void testSetPhase() {
GFFEntry e = new GFFEntry();
assertEquals(-1, e.getPhase());
e.setPhase(-2);
assertEquals(-1, e.getPhase());
e.setPhase(-1);
assertEquals(-1, e.getPhase());
e.setPhase(0);
assertEquals(0, e.getPhase());
e.setPhase(1);
assertEquals(1, e.getPhase());
e.setPhase(2);
assertEquals(2, e.getPhase());
e.setPhase(3);
assertEquals(-1, e.getPhase());
}
}