X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fws%2FSequenceFetcherTest.java;h=c643d6baa88f457e26b3f4c4d0c9870042d74ded;hb=dd91395fac6acce3696a962e03fb932d1b8c66d5;hp=32afd5f7ab3beaa5a328e576e31fcdac3f676fc8;hpb=5f4e1e4c330b045e9c8bce28ee132a0fca3834d8;p=jalview.git diff --git a/test/jalview/ws/SequenceFetcherTest.java b/test/jalview/ws/SequenceFetcherTest.java index 32afd5f..c643d6b 100644 --- a/test/jalview/ws/SequenceFetcherTest.java +++ b/test/jalview/ws/SequenceFetcherTest.java @@ -30,10 +30,14 @@ import jalview.ws.seqfetcher.ASequenceFetcher; import jalview.ws.seqfetcher.DbSourceProxy; import java.util.Enumeration; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Vector; +import org.testng.Assert; import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; public class SequenceFetcherTest { @@ -45,33 +49,57 @@ public class SequenceFetcherTest JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); } + @Test(groups = "Functional") + public void testNoDuplicatesInFetchDbRefs() + { + Map> seen = new HashMap<>(); + jalview.ws.SequenceFetcher sfetcher = new jalview.ws.SequenceFetcher(); + String dupes = ""; + // for (String src : sfetcher.getOrderedSupportedSources()) + for (String src : sfetcher.getNonAlignmentSources()) + { + List seenitem = seen.get(src); + if (seenitem != null) + { + dupes += (dupes.length() > 0 ? "," : "") + src; + } + else + { + seen.put(src, sfetcher.getSourceProxy(src)); + } + } + if (dupes.length() > 0) + { + Assert.fail("Duplicate sources : " + dupes); + } + } + /** * simple run method to test dbsources. * * @param argv + * @j2sIgnore */ public static void main(String[] argv) { - // TODO: extracted from SequenceFetcher - convert to proper unit test with + // TODO: extracted from SequenceFetcher - convert to network dependent + // functional integration test with // assertions String usage = "SequenceFetcher.main [-nodas] [ []]\n" + "With no arguments, all DbSources will be queried with their test Accession number.\n" + "With one argument, the argument will be resolved to one or more db sources and each will be queried with their test accession only.\n" - + "If given two arguments, SequenceFetcher will try to find the DbFetcher corresponding to and retrieve from it.\n" - + "The -nodas option will exclude DAS sources from the database fetchers Jalview will try to use."; - boolean withDas = true; - if (argv != null && argv.length > 0 - && argv[0].toLowerCase().startsWith("-nodas")) + + "If given two arguments, SequenceFetcher will try to find the DbFetcher corresponding to and retrieve from it."; + + if (argv != null && argv.length > 0) { - withDas = false; String targs[] = new String[argv.length - 1]; System.arraycopy(argv, 1, targs, 0, targs.length); argv = targs; } if (argv != null && argv.length > 0) { - List sps = new SequenceFetcher(withDas) + List sps = new SequenceFetcher() .getSourceProxy(argv[0]); if (sps != null) @@ -102,7 +130,7 @@ public class SequenceFetcherTest System.out.println(usage); return; } - ASequenceFetcher sfetcher = new SequenceFetcher(withDas); + ASequenceFetcher sfetcher = new SequenceFetcher(); String[] dbSources = sfetcher.getSupportedDb(); for (int dbsource = 0; dbsource < dbSources.length; dbsource++) { @@ -124,7 +152,7 @@ public class SequenceFetcherTest String testQuery) { AlignmentI ds = null; - Vector noProds = new Vector(); + Vector noProds = new Vector<>(); System.out.println("Source: " + sp.getDbName() + " (" + db + "): retrieving test:" + sp.getTestQuery()); { @@ -148,23 +176,24 @@ public class SequenceFetcherTest System.out.println("Type: " + source); SequenceI[] prod = crossRef.findXrefSequences(source, dna) .getSequencesArray(); - System.out.println("Found " - + ((prod == null) ? "no" : "" + prod.length) - + " products"); + System.out.println( + "Found " + ((prod == null) ? "no" : "" + prod.length) + + " products"); if (prod != null) { for (int p = 0; p < prod.length; p++) { - System.out.println("Prod " + p + ": " - + prod[p].getDisplayId(true)); + System.out.println( + "Prod " + p + ": " + prod[p].getDisplayId(true)); } } } } else { - noProds.addElement((dna ? new Object[] { al, al } - : new Object[] { al })); + noProds.addElement( + (dna ? new Object[] + { al, al } : new Object[] { al })); } } @@ -238,8 +267,8 @@ public class SequenceFetcherTest // present) for (int p = 0; p < prod.length; p++) { - System.out.println("Prod " + p + ": " - + prod[p].getDisplayId(true)); + System.out.println( + "Prod " + p + ": " + prod[p].getDisplayId(true)); } } }