X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=inline;f=test%2Fjalview%2Futil%2FDBRefUtilsTest.java;h=0ef3c2553d40b474601b12f0d65d6326d07fd021;hb=8c865b34fb48c55582c2c77609cd04f96819ceef;hp=b06132b130b619ca36b7c8dab9ab339a3018bc22;hpb=fddf3084802b37e5cee17829e32692a4aac3e60d;p=jalview.git
diff --git a/test/jalview/util/DBRefUtilsTest.java b/test/jalview/util/DBRefUtilsTest.java
index b06132b..0ef3c25 100644
--- a/test/jalview/util/DBRefUtilsTest.java
+++ b/test/jalview/util/DBRefUtilsTest.java
@@ -1,3 +1,23 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see .
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.util;
import static org.testng.AssertJUnit.assertEquals;
@@ -12,17 +32,28 @@ import jalview.datamodel.Mapping;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
+import java.util.List;
+
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class DBRefUtilsTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* Test the method that selects DBRefEntry items whose source is in a supplied
* list
*/
- @Test(groups ={ "Functional" })
+ @Test(groups = { "Functional" })
public void testSelectRefs()
{
assertNull(DBRefUtils.selectRefs(null, null));
@@ -32,10 +63,8 @@ public class DBRefUtilsTest
DBRefEntry ref2 = new DBRefEntry("UNIPROT", "1.2", "A12346");
// Source is converted to upper-case by this constructor!
DBRefEntry ref3 = new DBRefEntry("Uniprot", "1.2", "A12347");
- DBRefEntry[] dbrefs = new DBRefEntry[]
- { ref1, ref2, ref3 };
- String[] sources = new String[]
- { "EMBL", "UNIPROT" };
+ DBRefEntry[] dbrefs = new DBRefEntry[] { ref1, ref2, ref3 };
+ String[] sources = new String[] { "EMBL", "UNIPROT" };
DBRefEntry[] selected = DBRefUtils.selectRefs(dbrefs, sources);
assertEquals(3, selected.length);
@@ -43,30 +72,34 @@ public class DBRefUtilsTest
assertSame(ref2, selected[1]);
assertSame(ref3, selected[2]);
- sources = new String[]
- { "EMBL" };
+ sources = new String[] { "EMBL" };
selected = DBRefUtils.selectRefs(dbrefs, sources);
assertEquals(1, selected.length);
assertSame(ref1, selected[0]);
- sources = new String[]
- { "UNIPROT" };
+ sources = new String[] { "UNIPROT" };
selected = DBRefUtils.selectRefs(dbrefs, sources);
assertEquals(2, selected.length);
assertSame(ref2, selected[0]);
assertSame(ref3, selected[1]);
- sources = new String[]
- { "Uniprot", "EMBLCDS" };
+ sources = new String[] { "EMBLCDS" };
selected = DBRefUtils.selectRefs(dbrefs, sources);
assertNull(selected);
+
+ sources = new String[] { "embl", "uniprot" };
+ selected = DBRefUtils.selectRefs(dbrefs, sources);
+ assertEquals(3, selected.length);
+ assertSame(ref1, selected[0]);
+ assertSame(ref2, selected[1]);
+ assertSame(ref3, selected[2]);
}
/**
* Test the method that converts (currently three) database names to a
* canonical name (not case-sensitive)
*/
- @Test(groups ={ "Functional" })
+ @Test(groups = { "Functional" })
public void testGetCanonicalName()
{
assertNull(DBRefUtils.getCanonicalName(null));
@@ -81,9 +114,15 @@ public class DBRefUtilsTest
assertEquals("UNIPROT", DBRefUtils.getCanonicalName("UNIPROTKB/TREMBL"));
assertEquals("UNIPROTKB/SWISS-CHEESE",
DBRefUtils.getCanonicalName("UNIPROTKB/SWISS-CHEESE"));
+ assertEquals("ENSEMBL", DBRefUtils.getCanonicalName("Ensembl"));
+
+ // these are not 'known' to Jalview
+ assertEquals("PFAM", DBRefUtils.getCanonicalName("PFAM"));
+ assertEquals("pfam", DBRefUtils.getCanonicalName("pfam"));
+
}
- @Test(groups ={ "Functional" })
+ @Test(groups = { "Functional" })
public void testIsDasCoordinateSystem()
{
assertFalse(DBRefUtils.isDasCoordinateSystem(null, null));
@@ -106,8 +145,7 @@ public class DBRefUtilsTest
assertTrue(DBRefUtils.isDasCoordinateSystem("Uniprot", new DBRefEntry(
"UNIPROT", "v1", "a1")));
assertFalse(DBRefUtils.isDasCoordinateSystem("UNIPROTKB",
- new DBRefEntry(
- "pdb", "v1", "a1")));
+ new DBRefEntry("pdb", "v1", "a1")));
assertTrue(DBRefUtils.isDasCoordinateSystem("EMBL", new DBRefEntry(
"EMBL", "v1", "a1")));
@@ -118,38 +156,41 @@ public class DBRefUtilsTest
/**
* Test 'parsing' a DBRef - non PDB case
*/
- @Test(groups ={ "Functional" })
+ @Test(groups = { "Functional" })
public void testParseToDbRef()
{
SequenceI seq = new Sequence("Seq1", "ABCD");
DBRefEntry ref = DBRefUtils.parseToDbRef(seq, "EMBL", "1.2", "a7890");
- DBRefEntry[] refs = seq.getDBRef();
+ DBRefEntry[] refs = seq.getDBRefs();
assertEquals(1, refs.length);
assertSame(ref, refs[0]);
assertEquals("EMBL", ref.getSource());
assertEquals("1.2", ref.getVersion());
assertEquals("a7890", ref.getAccessionId());
- assertNull(seq.getPDBId());
+ assertTrue(seq.getAllPDBEntries().isEmpty());
}
/**
* Test 'parsing' a DBRef - Stockholm PDB format
*/
- @Test(groups ={ "Functional" })
+ @Test(groups = { "Functional" })
public void testParseToDbRef_PDB()
{
SequenceI seq = new Sequence("Seq1", "ABCD");
DBRefEntry ref = DBRefUtils.parseToDbRef(seq, "pdb", "1.2",
"1WRI A; 7-80;");
- DBRefEntry[] refs = seq.getDBRef();
+ // TODO: correct PDBEntry and PDB DBRef accessions need to be generated for
+ // PDB ref in Stockholm
+
+ DBRefEntry[] refs = seq.getDBRefs();
assertEquals(1, refs.length);
assertSame(ref, refs[0]);
assertEquals("PDB", ref.getSource());
assertEquals("1.2", ref.getVersion());
// DBRef id is pdbId + chain code
assertEquals("1WRIA", ref.getAccessionId());
- assertEquals(1, seq.getPDBId().size());
- PDBEntry pdbRef = seq.getPDBId().get(0);
+ assertEquals(1, seq.getAllPDBEntries().size());
+ PDBEntry pdbRef = seq.getAllPDBEntries().get(0);
assertEquals("1WRI", pdbRef.getId());
assertNull(pdbRef.getFile());
assertEquals("A", pdbRef.getChainCode());
@@ -160,7 +201,7 @@ public class DBRefUtilsTest
* Test the method that searches for matches references - case when we are
* matching a reference with no mappings
*/
- @Test(groups ={ "Functional" })
+ @Test(groups = { "Functional" })
public void testSearchRefs_noMapping()
{
DBRefEntry target = new DBRefEntry("EMBL", "2", "A1234");
@@ -173,50 +214,101 @@ public class DBRefUtilsTest
DBRefEntry ref4 = new DBRefEntry("EMBLCDS", "1", "A1234"); // no match
// ref5 matches although it has a mapping - ignored
DBRefEntry ref5 = new DBRefEntry("EMBL", "1", "A1234");
- ref5.setMap(new Mapping(new MapList(new int[]
- { 1, 1 }, new int[]
- { 1, 1 }, 1, 1)));
-
- DBRefEntry[] matches = DBRefUtils.searchRefs(new DBRefEntry[]
- { ref1, ref2, ref3, ref4, ref5 }, target);
- assertEquals(3, matches.length);
- assertSame(ref1, matches[0]);
- assertSame(ref2, matches[1]);
- assertSame(ref5, matches[2]);
+ ref5.setMap(new Mapping(new MapList(new int[] { 1, 1 }, new int[] { 1,
+ 1 }, 1, 1)));
+
+ List matches = DBRefUtils.searchRefs(new DBRefEntry[] {
+ ref1, ref2, ref3, ref4, ref5 }, target);
+ assertEquals(3, matches.size());
+ assertSame(ref1, matches.get(0));
+ assertSame(ref2, matches.get(1));
+ assertSame(ref5, matches.get(2));
}
/**
* Test the method that searches for matches references - case when we are
* matching a reference with a mapping
*/
- @Test(groups ={ "Functional" })
+ @Test(groups = { "Functional" })
public void testSearchRefs_withMapping()
{
DBRefEntry target = new DBRefEntry("EMBL", "2", "A1234");
- final Mapping map1 = new Mapping(new MapList(new int[]
- { 1, 1 }, new int[]
- { 1, 1 }, 1, 1));
+ final Mapping map1 = new Mapping(new MapList(new int[] { 1, 1 },
+ new int[] { 1, 1 }, 1, 1));
target.setMap(map1);
// these all match target iff mappings match
DBRefEntry ref1 = new DBRefEntry("EMBL", "1", "A1234"); // no map: matches
DBRefEntry ref2 = new DBRefEntry("EMBL", "1", "A1234"); // =map: matches
- final Mapping map2 = new Mapping(new MapList(new int[]
- { 1, 1 }, new int[]
- { 1, 1 }, 1, 1));
+ final Mapping map2 = new Mapping(new MapList(new int[] { 1, 1 },
+ new int[] { 1, 1 }, 1, 1));
ref2.setMap(map2);
// different map: no match
DBRefEntry ref3 = new DBRefEntry("EMBL", "1", "A1234");
- final Mapping map3 = new Mapping(new MapList(new int[]
- { 1, 1 }, new int[]
- { 1, 1 }, 2, 2));
+ final Mapping map3 = new Mapping(new MapList(new int[] { 1, 1 },
+ new int[] { 1, 1 }, 2, 2));
ref3.setMap(map3);
- DBRefEntry[] matches = DBRefUtils.searchRefs(new DBRefEntry[]
- { ref1, ref2, ref3 }, target);
- assertEquals(2, matches.length);
- assertSame(ref1, matches[0]);
- assertSame(ref2, matches[1]);
+ List matches = DBRefUtils.searchRefs(new DBRefEntry[] {
+ ref1, ref2, ref3 }, target);
+ assertEquals(2, matches.size());
+ assertSame(ref1, matches.get(0));
+ assertSame(ref2, matches.get(1));
+ }
+
+ /**
+ * Test the method that searches for matching references based on accession id
+ * only
+ */
+ @Test(groups = { "Functional" })
+ public void testSearchRefs_accessionid()
+ {
+
+ DBRefEntry ref1 = new DBRefEntry("Uniprot", "1", "A1234"); // matches
+ DBRefEntry ref2 = new DBRefEntry("embl", "1", "A1234"); // matches
+ // constructor does not upper-case accession id
+ DBRefEntry ref3 = new DBRefEntry("EMBL", "1", "a1234"); // no match
+ DBRefEntry ref4 = new DBRefEntry("EMBLCDS", "1", "A1235"); // no match
+ // ref5 matches although it has a mapping - ignored
+ DBRefEntry ref5 = new DBRefEntry("EMBL", "1", "A1234");
+ ref5.setMap(new Mapping(new MapList(new int[] { 1, 1 }, new int[] { 1,
+ 1 }, 1, 1)));
+
+ DBRefEntry[] dbrefs = new DBRefEntry[] { ref1, ref2, ref3, ref4, ref5 };
+ List matches = DBRefUtils.searchRefs(dbrefs, "A1234");
+ assertEquals(3, matches.size());
+ assertSame(ref1, matches.get(0));
+ assertSame(ref2, matches.get(1));
+ assertSame(ref5, matches.get(2));
+ }
+
+ /**
+ * Test the method that searches for matches references - case when we are
+ * matching a reference with null (any) accession id
+ */
+ @Test(groups = { "Functional" })
+ public void testSearchRefs_wildcardAccessionid()
+ {
+ DBRefEntry target = new DBRefEntry("EMBL", "2", null);
+
+ DBRefEntry ref1 = new DBRefEntry("EMBL", "1", "A1234"); // matches
+ // constructor changes embl to EMBL
+ DBRefEntry ref2 = new DBRefEntry("embl", "1", "A1235"); // matches
+ // constructor does not upper-case accession id
+ DBRefEntry ref3 = new DBRefEntry("EMBL", "1", "A1236"); // matches
+ DBRefEntry ref4 = new DBRefEntry("EMBLCDS", "1", "A1234"); // no match
+ // ref5 matches although it has a mapping - ignored
+ DBRefEntry ref5 = new DBRefEntry("EMBL", "1", "A1237");
+ ref5.setMap(new Mapping(new MapList(new int[] { 1, 1 }, new int[] { 1,
+ 1 }, 1, 1)));
+
+ List matches = DBRefUtils.searchRefs(new DBRefEntry[] {
+ ref1, ref2, ref3, ref4, ref5 }, target);
+ assertEquals(4, matches.size());
+ assertSame(ref1, matches.get(0));
+ assertSame(ref2, matches.get(1));
+ assertSame(ref3, matches.get(2));
+ assertSame(ref5, matches.get(3));
}
}