X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Futil%2FDBRefUtilsTest.java;h=d4574c0d3be32c489ac283be57e2dd5cdeba9283;hb=279c6495df1a0de231600a2d283098c7411c4730;hp=b06132b130b619ca36b7c8dab9ab339a3018bc22;hpb=fddf3084802b37e5cee17829e32692a4aac3e60d;p=jalview.git
diff --git a/test/jalview/util/DBRefUtilsTest.java b/test/jalview/util/DBRefUtilsTest.java
index b06132b..d4574c0 100644
--- a/test/jalview/util/DBRefUtilsTest.java
+++ b/test/jalview/util/DBRefUtilsTest.java
@@ -1,7 +1,26 @@
+/*
+ * 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;
-import static org.testng.AssertJUnit.assertFalse;
import static org.testng.AssertJUnit.assertNull;
import static org.testng.AssertJUnit.assertSame;
import static org.testng.AssertJUnit.assertTrue;
@@ -12,17 +31,29 @@ import jalview.datamodel.Mapping;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
+import java.util.Arrays;
+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,41 +63,45 @@ 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[] selected = DBRefUtils.selectRefs(dbrefs, sources);
- assertEquals(3, selected.length);
- assertSame(ref1, selected[0]);
- assertSame(ref2, selected[1]);
- assertSame(ref3, selected[2]);
-
- sources = new String[]
- { "EMBL" };
+ List dbrefs = Arrays
+ .asList(new DBRefEntry[]
+ { ref1, ref2, ref3 });
+ String[] sources = new String[] { "EMBL", "UNIPROT" };
+
+ List selected = DBRefUtils.selectRefs(dbrefs, sources);
+ assertEquals(3, selected.size());
+ assertSame(ref1, selected.get(0));
+ assertSame(ref2, selected.get(1));
+ assertSame(ref3, selected.get(2));
+
+ sources = new String[] { "EMBL" };
selected = DBRefUtils.selectRefs(dbrefs, sources);
- assertEquals(1, selected.length);
- assertSame(ref1, selected[0]);
+ assertEquals(1, selected.size());
+ assertSame(ref1, selected.get(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]);
+ assertEquals(2, selected.size());
+ assertSame(ref2, selected.get(0));
+ assertSame(ref3, selected.get(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.size());
+ assertSame(ref1, selected.get(0));
+ assertSame(ref2, selected.get(1));
+ assertSame(ref3, selected.get(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));
@@ -75,81 +110,65 @@ public class DBRefUtilsTest
assertEquals("PDB", DBRefUtils.getCanonicalName("Pdb"));
assertEquals("UNIPROT",
DBRefUtils.getCanonicalName("uniprotkb/swiss-prot"));
- assertEquals("UNIPROT", DBRefUtils.getCanonicalName("uniprotkb/trembl"));
+ assertEquals("UNIPROT",
+ DBRefUtils.getCanonicalName("uniprotkb/trembl"));
assertEquals("UNIPROT",
DBRefUtils.getCanonicalName("UNIPROTKB/SWISS-PROT"));
- assertEquals("UNIPROT", DBRefUtils.getCanonicalName("UNIPROTKB/TREMBL"));
+ 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" })
- public void testIsDasCoordinateSystem()
- {
- assertFalse(DBRefUtils.isDasCoordinateSystem(null, null));
- assertFalse(DBRefUtils.isDasCoordinateSystem("pdbresnum", null));
- assertFalse(DBRefUtils.isDasCoordinateSystem(null, new DBRefEntry(
- "PDB", "v1", "a1")));
-
- assertTrue(DBRefUtils.isDasCoordinateSystem("pdbresnum",
- new DBRefEntry("PDB", "v1", "a1")));
- assertTrue(DBRefUtils.isDasCoordinateSystem("PDBRESNUM",
- new DBRefEntry("PDB", "v1", "a1")));
- // "pdb" is converted to upper-case in DBRefEntry constructor
- assertTrue(DBRefUtils.isDasCoordinateSystem("pdbresnum",
- new DBRefEntry("pdb", "v1", "a1")));
- assertFalse(DBRefUtils.isDasCoordinateSystem("pdb", new DBRefEntry(
- "pdb", "v1", "a1")));
-
- assertTrue(DBRefUtils.isDasCoordinateSystem("UNIPROT", new DBRefEntry(
- "Uniprot", "v1", "a1")));
- assertTrue(DBRefUtils.isDasCoordinateSystem("Uniprot", new DBRefEntry(
- "UNIPROT", "v1", "a1")));
- assertFalse(DBRefUtils.isDasCoordinateSystem("UNIPROTKB",
- new DBRefEntry(
- "pdb", "v1", "a1")));
-
- assertTrue(DBRefUtils.isDasCoordinateSystem("EMBL", new DBRefEntry(
- "EMBL", "v1", "a1")));
- assertTrue(DBRefUtils.isDasCoordinateSystem("embl", new DBRefEntry(
- "embl", "v1", "a1")));
}
/**
* 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();
- assertEquals(1, refs.length);
- assertSame(ref, refs[0]);
+ List refs = seq.getDBRefs();
+ assertEquals(1, refs.size());
+ assertSame(ref, refs.get(0));
assertEquals("EMBL", ref.getSource());
assertEquals("1.2", ref.getVersion());
assertEquals("a7890", ref.getAccessionId());
- assertNull(seq.getPDBId());
+ assertTrue(seq.getAllPDBEntries().isEmpty());
+ SequenceI seq2 = new Sequence("Seq2", "ABCD");
+ // Check that whitespace doesn't confuse parseToDbRef
+ DBRefEntry ref2 = DBRefUtils.parseToDbRef(seq2, "EMBL", "1.2",
+ " a7890");
+ assertEquals(ref, ref2);
}
/**
* 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();
- assertEquals(1, refs.length);
- assertSame(ref, refs[0]);
+ // TODO: correct PDBEntry and PDB DBRef accessions need to be generated for
+ // PDB ref in Stockholm
+
+ List refs = seq.getDBRefs();
+ assertEquals(1, refs.size());
+ assertSame(ref, refs.get(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 +179,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 +192,114 @@ 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(Arrays.asList(new DBRefEntry[]
+ { ref1, ref2, ref3, ref4, ref5 }), target,
+ DBRefUtils.SEARCH_MODE_FULL);
+ 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(Arrays.asList(new DBRefEntry[]
+ { ref1, ref2, ref3 }), target, DBRefUtils.SEARCH_MODE_FULL);
+ 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)));
+
+ List dbrefs = Arrays
+ .asList(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(Arrays.asList(new DBRefEntry[]
+ { ref1, ref2, ref3, ref4, ref5 }), target,
+ DBRefUtils.SEARCH_MODE_FULL);
+ assertEquals(4, matches.size());
+ assertSame(ref1, matches.get(0));
+ assertSame(ref2, matches.get(1));
+ assertSame(ref3, matches.get(2));
+ assertSame(ref5, matches.get(3));
}
}