+package jalview.gui;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import jalview.datamodel.Alignment;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.PDBEntry;
+import jalview.datamodel.PDBEntry.Type;
+import jalview.datamodel.Sequence;
+import jalview.datamodel.SequenceI;
+
+public class AlignViewportTest
+{
+
+ AlignmentI al;
+ AlignViewport testee;
+
+ @Before
+ public void setUp()
+ {
+ SequenceI seq1 = new Sequence("Seq1", "ABC");
+ SequenceI seq2 = new Sequence("Seq2", "ABC");
+ SequenceI seq3 = new Sequence("Seq3", "ABC");
+ SequenceI[] seqs = new SequenceI[]
+ { seq1, seq2, seq3 };
+ al = new Alignment(seqs);
+ al.setDataset(null);
+ testee = new AlignViewport(al);
+ }
+
+ @Test
+ public void testCollateForPdb()
+ {
+ /*
+ * Set up sequence pdb ids
+ */
+ PDBEntry pdb1 = new PDBEntry("1ABC", "A", Type.PDB, "1ABC.pdb");
+ PDBEntry pdb2 = new PDBEntry("2ABC", "A", Type.PDB, "2ABC.pdb");
+ PDBEntry pdb3 = new PDBEntry("3ABC", "A", Type.PDB, "3ABC.pdb");
+
+ /*
+ * seq1 and seq3 refer to 1ABC, seq2 to 2ABC, none to 3ABC
+ */
+ al.getSequenceAt(0).getDatasetSequence()
+ .addPDBId(
+ new PDBEntry("1ABC", "B", Type.PDB, "1ABC.pdb"));
+ al.getSequenceAt(2).getDatasetSequence()
+ .addPDBId(
+ new PDBEntry("1ABC", "B", Type.PDB, "1ABC.pdb"));
+ al.getSequenceAt(1).getDatasetSequence()
+ .addPDBId(
+ new PDBEntry("2ABC", "C", Type.PDB, "2ABC.pdb"));
+ /*
+ * Add a second chain PDB xref to Seq2 - should not result in a duplicate in
+ * the results
+ */
+ al.getSequenceAt(1).getDatasetSequence()
+ .addPDBId(new PDBEntry("2ABC", "D", Type.PDB, "2ABC.pdb"));
+ /*
+ * Seq3 refers to 3abc - this does not match 3ABC (as the code stands)
+ */
+ al.getSequenceAt(2).getDatasetSequence()
+ .addPDBId(new PDBEntry("3abc", "D", Type.PDB, "3ABC.pdb"));
+
+ /*
+ * run method under test
+ */
+ SequenceI[][] seqs = testee.collateForPDB(new PDBEntry[]
+ { pdb1, pdb2, pdb3 });
+
+ // seq1 and seq3 refer to PDBEntry[0]
+ assertEquals(2, seqs[0].length);
+ assertSame(al.getSequenceAt(0), seqs[0][0]);
+ assertSame(al.getSequenceAt(2), seqs[0][1]);
+
+ // seq2 refers to PDBEntry[1]
+ assertEquals(1, seqs[1].length);
+ assertSame(al.getSequenceAt(1), seqs[1][0]);
+
+ // no sequence refers to PDBEntry[2]
+ assertEquals(0, seqs[2].length);
+ }
+}