X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fdatamodel%2FSequenceFeatureTest.java;h=bd5e9aca89da644ddd4f20559d0f43765c13b772;hb=08c7bee16c16563cc7cec7ea4d336b3e0c4c937a;hp=c95597928b4490fa0c72683f84054c7f93f4b57e;hpb=baa077bd19420018433d78927aad3ad139e47351;p=jalview.git diff --git a/test/jalview/datamodel/SequenceFeatureTest.java b/test/jalview/datamodel/SequenceFeatureTest.java index c955979..bd5e9ac 100644 --- a/test/jalview/datamodel/SequenceFeatureTest.java +++ b/test/jalview/datamodel/SequenceFeatureTest.java @@ -26,11 +26,15 @@ import static org.testng.AssertJUnit.assertNull; import static org.testng.AssertJUnit.assertSame; import static org.testng.AssertJUnit.assertTrue; -import jalview.gui.JvOptionPane; +import java.util.ArrayList; +import java.util.List; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; +import jalview.gui.JvOptionPane; +import jalview.util.MapList; + public class SequenceFeatureTest { @@ -44,11 +48,11 @@ public class SequenceFeatureTest @Test(groups = { "Functional" }) public void testCopyConstructors() { - SequenceFeature sf1 = new SequenceFeature("type", "desc", 22, 33, - 12.5f, "group"); + SequenceFeature sf1 = new SequenceFeature("type", "desc", 22, 33, 12.5f, + "group"); sf1.setValue("STRAND", "+"); sf1.setValue("Note", "Testing"); - Integer count = new Integer(7); + Integer count = Integer.valueOf(7); sf1.setValue("Count", count); SequenceFeature sf2 = new SequenceFeature(sf1); @@ -79,8 +83,8 @@ public class SequenceFeatureTest /* * copy constructor modifying type/begin/end/group/score */ - SequenceFeature sf4 = new SequenceFeature(sf1, "Disulfide bond", 12, - 15, "group3", -9.1f); + SequenceFeature sf4 = new SequenceFeature(sf1, "Disulfide bond", 12, 15, + "group3", -9.1f); assertEquals("Disulfide bond", sf4.getType()); assertTrue(sf4.isContactFeature()); assertEquals("desc", sf4.getDescription()); @@ -100,13 +104,13 @@ public class SequenceFeatureTest @Test(groups = { "Functional" }) public void testGetValue() { - SequenceFeature sf1 = new SequenceFeature("type", "desc", 22, 33, - 12.5f, "group"); + SequenceFeature sf1 = new SequenceFeature("type", "desc", 22, 33, 12.5f, + "group"); sf1.setValue("STRAND", "+"); assertEquals("+", sf1.getValue("STRAND")); assertNull(sf1.getValue("strand")); // case-sensitive assertEquals(".", sf1.getValue("unknown", ".")); - Integer i = new Integer(27); + Integer i = Integer.valueOf(27); assertSame(i, sf1.getValue("Unknown", i)); } @@ -133,15 +137,15 @@ public class SequenceFeatureTest @Test(groups = { "Functional" }) public void testEqualsAndHashCode() { - SequenceFeature sf1 = new SequenceFeature("type", "desc", 22, 33, - 12.5f, "group"); + SequenceFeature sf1 = new SequenceFeature("type", "desc", 22, 33, 12.5f, + "group"); sf1.setValue("ID", "id"); sf1.setValue("Name", "name"); sf1.setValue("Parent", "parent"); sf1.setStrand("+"); sf1.setPhase("1"); - SequenceFeature sf2 = new SequenceFeature("type", "desc", 22, 33, - 12.5f, "group"); + SequenceFeature sf2 = new SequenceFeature("type", "desc", 22, 33, 12.5f, + "group"); sf2.setValue("ID", "id"); sf2.setValue("Name", "name"); sf2.setValue("Parent", "parent"); @@ -154,10 +158,10 @@ public class SequenceFeatureTest assertEquals(sf1.hashCode(), sf2.hashCode()); // changing type breaks equals: - SequenceFeature sf3 = new SequenceFeature("type", "desc", 22, 33, - 12.5f, "group"); - SequenceFeature sf4 = new SequenceFeature("Type", "desc", 22, 33, - 12.5f, "group"); + SequenceFeature sf3 = new SequenceFeature("type", "desc", 22, 33, 12.5f, + "group"); + SequenceFeature sf4 = new SequenceFeature("Type", "desc", 22, 33, 12.5f, + "group"); assertFalse(sf3.equals(sf4)); // changing description breaks equals: @@ -191,7 +195,8 @@ public class SequenceFeatureTest // changing start position breaks equals: int restorei = sf2.getBegin(); - sf2 = new SequenceFeature(sf2, 21, sf2.getEnd(), sf2.getFeatureGroup(), sf2.getScore()); + sf2 = new SequenceFeature(sf2, 21, sf2.getEnd(), sf2.getFeatureGroup(), + sf2.getScore()); assertFalse(sf1.equals(sf2)); sf2 = new SequenceFeature(sf2, restorei, sf2.getEnd(), sf2.getFeatureGroup(), sf2.getScore()); @@ -206,9 +211,11 @@ public class SequenceFeatureTest // changing feature group breaks equals: restores = sf2.getFeatureGroup(); - sf2 = new SequenceFeature(sf2, sf2.getBegin(), sf2.getEnd(), "Group", sf2.getScore()); + sf2 = new SequenceFeature(sf2, sf2.getBegin(), sf2.getEnd(), "Group", + sf2.getScore()); assertFalse(sf1.equals(sf2)); - sf2 = new SequenceFeature(sf2, sf2.getBegin(), sf2.getEnd(), restores, sf2.getScore()); + sf2 = new SequenceFeature(sf2, sf2.getBegin(), sf2.getEnd(), restores, + sf2.getScore()); // changing ID breaks equals: restores = (String) sf2.getValue("ID"); @@ -277,43 +284,93 @@ public class SequenceFeatureTest @Test(groups = { "Functional" }) public void testGetDetailsReport() { + SequenceI seq = new Sequence("TestSeq", "PLRFQMD"); + String seqName = seq.getName(); + // single locus, no group, no score - SequenceFeature sf = new SequenceFeature("variant", "G,C", 22, 22, null); - String expected = "
" - + "" + SequenceFeature sf = new SequenceFeature("variant", "G,C", 22, 22, + null); + String expected = "
Typevariant
Start/end22
" + + "" + "
LocationTestSeq22
Typevariant
DescriptionG,C
"; - assertEquals(expected, sf.getDetailsReport()); + assertEquals(expected, sf.getDetailsReport(seqName, null)); // contact feature sf = new SequenceFeature("Disulphide Bond", "a description", 28, 31, null); - expected = "
" - + "" + expected = "
TypeDisulphide Bond
Start/end28:31
" + + "" + "
LocationTestSeq28:31
TypeDisulphide Bond
Descriptiona description
"; - assertEquals(expected, sf.getDetailsReport()); + assertEquals(expected, sf.getDetailsReport(seqName, null)); - sf = new SequenceFeature("variant", "G,C", 22, 33, - 12.5f, "group"); + sf = new SequenceFeature("variant", "G,C", 22, 33, 12.5f, "group"); sf.setValue("Parent", "ENSG001"); sf.setValue("Child", "ENSP002"); - expected = "
" - + "" + expected = "
Typevariant
Start/end22-33
" + + "" + "" + "" + "" + "" + "
LocationTestSeq22-33
Typevariant
DescriptionG,C
Score12.5
Groupgroup
ChildENSP002
ParentENSG001
"; - assertEquals(expected, sf.getDetailsReport()); + assertEquals(expected, sf.getDetailsReport(seqName, null)); /* * feature with embedded html link in description */ String desc = "Fer2 Status: True Positive Pfam 8_8"; sf = new SequenceFeature("Pfam", desc, 8, 83, "Uniprot"); - expected = "
" - + "" + expected = "
TypePfam
Start/end8-83
" + + "" + "" + "
LocationTestSeq8-83
TypePfam
DescriptionFer2 Status: True Positive Pfam 8_8
GroupUniprot
"; - assertEquals(expected, sf.getDetailsReport()); + assertEquals(expected, sf.getDetailsReport(seqName, null)); + } + + /** + * Feature details report for a virtual feature should include original and + * mapped locations, and also derived peptide consequence if it can be + * determined + */ + @Test(groups = { "Functional" }) + public void testGetDetailsReport_virtualFeature() + { + SequenceI cds = new Sequence("Cds/101-121", "CCTttgAGAtttCAAatgGAT"); + SequenceI seq = new Sequence("TestSeq/8-14", "PLRFQMD"); + MapList map = new MapList(new int[] { 101, 118 }, new int[] { 8, 13 }, + 3, 1); + Mapping mapping = new Mapping(seq, map); + List features = new ArrayList<>(); + // vary ttg (Leu) to ttc (Phe) + SequenceFeature sf = new SequenceFeature("variant", "G,C", 106, 106, + null); + sf.setValue("alleles", "G,C"); // needed to compute peptide consequence! + features.add(sf); + + MappedFeatures mf = new MappedFeatures(mapping, cds, 9, 'L', features); + + String expected = "
" + + "" + + "" + + "" + + "" + + "" + + "
LocationCds106
Peptide LocationTestSeq9
Typevariant
DescriptionG,C
ConsequenceTranslated by Jalviewp.Leu9Phe
allelesG,C
"; + + assertEquals(expected, sf.getDetailsReport(seq.getName(), mf)); + + + /* + * exon feature extending beyond mapped range; mapped location should be + * restricted to peptide mapped range limit i.e. 10-13 + */ + SequenceFeature sf2 = new SequenceFeature("exon", "exon 1", 109, 230, null); + features.add(sf2); + expected = "
" + + "" + + "" + + "" + + "
LocationCds109-230
Peptide LocationTestSeq10-13
Typeexon
Descriptionexon 1
"; + assertEquals(expected, sf2.getDetailsReport(seq.getName(), mf)); } }