package jalview.gui; import static org.testng.Assert.assertTrue; import jalview.datamodel.Alignment; import jalview.datamodel.AlignmentI; import jalview.datamodel.Sequence; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import java.awt.event.MouseEvent; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; public class ScalePanelTest { @BeforeClass(alwaysRun = true) public void setUpJvOptionPane() { JvOptionPane.setInteractiveMode(false); JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); } @Test(groups = "Functional") public void testPreventNegativeStartColumn() { SequenceI seq1 = new Sequence("Seq1", "MATRESS"); SequenceI seq2 = new Sequence("Seq2", "MADNESS"); AlignmentI al = new Alignment(new SequenceI[] { seq1, seq2 }); AlignFrame alignFrame = new AlignFrame(al, al.getWidth(), al.getHeight()); ScalePanel scalePanel = new ScalePanel( alignFrame.getViewport(), alignFrame.alignPanel ); MouseEvent mouse = new MouseEvent( scalePanel, 0, 1, 0, 4, 0, 1, false ); scalePanel.mousePressed(mouse); scalePanel.mouseDragged(mouse); // simulate dragging selection leftwards beyond the sequences giving // negative X mouse = new MouseEvent(scalePanel, 0, 1, 0, -30, 0, 1, false); scalePanel.mouseReleased(mouse); SequenceGroup sg = scalePanel.av.getSelectionGroup(); int startCol = sg.getStartRes(); assertTrue(startCol >= 0); } }