+ List<DBRefEntry> 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<DBRefEntry> dbrefs = Arrays
+ .asList(new DBRefEntry[]
+ { ref1, ref2, ref3, ref4, ref5 });
+ List<DBRefEntry> 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<DBRefEntry> 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));