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); } }