/* * 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.gui; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertNull; import static org.testng.Assert.assertSame; import static org.testng.Assert.assertTrue; import jalview.datamodel.PDBEntry; import jalview.datamodel.PDBEntry.Type; import jalview.datamodel.Sequence; import jalview.datamodel.SequenceI; import java.util.Map; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; public class StructureViewerTest { @BeforeClass(alwaysRun = true) public void setUpJvOptionPane() { JvOptionPane.setInteractiveMode(false); JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); } @Test(groups = "Functional") public void testGetSequencesForPdbs() { StructureViewer sv = new StructureViewer(null); assertNull(sv.getSequencesForPdbs(null, null)); PDBEntry pdbe1 = new PDBEntry("1A70", "A", Type.PDB, "path1"); PDBEntry pdbe2 = new PDBEntry("3A6S", "A", Type.PDB, "path2"); PDBEntry pdbe3 = new PDBEntry("1A70", "B", Type.PDB, "path1"); PDBEntry pdbe4 = new PDBEntry("1GAQ", "A", Type.PDB, null); PDBEntry pdbe5 = new PDBEntry("3A6S", "B", Type.PDB, "path2"); PDBEntry pdbe6 = new PDBEntry("1GAQ", "B", Type.PDB, null); PDBEntry pdbe7 = new PDBEntry("1FOO", "Q", Type.PDB, null); PDBEntry[] pdbs = new PDBEntry[] { pdbe1, pdbe2, pdbe3, pdbe4, pdbe5, pdbe6, pdbe7 }; /* * seq1 ... seq6 associated with pdbe1 ... pdbe6 */ SequenceI[] seqs = new SequenceI[pdbs.length]; for (int i = 0; i < seqs.length; i++) { seqs[i] = new Sequence("Seq" + i, "abc"); } /* * pdbe3/5/6 should get removed as having a duplicate file path */ Map uniques = sv.getSequencesForPdbs(pdbs, seqs); assertTrue(uniques.containsKey(pdbe1)); assertTrue(uniques.containsKey(pdbe2)); assertFalse(uniques.containsKey(pdbe3)); assertTrue(uniques.containsKey(pdbe4)); assertFalse(uniques.containsKey(pdbe5)); assertFalse(uniques.containsKey(pdbe6)); assertTrue(uniques.containsKey(pdbe7)); // 1A70 associates with seq1 and seq3 SequenceI[] ss = uniques.get(pdbe1); assertEquals(ss.length, 2); assertSame(seqs[0], ss[0]); assertSame(seqs[2], ss[1]); // 3A6S has seq2 and seq5 ss = uniques.get(pdbe2); assertEquals(ss.length, 2); assertSame(seqs[1], ss[0]); assertSame(seqs[4], ss[1]); // 1GAQ has seq4 and seq6 ss = uniques.get(pdbe4); assertEquals(ss.length, 2); assertSame(seqs[3], ss[0]); assertSame(seqs[5], ss[1]); // 1FOO has seq7 ss = uniques.get(pdbe7); assertEquals(ss.length, 1); assertSame(seqs[6], ss[0]); } }