X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fio%2FCrossRef2xmlTests.java;h=34cc17f07ad04195a95cb17ce5bedc9de92a437e;hb=1140532d01b32b648e7e5b17ea717ae790625f8f;hp=53a0acb864ace38b2ef6d5c462cf9cc49ce076ff;hpb=8669979d57e2019889afaefafe65b945ae7c172d;p=jalview.git diff --git a/test/jalview/io/CrossRef2xmlTests.java b/test/jalview/io/CrossRef2xmlTests.java index 53a0acb..34cc17f 100644 --- a/test/jalview/io/CrossRef2xmlTests.java +++ b/test/jalview/io/CrossRef2xmlTests.java @@ -20,18 +20,9 @@ */ package jalview.io; -import jalview.analysis.CrossRef; -import jalview.api.AlignmentViewPanel; -import jalview.datamodel.AlignedCodonFrame; -import jalview.datamodel.AlignmentI; -import jalview.datamodel.AlignmentTest; -import jalview.datamodel.SequenceI; -import jalview.gui.AlignFrame; -import jalview.gui.CrossRefAction; -import jalview.gui.Desktop; -import jalview.gui.JvOptionPane; -import jalview.project.Jalview2XML; -import jalview.util.DBRefUtils; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNotNull; +import static org.testng.Assert.assertTrue; import java.io.File; import java.io.IOException; @@ -46,6 +37,19 @@ import org.testng.annotations.BeforeClass; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; +import jalview.analysis.CrossRef; +import jalview.api.AlignmentViewPanel; +import jalview.datamodel.AlignedCodonFrame; +import jalview.datamodel.AlignmentI; +import jalview.datamodel.AlignmentTest; +import jalview.datamodel.SequenceI; +import jalview.gui.AlignFrame; +import jalview.gui.CrossRefAction; +import jalview.gui.Desktop; +import jalview.gui.JvOptionPane; +import jalview.gui.SequenceFetcher; +import jalview.project.Jalview2XML; +import jalview.util.DBRefUtils; import junit.extensions.PA; @Test(singleThreaded = true) @@ -60,6 +64,51 @@ public class CrossRef2xmlTests extends Jalview2xmlBase JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); } + @Test(groups = { "Functional" }, enabled = true) + public void openCrossrefsForEnsemblTwice() + { + AlignFrame af = new FileLoader(false).LoadFileWaitTillLoaded( + "examples/testdata/CantShowEnsemblCrossrefsTwice.jvp", + DataSourceType.FILE); + assertNotNull(af, "Couldn't load test's project."); + AlignmentI origAlig = af.getViewport().getAlignment(); + List source = new CrossRef(origAlig.getSequencesArray(), + origAlig.getDataset()).findXrefSourcesForSequences(true); + assertEquals(source.size(), 1, "Expected just one crossref to show."); + List views; + { + // try to show once - in a code block so handler is forgotten about + CrossRefAction xref1 = CrossRefAction.getHandlerFor( + origAlig.getSequencesArray(), true, source.get(0), af); + try + { + xref1.run(); + views = (List) PA.getValue(xref1, "xrefViews"); + assertTrue(views.size() > 0, + "Couldn't get cross ref on first attempt (SERIOUS FAIL)."); + } catch (Exception ex) + { + Assert.fail("Unexpected Exception for first xref action", ex); + } + } + + views = null; + // now just try it again + CrossRefAction xref2 = CrossRefAction.getHandlerFor( + origAlig.getSequencesArray(), true, source.get(0), af); + try + { + xref2.run(); + views = (List) PA.getValue(xref2, "xrefViews"); + assertTrue(views.size() > 0, + "Couldn't get cross ref on second attempt (SERIOUS FAIL)."); + } catch (Exception ex) + { + Assert.fail("Unexpected Exception for second xref action", ex); + } + // TODO : check that both views contain the same data + } + @DataProvider(name = "initialAccessions") static Object[][] getAccessions() { @@ -88,9 +137,10 @@ public class CrossRef2xmlTests extends Jalview2xmlBase List failedXrefMenuItems = new ArrayList<>(); List failedProjectRecoveries = new ArrayList<>(); // only search for ensembl or Uniprot crossrefs - List limit=Arrays.asList(new String[] { - DBRefUtils.getCanonicalName("ENSEMBL"), - DBRefUtils.getCanonicalName("Uniprot")}); + List limit = Arrays + .asList(new String[] + { DBRefUtils.getCanonicalName("ENSEMBL"), + DBRefUtils.getCanonicalName("Uniprot") }); // for every set of db queries // retrieve db query // verify presence of expected xrefs @@ -111,326 +161,331 @@ public class CrossRef2xmlTests extends Jalview2xmlBase List keyseq = new ArrayList<>(); Map savedProjects = new HashMap<>(); -// for (String[] did : new String[][] { { "UNIPROT", "P00338" } }) -// { - // pass counters - 0 - first pass, 1 means retrieve project rather than - // perform action - int pass1 = 0, pass2 = 0, pass3 = 0; - // each do loop performs two iterations in the first outer loop pass, but - // only performs one iteration on the second outer loop - // ie. pass 1 = 0 {pass 2= 0 { pass 3 = 0,1 }, pass 2=1 { pass 3 = 0 }}, 1 - // { pass 2 = 0 { pass 3 = 0 } } - do + // for (String[] did : new String[][] { { "UNIPROT", "P00338" } }) + // { + // pass counters - 0 - first pass, 1 means retrieve project rather than + // perform action + int pass1 = 0, pass2 = 0, pass3 = 0; + // each do loop performs two iterations in the first outer loop pass, but + // only performs one iteration on the second outer loop + // ie. pass 1 = 0 {pass 2= 0 { pass 3 = 0,1 }, pass 2=1 { pass 3 = 0 }}, 1 + // { pass 2 = 0 { pass 3 = 0 } } + do + { + String first = forSource + " " + forAccession;// did[0] + " " + did[1]; + AlignFrame af = null; + boolean dna; + AlignmentI retral; + AlignmentI dataset; + SequenceI[] seqs; + List ptypes = null; + if (pass1 == 0) { - String first = forSource + " " + forAccession;//did[0] + " " + did[1]; - AlignFrame af = null; - boolean dna; - AlignmentI retral; - AlignmentI dataset; - SequenceI[] seqs; - List ptypes = null; - if (pass1 == 0) - { - // retrieve dbref + // retrieve dbref - List afs = jalview.gui.SequenceFetcher.fetchAndShow( + SequenceFetcher sf = new SequenceFetcher(Desktop.instance, forSource, forAccession); - // did[0], did[1]); - if (afs.size() == 0) - { - failedDBRetr.add("Didn't retrieve " + first); - break; - } - keyseq.add(first); - af = afs.get(0); - - // verify references for retrieved data - AlignmentTest.assertAlignmentDatasetRefs(af.getViewport() - .getAlignment(), "Pass (" + pass1 + "," + pass2 + "," - + pass3 + "): Fetch " + first + ":"); - assertDatasetIsNormalisedKnownDefect(af.getViewport() - .getAlignment(), "Pass (" + pass1 + "," + pass2 + "," - + pass3 + "): Fetch " + first + ":"); - dna = af.getViewport().getAlignment().isNucleotide(); - retral = af.getViewport().getAlignment(); - dataset = retral.getDataset(); - seqs = retral.getSequencesArray(); - - } - else + sf.run(); + AlignFrame[] afs = Desktop.getDesktopAlignFrames(); + if (afs.length == 0) { + failedDBRetr.add("Didn't retrieve " + first); + break; + } + keyseq.add(first); + af = afs[0]; + + // verify references for retrieved data + AlignmentTest.assertAlignmentDatasetRefs( + af.getViewport().getAlignment(), "Pass (" + pass1 + "," + + pass2 + "," + pass3 + "): Fetch " + first + ":"); + assertDatasetIsNormalisedKnownDefect( + af.getViewport().getAlignment(), "Pass (" + pass1 + "," + + pass2 + "," + pass3 + "): Fetch " + first + ":"); + dna = af.getViewport().getAlignment().isNucleotide(); + retral = af.getViewport().getAlignment(); + dataset = retral.getDataset(); + seqs = retral.getSequencesArray(); + + } + else + { + if (Desktop.instance != null) Desktop.instance.closeAll_actionPerformed(null); - // recover stored project - af = new FileLoader(false).LoadFileWaitTillLoaded(savedProjects - .get(first).toString(), DataSourceType.FILE); - System.out.println("Recovered view for '" + first + "' from '" - + savedProjects.get(first).toString() + "'"); - dna = af.getViewport().getAlignment().isNucleotide(); - retral = af.getViewport().getAlignment(); - dataset = retral.getDataset(); - seqs = retral.getSequencesArray(); - - // verify references for recovered data - AlignmentTest.assertAlignmentDatasetRefs(af.getViewport() - .getAlignment(), "Pass (" + pass1 + "," + pass2 + "," - + pass3 + "): Recover " + first + ":"); - assertDatasetIsNormalisedKnownDefect(af.getViewport() - .getAlignment(), "Pass (" + pass1 + "," + pass2 + "," - + pass3 + "): Recover " + first + ":"); + // recover stored project + af = new FileLoader(false).LoadFileWaitTillLoaded( + savedProjects.get(first).toString(), DataSourceType.FILE); + System.out.println("Recovered view for '" + first + "' from '" + + savedProjects.get(first).toString() + "'"); + dna = af.getViewport().getAlignment().isNucleotide(); + retral = af.getViewport().getAlignment(); + dataset = retral.getDataset(); + seqs = retral.getSequencesArray(); + + // verify references for recovered data + AlignmentTest.assertAlignmentDatasetRefs( + af.getViewport().getAlignment(), + "Pass (" + pass1 + "," + pass2 + "," + pass3 + "): Recover " + + first + ":"); + assertDatasetIsNormalisedKnownDefect( + af.getViewport().getAlignment(), + "Pass (" + pass1 + "," + pass2 + "," + pass3 + "): Recover " + + first + ":"); - } + } - // store project on first pass, compare next pass - stringify(dbtoviewBit, savedProjects, first, af.alignPanel); + // store project on first pass, compare next pass + stringify(dbtoviewBit, savedProjects, first, af.alignPanel); - ptypes = (seqs == null || seqs.length == 0) ? null : new CrossRef( - seqs, dataset).findXrefSourcesForSequences(dna); - filterDbRefs(ptypes, limit); - - // start of pass2: retrieve each cross-ref for fetched or restored - // project. - do // first cross ref and recover crossref loop - { + ptypes = (seqs == null || seqs.length == 0) ? null + : new CrossRef(seqs, dataset) + .findXrefSourcesForSequences(dna); + filterDbRefs(ptypes, limit); + + // start of pass2: retrieve each cross-ref for fetched or restored + // project. + do // first cross ref and recover crossref loop + { - for (String db : ptypes) + for (String db : ptypes) + { + // counter for splitframe views retrieved via crossref + int firstcr_ap = 0; + // build next key so we an retrieve all views + String nextxref = first + " -> " + db + "{" + firstcr_ap + "}"; + // perform crossref action, or retrieve stored project + List cra_views = new ArrayList<>(); + CrossRefAction cra = null; + + if (pass2 == 0) + { // retrieve and show cross-refs in this thread + cra = CrossRefAction.getHandlerFor(seqs, dna, db, af); + cra.run(); + cra_views = (List) PA.getValue(cra, + "xrefViews"); + if (cra_views.size() == 0) + { + failedXrefMenuItems.add( + "No crossrefs retrieved for " + first + " -> " + db); + continue; + } + assertNucleotide(cra_views.get(0), + "Nucleotide panel included proteins for " + first + + " -> " + db); + assertProtein(cra_views.get(1), + "Protein panel included nucleotides for " + first + + " -> " + db); + } + else { - // counter for splitframe views retrieved via crossref - int firstcr_ap = 0; - // build next key so we an retrieve all views - String nextxref = first + " -> " + db + "{" + firstcr_ap + "}"; - // perform crossref action, or retrieve stored project - List cra_views = new ArrayList<>(); - CrossRefAction cra = null; - - if (pass2 == 0) - { // retrieve and show cross-refs in this thread - cra = CrossRefAction.getHandlerFor(seqs, dna, db, af); - cra.run(); - cra_views = (List) PA.getValue(cra, - "xrefViews"); - if (cra_views.size() == 0) - { - failedXrefMenuItems.add("No crossrefs retrieved for " - + first + " -> " + db); - continue; - } - assertNucleotide(cra_views.get(0), - "Nucleotide panel included proteins for " + first - + " -> " + db); - assertProtein(cra_views.get(1), - "Protein panel included nucleotides for " + first - + " -> " + db); + if (Desktop.instance != null) + Desktop.instance.closeAll_actionPerformed(null); + pass3 = 0; + // recover stored project + File storedProject = savedProjects.get(nextxref); + if (storedProject == null) + { + failedProjectRecoveries + .add("Failed to store a view for '" + nextxref + "'"); + continue; } - else + + // recover stored project + AlignFrame af2 = new FileLoader(false).LoadFileWaitTillLoaded( + savedProjects.get(nextxref).toString(), + DataSourceType.FILE); + System.out + .println("Recovered view for '" + nextxref + "' from '" + + savedProjects.get(nextxref).toString() + "'"); + // gymnastics to recover the alignPanel/Complementary alignPanel + if (af2.getViewport().isNucleotide()) { - Desktop.instance.closeAll_actionPerformed(null); - pass3 = 0; - // recover stored project - File storedProject = savedProjects.get(nextxref); - if (storedProject == null) - { - failedProjectRecoveries.add("Failed to store a view for '" - + nextxref + "'"); - continue; - } - - // recover stored project - AlignFrame af2 = new FileLoader(false) - .LoadFileWaitTillLoaded(savedProjects.get(nextxref) - .toString(), DataSourceType.FILE); - System.out.println("Recovered view for '" + nextxref - + "' from '" + savedProjects.get(nextxref).toString() - + "'"); - // gymnastics to recover the alignPanel/Complementary alignPanel - if (af2.getViewport().isNucleotide()) - { - // top view, then bottom - cra_views.add(af2.getViewport().getAlignPanel()); - cra_views.add(((jalview.gui.AlignViewport) af2 - .getViewport().getCodingComplement()) - .getAlignPanel()); - - } - else - { - // bottom view, then top - cra_views.add(((jalview.gui.AlignViewport) af2 - .getViewport().getCodingComplement()) - .getAlignPanel()); - cra_views.add(af2.getViewport().getAlignPanel()); + // top view, then bottom + cra_views.add(af2.getViewport().getAlignPanel()); + cra_views.add(((jalview.gui.AlignViewport) af2.getViewport() + .getCodingComplement()).getAlignPanel()); - } } - HashMap> xrptypes = new HashMap<>(); - // first save/verify views. - for (AlignmentViewPanel avp : cra_views) + else { - nextxref = first + " -> " + db + "{" + firstcr_ap++ + "}"; - // verify references for this panel - AlignmentTest.assertAlignmentDatasetRefs(avp.getAlignment(), - "Pass (" + pass1 + "," + pass2 + "," + pass3 - + "): before start of pass3: " + nextxref - + ":"); - assertDatasetIsNormalisedKnownDefect(avp.getAlignment(), - "Pass (" + pass1 + "," + pass2 + "," + pass3 - + "): before start of pass3: " + nextxref - + ":"); - - SequenceI[] xrseqs = avp.getAlignment().getSequencesArray(); - - List _xrptypes = (seqs == null || seqs.length == 0) ? null - : new CrossRef(xrseqs, dataset) - .findXrefSourcesForSequences(avp - .getAlignViewport().isNucleotide()); - - stringify(dbtoviewBit, savedProjects, nextxref, avp); - xrptypes.put(nextxref, _xrptypes); + // bottom view, then top + cra_views.add(((jalview.gui.AlignViewport) af2.getViewport() + .getCodingComplement()).getAlignPanel()); + cra_views.add(af2.getViewport().getAlignPanel()); } + } + HashMap> xrptypes = new HashMap<>(); + // first save/verify views. + for (AlignmentViewPanel avp : cra_views) + { + nextxref = first + " -> " + db + "{" + firstcr_ap++ + "}"; + // verify references for this panel + AlignmentTest.assertAlignmentDatasetRefs(avp.getAlignment(), + "Pass (" + pass1 + "," + pass2 + "," + pass3 + + "): before start of pass3: " + nextxref + + ":"); + assertDatasetIsNormalisedKnownDefect(avp.getAlignment(), + "Pass (" + pass1 + "," + pass2 + "," + pass3 + + "): before start of pass3: " + nextxref + + ":"); + + SequenceI[] xrseqs = avp.getAlignment().getSequencesArray(); + + List _xrptypes = (seqs == null || seqs.length == 0) + ? null + : new CrossRef(xrseqs, dataset) + .findXrefSourcesForSequences( + avp.getAlignViewport().isNucleotide()); + + stringify(dbtoviewBit, savedProjects, nextxref, avp); + xrptypes.put(nextxref, _xrptypes); - // now do the second xref pass starting from either saved or just - // recovered split pane, in sequence - do // retrieve second set of cross refs or recover and verify + } + + // now do the second xref pass starting from either saved or just + // recovered split pane, in sequence + do // retrieve second set of cross refs or recover and verify + { + firstcr_ap = 0; + for (AlignmentViewPanel avp : cra_views) { - firstcr_ap = 0; - for (AlignmentViewPanel avp : cra_views) + nextxref = first + " -> " + db + "{" + firstcr_ap++ + "}"; + for (String xrefdb : xrptypes.get(nextxref)) { - nextxref = first + " -> " + db + "{" + firstcr_ap++ + "}"; - for (String xrefdb : xrptypes.get(nextxref)) - { - List cra_views2 = new ArrayList<>(); - int q = 0; - String nextnextxref = nextxref + " -> " + xrefdb + "{" - + q + "}"; + List cra_views2 = new ArrayList<>(); + int q = 0; + String nextnextxref = nextxref + " -> " + xrefdb + "{" + q + + "}"; - if (pass3 == 0) + if (pass3 == 0) + { + SequenceI[] xrseqs = avp.getAlignment() + .getSequencesArray(); + AlignFrame nextaf = Desktop + .getAlignFrameFor(avp.getAlignViewport()); + + cra = CrossRefAction.getHandlerFor(xrseqs, + avp.getAlignViewport().isNucleotide(), xrefdb, + nextaf); + cra.run(); + cra_views2 = (List) PA.getValue(cra, + "xrefViews"); + if (cra_views2.size() == 0) { - SequenceI[] xrseqs = avp.getAlignment() - .getSequencesArray(); - AlignFrame nextaf = Desktop.getAlignFrameFor(avp - .getAlignViewport()); - - cra = CrossRefAction.getHandlerFor(xrseqs, avp - .getAlignViewport().isNucleotide(), xrefdb, - nextaf); - cra.run(); - cra_views2 = (List) PA.getValue( - cra, "xrefViews"); - if (cra_views2.size() == 0) - { - failedXrefMenuItems - .add("No crossrefs retrieved for '" - + nextxref + "' to " + xrefdb - + " via '" + nextaf.getTitle() + "'"); - continue; - } - assertNucleotide(cra_views2.get(0), - "Nucleotide panel included proteins for '" - + nextxref + "' to " + xrefdb - + " via '" + nextaf.getTitle() + "'"); - assertProtein(cra_views2.get(1), - "Protein panel included nucleotides for '" - + nextxref + "' to " + xrefdb - + " via '" + nextaf.getTitle() + "'"); - + failedXrefMenuItems.add("No crossrefs retrieved for '" + + nextxref + "' to " + xrefdb + " via '" + + nextaf.getTitle() + "'"); + continue; } - else - { + assertNucleotide(cra_views2.get(0), + "Nucleotide panel included proteins for '" + + nextxref + "' to " + xrefdb + " via '" + + nextaf.getTitle() + "'"); + assertProtein(cra_views2.get(1), + "Protein panel included nucleotides for '" + + nextxref + "' to " + xrefdb + " via '" + + nextaf.getTitle() + "'"); + + } + else + { + if (Desktop.instance != null) Desktop.instance.closeAll_actionPerformed(null); - // recover stored project - File storedProject = savedProjects.get(nextnextxref); - if (storedProject == null) - { - failedProjectRecoveries - .add("Failed to store a view for '" - + nextnextxref + "'"); - continue; - } - AlignFrame af2 = new FileLoader(false) - .LoadFileWaitTillLoaded( - savedProjects.get(nextnextxref) - .toString(), - DataSourceType.FILE); - System.out.println("Recovered view for '" - + nextnextxref + "' from '" - + savedProjects.get(nextnextxref).toString() - + "'"); - // gymnastics to recover the alignPanel/Complementary - // alignPanel - if (af2.getViewport().isNucleotide()) - { - // top view, then bottom - cra_views2.add(af2.getViewport().getAlignPanel()); - cra_views2.add(((jalview.gui.AlignViewport) af2 - .getViewport().getCodingComplement()) - .getAlignPanel()); - - } - else - { - // bottom view, then top - cra_views2.add(((jalview.gui.AlignViewport) af2 - .getViewport().getCodingComplement()) - .getAlignPanel()); - cra_views2.add(af2.getViewport().getAlignPanel()); - } - Assert.assertEquals(cra_views2.size(), 2); - Assert.assertNotNull(cra_views2.get(0)); - Assert.assertNotNull(cra_views2.get(1)); + // recover stored project + File storedProject = savedProjects.get(nextnextxref); + if (storedProject == null) + { + failedProjectRecoveries + .add("Failed to store a view for '" + + nextnextxref + "'"); + continue; } + AlignFrame af2 = new FileLoader(false) + .LoadFileWaitTillLoaded(savedProjects + .get(nextnextxref).toString(), + DataSourceType.FILE); + System.out + .println("Recovered view for '" + nextnextxref + + "' from '" + savedProjects + .get(nextnextxref).toString() + + "'"); + // gymnastics to recover the alignPanel/Complementary + // alignPanel + if (af2.getViewport().isNucleotide()) + { + // top view, then bottom + cra_views2.add(af2.getViewport().getAlignPanel()); + cra_views2.add(((jalview.gui.AlignViewport) af2 + .getViewport().getCodingComplement()) + .getAlignPanel()); - for (AlignmentViewPanel nextavp : cra_views2) + } + else { - nextnextxref = nextxref + " -> " + xrefdb + "{" + q++ - + "}"; - - // verify references for this panel - AlignmentTest.assertAlignmentDatasetRefs( - nextavp.getAlignment(), "" + "Pass (" + pass1 - + "," + pass2 + "): For " - + nextnextxref + ":"); - assertDatasetIsNormalisedKnownDefect( - nextavp.getAlignment(), "" + "Pass (" + pass1 - + "," + pass2 + "): For " - + nextnextxref + ":"); - - stringify(dbtoviewBit, savedProjects, nextnextxref, - nextavp); - keyseq.add(nextnextxref); + // bottom view, then top + cra_views2.add(((jalview.gui.AlignViewport) af2 + .getViewport().getCodingComplement()) + .getAlignPanel()); + cra_views2.add(af2.getViewport().getAlignPanel()); } - } // end of loop around showing all xrefdb for crossrf2 - - } // end of loop around all viewpanels from crossrf1 - } while (pass2 == 2 && pass3++ < 2); - // fetchdb->crossref1->crossref-2->verify for xrefs we - // either loop twice when pass2=0, or just once when pass2=1 - // (recovered project from previous crossref) - - } // end of loop over db-xrefs for crossref-2 - - // fetchdb-->crossref1 - // for each xref we try to retrieve xref, store and verify when - // pass1=0, or just retrieve and verify when pass1=1 - } while (pass1 == 1 && pass2++ < 2); - // fetchdb - // for each ref we - // loop twice: first, do the retrieve, second recover from saved project - - // increment pass counters, so we repeat traversal starting from the - // oldest saved project first. - if (pass1 == 0) - { - // verify stored projects for first set of cross references - pass1 = 1; - // and verify cross-references retrieved from stored projects - pass2 = 0; - pass3 = 0; - } - else - { - pass1++; - } - } while (pass1 < 3); + Assert.assertEquals(cra_views2.size(), 2); + Assert.assertNotNull(cra_views2.get(0)); + Assert.assertNotNull(cra_views2.get(1)); + } + + for (AlignmentViewPanel nextavp : cra_views2) + { + nextnextxref = nextxref + " -> " + xrefdb + "{" + q++ + + "}"; + + // verify references for this panel + AlignmentTest.assertAlignmentDatasetRefs( + nextavp.getAlignment(), + "" + "Pass (" + pass1 + "," + pass2 + "): For " + + nextnextxref + ":"); + assertDatasetIsNormalisedKnownDefect( + nextavp.getAlignment(), + "" + "Pass (" + pass1 + "," + pass2 + "): For " + + nextnextxref + ":"); + + stringify(dbtoviewBit, savedProjects, nextnextxref, + nextavp); + keyseq.add(nextnextxref); + } + } // end of loop around showing all xrefdb for crossrf2 + + } // end of loop around all viewpanels from crossrf1 + } while (pass2 == 2 && pass3++ < 2); + // fetchdb->crossref1->crossref-2->verify for xrefs we + // either loop twice when pass2=0, or just once when pass2=1 + // (recovered project from previous crossref) + + } // end of loop over db-xrefs for crossref-2 + + // fetchdb-->crossref1 + // for each xref we try to retrieve xref, store and verify when + // pass1=0, or just retrieve and verify when pass1=1 + } while (pass1 == 1 && pass2++ < 2); + // fetchdb + // for each ref we + // loop twice: first, do the retrieve, second recover from saved project + + // increment pass counters, so we repeat traversal starting from the + // oldest saved project first. + if (pass1 == 0) + { + // verify stored projects for first set of cross references + pass1 = 1; + // and verify cross-references retrieved from stored projects + pass2 = 0; + pass3 = 0; + } + else + { + pass1++; + } + } while (pass1 < 3); if (failedXrefMenuItems.size() > 0) { @@ -448,8 +503,9 @@ public class CrossRef2xmlTests extends Jalview2xmlBase { System.err.println(s); } - Assert.fail("Didn't recover projects for some retrievals (did they retrieve ?) (" - + failedProjectRecoveries.size() + " counts)"); + Assert.fail( + "Didn't recover projects for some retrievals (did they retrieve ?) (" + + failedProjectRecoveries.size() + " counts)"); } if (failedDBRetr.size() > 0) { @@ -501,9 +557,8 @@ public class CrossRef2xmlTests extends Jalview2xmlBase } else { - System.out - .println("Ignored exception for known defect: JAL-2179 : " - + message); + System.out.println("Ignored exception for known defect: JAL-2179 : " + + message); } } @@ -525,8 +580,8 @@ public class CrossRef2xmlTests extends Jalview2xmlBase AlignmentViewPanel alignmentViewPanel, String message) { List nonType = new ArrayList<>(); - for (SequenceI sq : alignmentViewPanel.getAlignViewport() - .getAlignment().getSequences()) + for (SequenceI sq : alignmentViewPanel.getAlignViewport().getAlignment() + .getSequences()) { if (sq.isProtein() != expectProtein) { @@ -621,8 +676,8 @@ public class CrossRef2xmlTests extends Jalview2xmlBase } else { - Assert.assertEquals(sbr.toString(), dbt, "stringify mismatch for " - + xrefpath); + Assert.assertEquals(sbr.toString(), dbt, + "stringify mismatch for " + xrefpath); } } }