JAL-2920 wrap description in <html/> if it includes <br/>
[jalview.git] / test / jalview / ws / dbsources / UniprotTest.java
index c7f216e..e927023 100644 (file)
@@ -69,6 +69,7 @@ public class UniprotTest
           + "<feature type=\"sequence variant\" description=\"Pathogenic\"><original>M</original><location><position position=\"41\"/></location></feature>"
           + "<feature type=\"sequence variant\" description=\"Foo\"><variation>L</variation><variation>LMV</variation><original>M</original><location><position position=\"42\"/></location></feature>"
           + "<feature type=\"sequence variant\" description=\"Foo\"><variation>LL</variation><variation>LMV</variation><original>ML</original><location><begin position=\"42\"/><end position=\"43\"/></location></feature>"
+          + "<feature type=\"sequence variant\" description=\"Foo Too\"><variation>LL</variation><variation>LMVK</variation><original>MLML</original><location><begin position=\"42\"/><end position=\"45\"/></location></feature>"
           + "<sequence length=\"10\" mass=\"27410\" checksum=\"8CB760AACF88FE6C\" modified=\"2008-01-15\" version=\"1\">MHAPL VSKDL</sequence></entry>"
           + "</uniprot>";
 
@@ -104,7 +105,7 @@ public class UniprotTest
      * Check sequence features
      */
     Vector<UniprotFeature> features = entry.getFeature();
-    assertEquals(8, features.size());
+    assertEquals(9, features.size());
     UniprotFeature sf = features.get(0);
     assertEquals("signal peptide", sf.getType());
     assertNull(sf.getDescription());
@@ -153,15 +154,26 @@ public class UniprotTest
     assertEquals(42, sf.getBegin());
     assertEquals(42, sf.getEnd());
     Assert.assertEquals(Uniprot.getDescription(sf),
-            "p.Met42Leu" + "\n" + "p.Met42LeuMetVal Foo");
+            "<html>p.Met42Leu" + "<br/>&nbsp;&nbsp;"
+                    + "p.Met42LeuMetVal Foo</html>");
 
     sf = features.get(7);
     assertEquals(42, sf.getBegin());
     assertEquals(43, sf.getEnd());
     Assert.assertEquals(Uniprot.getDescription(sf),
-            "p.MetLeu42LeuLeu" + "\n" + "p.MetLeu42LeuMetVal Foo"); /*
-                                                                    * Check cross-references
-                                                                    */
+            "<html>p.MetLeu42LeuLeu" + "<br/>&nbsp;&nbsp;"
+                    + "p.MetLeu42LeuMetVal Foo</html>");
+
+    sf = features.get(8);
+    assertEquals(42, sf.getBegin());
+    assertEquals(45, sf.getEnd());
+    Assert.assertEquals(Uniprot.getDescription(sf),
+            "<html>p.MLML42LeuLeu" + "<br/>&nbsp;&nbsp;"
+                    + "p.MLML42LMVK Foo Too</html>");
+
+    /*
+     * Check cross-references
+     */
     Vector<PDBEntry> xrefs = entry.getDbReference();
     assertEquals(3, xrefs.size());
 
@@ -239,14 +251,40 @@ public class UniprotTest
 
     uf.setPosition(23);
     uf.setOriginal("K");
-    Vector<String> vars = new Vector();
+    Vector<String> vars = new Vector<>();
     vars.add("y");
     uf.setVariation(vars);
     assertEquals("p.Lys23Tyr Hello", Uniprot.getDescription(uf));
 
+    // multiple variants generate an html description over more than one line
+    vars.add("W");
+    assertEquals("<html>p.Lys23Tyr<br/>&nbsp;&nbsp;p.Lys23Trp Hello</html>",
+            Uniprot.getDescription(uf));
+
+    /*
+     * indel cases
+     * up to 3 bases (original or variant) are shown using 3 letter code
+     */
+    vars.clear();
+    vars.add("KWE");
+    uf.setOriginal("KLS");
+    assertEquals(
+            "p.LysLeuSer23LysTrpGlu Hello",
+            Uniprot.getDescription(uf));
+
+    // adding a fourth original base switches to single letter code
+    uf.setOriginal("KLST");
+    assertEquals("p.KLST23LysTrpGlu Hello",
+            Uniprot.getDescription(uf));
+
+    // adding a fourth variant switches to a condensed representation
+    vars.clear();
+    vars.add("KWES");
+    assertEquals("p.KLST23KWES Hello", Uniprot.getDescription(uf));
+
     vars.clear();
     vars.add("z"); // unknown variant - fails gracefully
-    uf.setVariation(vars);
+    uf.setOriginal("K");
     assertEquals("p.Lys23z Hello", Uniprot.getDescription(uf));
 
     uf.setVariation(null); // variant missing - is ignored