3 import static org.testng.Assert.assertEquals;
4 import static org.testng.Assert.assertTrue;
6 import jalview.datamodel.SequenceFeature;
7 import jalview.datamodel.SequenceI;
8 import jalview.datamodel.features.SequenceFeaturesI;
10 import java.io.IOException;
11 import java.util.List;
13 import org.testng.annotations.Test;
15 public class BSMLFileTest
17 @Test(groups="Functional")
18 public void testParse_BSML() throws IOException
21 String data = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" +
23 " <Definitions>\r\n" +
26 " comment=\"Sequence Data Contained in 'Multiple-alignment' section\"\r\n" +
27 " id=\"SEQ-ID:181170\" length=\"30\" molecule=\"dna\" title=\"EP1\">\r\n" +
28 " <Feature-tables>\r\n" +
29 " <Feature-table title=\"GENE\">\r\n" +
30 " <Feature class=\"GENE\" title=\"TEST-001\">\r\n" +
31 " <Interval-loc complement=\"0\" endpos=\"20\" startpos=\"10\"/>\r\n" +
32 " <Resource id=\"GENE-ID:181171\"/>\r\n" +
34 " </Feature-table>\r\n" +
35 " </Feature-tables>\r\n" +
39 " <Multiple-alignment-table molecule-type=\"nucleotide\">\r\n" +
40 " <Sequence-alignment sequences=\"1\">\r\n" +
41 " <Sequence-data seq-name=\"EP1\">--AATTTT-ATTTAGTGTCT-----------</Sequence-data>\r\n" +
42 " <Alignment-consensus/>\r\n" +
43 " </Sequence-alignment>\r\n" +
44 " </Multiple-alignment-table>\r\n" +
46 " <Notebook notebook=\"\"/>\r\n" +
47 " </Definitions>\r\n" +
50 BSMLFile cf = new BSMLFile(data, DataSourceType.PASTE);
51 // why twice? cf.parse();
52 SequenceI[] seqs = cf.getSeqsAsArray();
53 assertEquals(seqs.length, 1);
54 SequenceI seq = seqs[0];
55 assertEquals(seq.getName(), "EP1");
56 assertEquals(seq.getStart(), 1);
57 assertEquals(seq.getEnd(), 31);
58 assertTrue(seq.getSequenceAsString().equals("--AATTTT-ATTTAGTGTCT-----------"));
59 SequenceFeaturesI features = seq.getFeatures();
60 List<SequenceFeature> genes = features.getAllFeatures("GENE");
61 assertEquals(genes.size(), 1);
62 SequenceFeature sf = genes.get(0);
63 assertEquals(sf.getDescription(), "TEST-001");
64 assertEquals(sf.begin + "," + sf.end, "10,20");