JAL-3121 round trip GFF attributes including map-valued attributes
[jalview.git] / test / jalview / io / FeaturesFileTest.java
index 090de6f..5154ef2 100644 (file)
@@ -268,10 +268,11 @@ public class FeaturesFileTest
     AlignFrame af = new AlignFrame(al, 500, 500);
     Map<String, FeatureColourI> colours = af.getFeatureRenderer()
             .getFeatureColours();
-    // GFF3 uses '=' separator for name/value pairs in colum 9
+    // GFF3 uses '=' separator for name/value pairs in column 9
+    // comma (%2C) equals (%3D) or semi-colon (%3B) should be url-escaped in values
     String gffData = "##gff-version 3\n"
             + "FER_CAPAA\tuniprot\tMETAL\t39\t39\t0.0\t.\t.\t"
-            + "Note=Iron-sulfur (2Fe-2S);Note=another note;evidence=ECO:0000255|PROSITE-ProRule:PRU00465\n"
+            + "Note=Iron-sulfur (2Fe-2S);Note=another note;evidence=ECO%3B0000255%2CPROSITE%3DProRule:PRU00465\n"
             + "FER1_SOLLC\tuniprot\tPfam\t55\t130\t3.0\t.\t.\tID=$23";
     FeaturesFile featuresFile = new FeaturesFile(gffData,
             DataSourceType.PASTE);
@@ -289,9 +290,13 @@ public class FeaturesFileTest
     assertEquals(39, sf.end);
     assertEquals("uniprot", sf.featureGroup);
     assertEquals("METAL", sf.type);
-    assertEquals(
-            "Note=Iron-sulfur (2Fe-2S);Note=another note;evidence=ECO:0000255|PROSITE-ProRule:PRU00465",
-            sf.getValue("ATTRIBUTES"));
+    assertEquals(4, sf.otherDetails.size());
+    assertEquals("ECO;0000255,PROSITE=ProRule:PRU00465",
+            sf.otherDetails.get("evidence"));
+    assertEquals("Iron-sulfur (2Fe-2S),another note",
+            sf.otherDetails.get("Note"));
+    assertEquals(".", sf.otherDetails.get("STRAND"));
+    assertEquals(".", sf.otherDetails.get("!Phase"));
 
     // verify feature on FER1_SOLLC1
     sfs = al.getSequenceAt(2).getDatasetSequence().getSequenceFeatures();
@@ -593,9 +598,10 @@ public class FeaturesFileTest
                             "s3dm"));
     SequenceFeature sf = new SequenceFeature("Pfam", "", 20, 20, 0f,
             "Uniprot");
-    sf.setAttributes("x=y;black=white");
     sf.setStrand("+");
     sf.setPhase("2");
+    sf.setValue("x", "y");
+    sf.setValue("black", "white");
     al.getSequenceAt(1).addSequenceFeature(sf);
 
     /*
@@ -772,8 +778,8 @@ public class FeaturesFileTest
     String exported = featuresFile.printGffFormat(al.getSequencesArray(),
             fr, false, false);
     String expected = gffHeader
-            + "FER_CAPAA\tCath\tMETAL\t39\t39\t1.2\t.\t.\n"
-            + "FER_CAPAA\tCath\tMETAL\t41\t41\t0.6\t.\t.\n";
+            + "FER_CAPAA\tCath\tMETAL\t39\t39\t1.2\t.\t.\tclin_sig=Likely Pathogenic;AF=24\n"
+            + "FER_CAPAA\tCath\tMETAL\t41\t41\t0.6\t.\t.\tclin_sig=Benign;AF=46\n";
     assertEquals(expected, exported);
 
     /*
@@ -786,7 +792,8 @@ public class FeaturesFileTest
     fr.setColour("METAL", fc);
     exported = featuresFile.printGffFormat(al.getSequencesArray(), fr,
             false, false);
-    expected = gffHeader + "FER_CAPAA\tCath\tMETAL\t39\t39\t1.2\t.\t.\n";
+    expected = gffHeader
+            + "FER_CAPAA\tCath\tMETAL\t39\t39\t1.2\t.\t.\tclin_sig=Likely Pathogenic;AF=24\n";
     assertEquals(expected, exported);
 
     /*
@@ -795,8 +802,9 @@ public class FeaturesFileTest
     fc.setAboveThreshold(false);
     exported = featuresFile.printGffFormat(al.getSequencesArray(), fr,
             false, false);
-    expected = gffHeader + "FER_CAPAA\tCath\tMETAL\t39\t39\t1.2\t.\t.\n"
-            + "FER_CAPAA\tCath\tMETAL\t41\t41\t0.6\t.\t.\n";
+    expected = gffHeader
+            + "FER_CAPAA\tCath\tMETAL\t39\t39\t1.2\t.\t.\tclin_sig=Likely Pathogenic;AF=24\n"
+            + "FER_CAPAA\tCath\tMETAL\t41\t41\t0.6\t.\t.\tclin_sig=Benign;AF=46\n";
     assertEquals(expected, exported);
 
     /*
@@ -808,7 +816,8 @@ public class FeaturesFileTest
     fr.setFeatureFilter("METAL", filter);
     exported = featuresFile.printGffFormat(al.getSequencesArray(), fr,
             false, false);
-    expected = gffHeader + "FER_CAPAA\tCath\tMETAL\t41\t41\t0.6\t.\t.\n";
+    expected = gffHeader
+            + "FER_CAPAA\tCath\tMETAL\t41\t41\t0.6\t.\t.\tclin_sig=Benign;AF=46\n";
     assertEquals(expected, exported);
   }