+ InputStream is = new ByteArrayInputStream(UNIPROT_XML.getBytes());
+ Entry entry = new Uniprot().getUniprotEntries(is).get(0);
+
+ /*
+ * name formatted with Uniprot Entry name
+ */
+ String expectedName = "A9CKP4_AGRT5|A9CKP4_AGRT6";
+ assertEquals(expectedName, Uniprot.getUniprotEntryId(entry));
+ }
+
+ /**
+ * Test the method that formats the sequence description
+ *
+ * @throws UnsupportedEncodingException
+ */
+ @Test(groups = { "Functional" })
+ public void testGetUniprotEntryDescription()
+ throws UnsupportedEncodingException
+ {
+ InputStream is = new ByteArrayInputStream(UNIPROT_XML.getBytes());
+ Entry entry = new Uniprot().getUniprotEntries(is).get(0);
+
+ assertEquals("Mitogen-activated protein kinase 13",
+ Uniprot.getUniprotEntryDescription(entry));
+ }
+
+ @Test(groups = { "Functional" })
+ public void testGetDescription()
+ {
+ FeatureType ft = new FeatureType();
+ assertEquals("", Uniprot.getDescription(ft));
+
+ ft.setDescription("Hello");
+ assertEquals("Hello", Uniprot.getDescription(ft));
+
+ ft.setLocation(new LocationType());
+ ft.getLocation().setPosition(new PositionType());
+ ft.getLocation().getPosition().setPosition(BigInteger.valueOf(23));
+ ft.setOriginal("K");
+ ft.getVariation().add("y");
+ assertEquals("p.Lys23Tyr Hello", Uniprot.getDescription(ft));
+
+ // multiple variants generate an html description over more than one line
+ ft.getVariation().add("W");
+ assertEquals("<html>p.Lys23Tyr<br/> p.Lys23Trp Hello</html>",
+ Uniprot.getDescription(ft));
+
+ /*
+ * indel cases
+ * up to 3 bases (original or variant) are shown using 3 letter code
+ */
+ ft.getVariation().clear();
+ ft.getVariation().add("KWE");
+ ft.setOriginal("KLS");
+ assertEquals("p.LysLeuSer23LysTrpGlu Hello",
+ Uniprot.getDescription(ft));
+
+ // adding a fourth original base switches to single letter code
+ ft.setOriginal("KLST");
+ assertEquals("p.KLST23LysTrpGlu Hello", Uniprot.getDescription(ft));
+
+ // adding a fourth variant switches to single letter code
+ ft.getVariation().clear();
+ ft.getVariation().add("KWES");
+ assertEquals("p.KLST23KWES Hello", Uniprot.getDescription(ft));
+
+ ft.getVariation().clear();
+ ft.getVariation().add("z"); // unknown variant - fails gracefully
+ ft.setOriginal("K");
+ assertEquals("p.Lys23z Hello", Uniprot.getDescription(ft));
+
+ ft.getVariation().clear(); // variant missing - is ignored
+ assertEquals("Hello", Uniprot.getDescription(ft));