JAL-3446 JAL-3253 JAL-3445 BSML bbb XML format reader (preliminary) test
[jalview.git] / test / jalview / io / BSMLFileTest.java
1 package jalview.io;
2
3 import static org.testng.Assert.assertEquals;
4 import static org.testng.Assert.assertTrue;
5
6 import jalview.datamodel.SequenceFeature;
7 import jalview.datamodel.SequenceI;
8 import jalview.datamodel.features.SequenceFeaturesI;
9
10 import java.io.IOException;
11 import java.util.List;
12
13 import org.testng.annotations.Test;
14
15 public class BSMLFileTest
16 {
17   @Test(groups="Functional")
18   public void testParse_BSML() throws IOException
19   {
20     //@formatter:off
21     String data = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" + 
22             "<Bsml>\r\n" + 
23             "  <Definitions>\r\n" + 
24             "    <Sequences>\r\n" + 
25             "      <Sequence\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" + 
33             "            </Feature>\r\n" + 
34             "          </Feature-table>\r\n" + 
35             "        </Feature-tables>\r\n" + 
36             "      </Sequence>\r\n" + 
37             "    </Sequences>\r\n" + 
38             "    <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" + 
45             "    </Tables>\r\n" + 
46             "    <Notebook notebook=\"\"/>\r\n" + 
47             "  </Definitions>\r\n" + 
48             "</Bsml>\r\n" + 
49             "";
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");
65     
66   }
67
68 }