X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fgui%2FSeqPanelTest.java;fp=test%2Fjalview%2Fgui%2FSeqPanelTest.java;h=82b4619a7c46d611332be9504befc887849d35b7;hb=d043ce47fc710d3eb2629ba926a8a7417bd67d8c;hp=33bbeecbb895babf49d5401ebac941285ac74b7f;hpb=49db0dff1da16c3355b43a41498c1fc93ef47e91;p=jalview.git diff --git a/test/jalview/gui/SeqPanelTest.java b/test/jalview/gui/SeqPanelTest.java index 33bbeec..82b4619 100644 --- a/test/jalview/gui/SeqPanelTest.java +++ b/test/jalview/gui/SeqPanelTest.java @@ -66,6 +66,7 @@ public class SeqPanelTest JvOptionPane.setInteractiveMode(false); JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); } + @Test(groups = "Functional") public void testSetStatusReturnsNearestResiduePosition() { @@ -77,25 +78,21 @@ public class SeqPanelTest AlignmentI visAl = alignFrame.getViewport().getAlignment(); // Test either side of gap - assertEquals( - alignFrame.alignPanel.getSeqPanel().setStatusMessage( - visAl.getSequenceAt(1), 1, 1), 2); + assertEquals(alignFrame.alignPanel.getSeqPanel() + .setStatusMessage(visAl.getSequenceAt(1), 1, 1), 2); assertEquals(((JLabel) PA.getValue(alignFrame, "statusBar")).getText(), "Sequence 2 ID: Seq2 Residue: ALA (2)"); - assertEquals( - alignFrame.alignPanel.getSeqPanel().setStatusMessage( - visAl.getSequenceAt(1), 4, 1), 3); + assertEquals(alignFrame.alignPanel.getSeqPanel() + .setStatusMessage(visAl.getSequenceAt(1), 4, 1), 3); assertEquals(((JLabel) PA.getValue(alignFrame, "statusBar")).getText(), "Sequence 2 ID: Seq2 Residue: GLU (3)"); // no status message at a gap, returns next residue position to the right - assertEquals( - alignFrame.alignPanel.getSeqPanel().setStatusMessage( - visAl.getSequenceAt(1), 2, 1), 3); + assertEquals(alignFrame.alignPanel.getSeqPanel() + .setStatusMessage(visAl.getSequenceAt(1), 2, 1), 3); assertEquals(((JLabel) PA.getValue(alignFrame, "statusBar")).getText(), "Sequence 2 ID: Seq2"); - assertEquals( - alignFrame.alignPanel.getSeqPanel().setStatusMessage( - visAl.getSequenceAt(1), 3, 1), 3); + assertEquals(alignFrame.alignPanel.getSeqPanel() + .setStatusMessage(visAl.getSequenceAt(1), 3, 1), 3); assertEquals(((JLabel) PA.getValue(alignFrame, "statusBar")).getText(), "Sequence 2 ID: Seq2"); } @@ -110,9 +107,8 @@ public class SeqPanelTest al.getHeight()); AlignmentI visAl = alignFrame.getViewport().getAlignment(); - assertEquals( - alignFrame.alignPanel.getSeqPanel().setStatusMessage( - visAl.getSequenceAt(1), 1, 1), 2); + assertEquals(alignFrame.alignPanel.getSeqPanel() + .setStatusMessage(visAl.getSequenceAt(1), 1, 1), 2); assertEquals(((JLabel) PA.getValue(alignFrame, "statusBar")).getText(), "Sequence 2 ID: Seq2 Residue: B (2)"); } @@ -126,7 +122,7 @@ public class SeqPanelTest assertNull(SeqPanel.getEditStatusMessage(edit)); SequenceI[] seqs = new SequenceI[] { new Sequence("a", "b") }; - + // 1 gap edit.addEdit(edit.new Edit(Action.INSERT_GAP, seqs, 1, 1, '-')); String expected = MessageManager.formatMessage("label.insert_gap", "1"); @@ -166,7 +162,7 @@ public class SeqPanelTest { EditCommand edit = new EditCommand(); // empty SequenceI[] seqs = new SequenceI[] { new Sequence("a", "b") }; - + // 1 gap inserted, balanced by 1 delete Edit e1 = edit.new Edit(Action.INSERT_GAP, seqs, 1, 1, '-'); edit.addEdit(e1); @@ -175,7 +171,7 @@ public class SeqPanelTest edit.addEdit(e2); String expected = MessageManager.formatMessage("label.insert_gap", "1"); assertEquals(SeqPanel.getEditStatusMessage(edit), expected); - + // 2 more gaps makes +3 Edit e3 = edit.new Edit(Action.INSERT_GAP, seqs, 1, 2, '-'); edit.addEdit(e3); @@ -184,7 +180,7 @@ public class SeqPanelTest edit.addEdit(e4); expected = MessageManager.formatMessage("label.insert_gaps", "3"); assertEquals(SeqPanel.getEditStatusMessage(edit), expected); - + // 2 deletes makes + 1 Edit e5 = edit.new Edit(Action.DELETE_GAP, seqs, 1, 2, '-'); edit.addEdit(e5); @@ -193,7 +189,7 @@ public class SeqPanelTest edit.addEdit(e6); expected = MessageManager.formatMessage("label.insert_gap", "1"); assertEquals(SeqPanel.getEditStatusMessage(edit), expected); - + // 1 more delete makes 0 - no text Edit e7 = edit.new Edit(Action.DELETE_GAP, seqs, 1, 1, '-'); edit.addEdit(e7); @@ -202,7 +198,7 @@ public class SeqPanelTest edit.addEdit(e8); expected = MessageManager.formatMessage("label.insert_gaps", "2"); assertNull(SeqPanel.getEditStatusMessage(edit)); - + // 1 more delete makes 1 delete Edit e9 = edit.new Edit(Action.DELETE_GAP, seqs, 1, 1, '-'); edit.addEdit(e9); @@ -211,7 +207,7 @@ public class SeqPanelTest edit.addEdit(e10); expected = MessageManager.formatMessage("label.delete_gap", "1"); assertEquals(SeqPanel.getEditStatusMessage(edit), expected); - + // 2 more deletes makes 3 deletes Edit e11 = edit.new Edit(Action.DELETE_GAP, seqs, 1, 2, '-'); edit.addEdit(e11); @@ -244,8 +240,8 @@ public class SeqPanelTest /* * mouse at top left of unwrapped panel */ - MouseEvent evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, - 0, 0, 0, false, 0); + MouseEvent evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, + x, y, 0, 0, 0, false, 0); MousePos pos = testee.findMousePosition(evt); assertEquals(pos.column, 0); assertEquals(pos.seqIndex, 0); @@ -275,22 +271,22 @@ public class SeqPanelTest final int charHeight = av.getCharHeight(); final int charWidth = av.getCharWidth(); final int alignmentHeight = av.getAlignment().getHeight(); - + // sanity checks: assertTrue(charHeight > 0); assertTrue(charWidth > 0); assertTrue(alignFrame.alignPanel.getSeqPanel().getWidth() > 0); - + SeqPanel testee = alignFrame.alignPanel.getSeqPanel(); int x = 0; int y = 0; - + /* * mouse at top left of wrapped panel; there is a gap of charHeight * above the alignment */ - MouseEvent evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, - 0, 0, 0, false, 0); + MouseEvent evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, + x, y, 0, 0, 0, false, 0); MousePos pos = testee.findMousePosition(evt); assertEquals(pos.column, 0); assertEquals(pos.seqIndex, -1); // above sequences @@ -300,8 +296,8 @@ public class SeqPanelTest * cursor at bottom of gap above */ y = charHeight - 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, -1); assertEquals(pos.annotationIndex, -1); @@ -310,8 +306,8 @@ public class SeqPanelTest * cursor over top of first sequence */ y = charHeight; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, 0); assertEquals(pos.annotationIndex, -1); @@ -320,8 +316,8 @@ public class SeqPanelTest * cursor at bottom of first sequence */ y = 2 * charHeight - 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, 0); assertEquals(pos.annotationIndex, -1); @@ -330,8 +326,8 @@ public class SeqPanelTest * cursor at top of second sequence */ y = 2 * charHeight; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, 1); assertEquals(pos.annotationIndex, -1); @@ -340,8 +336,8 @@ public class SeqPanelTest * cursor at bottom of second sequence */ y = 3 * charHeight - 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, 1); assertEquals(pos.annotationIndex, -1); @@ -350,8 +346,8 @@ public class SeqPanelTest * cursor at bottom of last sequence */ y = charHeight * (1 + alignmentHeight) - 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, alignmentHeight - 1); assertEquals(pos.annotationIndex, -1); @@ -361,8 +357,8 @@ public class SeqPanelTest * method reports index of nearest sequence above */ y += 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, alignmentHeight - 1); assertEquals(pos.annotationIndex, -1); @@ -371,8 +367,8 @@ public class SeqPanelTest * cursor still in the gap above annotations, now at the bottom of it */ y += SeqCanvas.SEQS_ANNOTATION_GAP - 1; // 3-1 = 2 - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, alignmentHeight - 1); assertEquals(pos.annotationIndex, -1); @@ -385,8 +381,8 @@ public class SeqPanelTest * cursor at the top of the n'th annotation */ y += 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, + 0, 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, alignmentHeight - 1); assertEquals(pos.annotationIndex, n); // over n'th annotation @@ -395,8 +391,8 @@ public class SeqPanelTest * cursor at the bottom of the n'th annotation */ y += annotationRows[n].height - 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, + 0, 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, alignmentHeight - 1); assertEquals(pos.annotationIndex, n); @@ -406,8 +402,8 @@ public class SeqPanelTest * cursor in gap between wrapped widths */ y += 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, -1); assertEquals(pos.annotationIndex, -1); @@ -416,8 +412,8 @@ public class SeqPanelTest * cursor at bottom of gap between wrapped widths */ y += charHeight - 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, -1); assertEquals(pos.annotationIndex, -1); @@ -426,8 +422,8 @@ public class SeqPanelTest * cursor at top of first sequence, second wrapped width */ y += 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, 0); assertEquals(pos.annotationIndex, -1); @@ -449,119 +445,120 @@ public class SeqPanelTest final int charHeight = av.getCharHeight(); final int charWidth = av.getCharWidth(); final int alignmentHeight = av.getAlignment().getHeight(); - + // sanity checks: assertTrue(charHeight > 0); assertTrue(charWidth > 0); assertTrue(alignFrame.alignPanel.getSeqPanel().getWidth() > 0); - + SeqPanel testee = alignFrame.alignPanel.getSeqPanel(); int x = 0; int y = 0; - + /* * mouse at top left of wrapped panel; there is a gap of charHeight * above the alignment */ - MouseEvent evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, - 0, 0, 0, false, 0); + MouseEvent evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, + x, y, 0, 0, 0, false, 0); MousePos pos = testee.findMousePosition(evt); assertEquals(pos.column, 0); assertEquals(pos.seqIndex, -1); // above sequences assertEquals(pos.annotationIndex, -1); - + /* * cursor at bottom of gap above * two charHeights including scale panel */ y = 2 * charHeight - 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, -1); assertEquals(pos.annotationIndex, -1); - + /* * cursor over top of first sequence */ y += 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, 0); assertEquals(pos.annotationIndex, -1); - + /* * cursor at bottom of first sequence */ y += charHeight - 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, 0); assertEquals(pos.annotationIndex, -1); - + /* * cursor at top of second sequence */ y += 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, 1); assertEquals(pos.annotationIndex, -1); - + /* * cursor at bottom of second sequence */ y += charHeight - 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, 1); assertEquals(pos.annotationIndex, -1); - + /* * cursor at bottom of last sequence * (scale + gap + sequences) */ y = charHeight * (2 + alignmentHeight) - 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, alignmentHeight - 1); assertEquals(pos.annotationIndex, -1); - + /* * cursor below sequences, in 3-pixel gap above annotations */ y += 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, alignmentHeight - 1); assertEquals(pos.annotationIndex, -1); - + /* * cursor still in the gap above annotations, now at the bottom of it * method reports index of nearest sequence above */ y += SeqCanvas.SEQS_ANNOTATION_GAP - 1; // 3-1 = 2 - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, alignmentHeight - 1); assertEquals(pos.annotationIndex, -1); - - AlignmentAnnotation[] annotationRows = av.getAlignment().getAlignmentAnnotation(); + + AlignmentAnnotation[] annotationRows = av.getAlignment() + .getAlignmentAnnotation(); for (int n = 0; n < annotationRows.length; n++) { /* * cursor at the top of the n'th annotation */ y += 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, + 0, 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, alignmentHeight - 1); assertEquals(pos.annotationIndex, n); // over n'th annotation @@ -570,8 +567,8 @@ public class SeqPanelTest * cursor at the bottom of the n'th annotation */ y += annotationRows[n].height - 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, + 0, 0, false, 0); pos = testee.findMousePosition(evt); SeqCanvas sc = testee.seqCanvas; assertEquals(pos.seqIndex, alignmentHeight - 1, @@ -581,33 +578,33 @@ public class SeqPanelTest sc.wrappedSpaceAboveAlignment)); assertEquals(pos.annotationIndex, n); } - + /* * cursor in gap between wrapped widths */ y += 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, -1); assertEquals(pos.annotationIndex, -1); - + /* * cursor at bottom of gap between wrapped widths */ y += charHeight - 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, -1); assertEquals(pos.annotationIndex, -1); - + /* * cursor at top of scale, second wrapped width */ y += 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, -1); assertEquals(pos.annotationIndex, -1); @@ -616,8 +613,8 @@ public class SeqPanelTest * cursor at bottom of scale, second wrapped width */ y += charHeight - 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, -1); assertEquals(pos.annotationIndex, -1); @@ -626,8 +623,8 @@ public class SeqPanelTest * cursor at top of first sequence, second wrapped width */ y += 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, 0); assertEquals(pos.annotationIndex, -1); @@ -650,33 +647,33 @@ public class SeqPanelTest final int charHeight = av.getCharHeight(); final int charWidth = av.getCharWidth(); final int alignmentHeight = av.getAlignment().getHeight(); - + // sanity checks: assertTrue(charHeight > 0); assertTrue(charWidth > 0); assertTrue(alignFrame.alignPanel.getSeqPanel().getWidth() > 0); - + SeqPanel testee = alignFrame.alignPanel.getSeqPanel(); int x = 0; int y = 0; - + /* * mouse at top left of wrapped panel; there is a gap of charHeight * above the alignment */ - MouseEvent evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, - 0, 0, 0, false, 0); + MouseEvent evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, + x, y, 0, 0, 0, false, 0); MousePos pos = testee.findMousePosition(evt); assertEquals(pos.column, 0); assertEquals(pos.seqIndex, -1); // above sequences assertEquals(pos.annotationIndex, -1); - + /* * cursor over top of first sequence */ y = charHeight; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, 0); assertEquals(pos.annotationIndex, -1); @@ -685,38 +682,38 @@ public class SeqPanelTest * cursor at bottom of last sequence */ y = charHeight * (1 + alignmentHeight) - 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, alignmentHeight - 1); assertEquals(pos.annotationIndex, -1); - + /* * cursor below sequences, at top of charHeight gap between widths */ y += 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, -1); assertEquals(pos.annotationIndex, -1); - + /* * cursor below sequences, at top of charHeight gap between widths */ y += charHeight - 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, -1); assertEquals(pos.annotationIndex, -1); - + /* * cursor at the top of the first sequence, second width */ y += 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, 0); assertEquals(pos.annotationIndex, -1); @@ -738,40 +735,40 @@ public class SeqPanelTest /* * mouse at top left of unwrapped panel */ - MouseEvent evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, - 0, 0, 0, false, 0); + MouseEvent evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, + x, 0, 0, 0, 0, false, 0); assertEquals(testee.findColumn(evt), 0); - + /* * not quite one charWidth across */ - x = charWidth-1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, - 0, 0, 0, false, 0); + x = charWidth - 1; + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, 0, 0, + 0, false, 0); assertEquals(testee.findColumn(evt), 0); /* * one charWidth across */ x = charWidth; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, 0, 0, + 0, false, 0); assertEquals(testee.findColumn(evt), 1); /* * two charWidths across */ x = 2 * charWidth; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, 0, 0, + 0, false, 0); assertEquals(testee.findColumn(evt), 2); /* * limited to last column of seqcanvas */ x = 20000; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, 0, 0, + 0, false, 0); SeqCanvas seqCanvas = alignFrame.alignPanel.getSeqPanel().seqCanvas; int w = seqCanvas.getWidth(); // limited to number of whole columns, base 0, @@ -786,8 +783,8 @@ public class SeqPanelTest alignFrame.getViewport().hideColumns(4, 9); x = 5 * charWidth + 2; // x is in 6th visible column, absolute column 12, or 11 base 0 - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, 0, 0, + 0, false, 0); assertEquals(testee.findColumn(evt), 11); } @@ -807,28 +804,28 @@ public class SeqPanelTest final int charWidth = av.getCharWidth(); assertTrue(charWidth > 0); // sanity check assertEquals(av.getRanges().getStartRes(), 0); - + /* * mouse at top left of wrapped panel, no West (left) scale */ - MouseEvent evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, - 0, 0, 0, false, 0); + MouseEvent evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, + x, 0, 0, 0, 0, false, 0); assertEquals(testee.findColumn(evt), 0); - + /* * not quite one charWidth across */ - x = charWidth-1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, - 0, 0, 0, false, 0); + x = charWidth - 1; + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, 0, 0, + 0, false, 0); assertEquals(testee.findColumn(evt), 0); - + /* * one charWidth across */ x = charWidth; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, 0, 0, + 0, false, 0); assertEquals(testee.findColumn(evt), 1); /* @@ -840,13 +837,13 @@ public class SeqPanelTest int labelWidth = (int) PA.getValue(seqCanvas, "labelWidthWest"); assertTrue(labelWidth > 0); x = labelWidth - 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, 0, 0, + 0, false, 0); assertEquals(testee.findColumn(evt), -1); x = labelWidth; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, 0, 0, + 0, false, 0); assertEquals(testee.findColumn(evt), 0); /* @@ -855,8 +852,8 @@ public class SeqPanelTest int residuesWide = av.getRanges().getViewportWidth(); assertTrue(residuesWide > 0); x = labelWidth + charWidth * residuesWide - 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, 0, 0, + 0, false, 0); assertEquals(testee.findColumn(evt), residuesWide - 1); /* @@ -870,13 +867,14 @@ public class SeqPanelTest assertTrue(residuesWide2 > 0); assertTrue(residuesWide2 < residuesWide); // available width reduced x += 1; // just over left edge of scale right - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, 0, 0, + 0, false, 0); assertEquals(testee.findColumn(evt), -1); - + // todo add startRes offset, hidden columns } + @BeforeClass(alwaysRun = true) public static void setUpBeforeClass() throws Exception { @@ -906,6 +904,7 @@ public class SeqPanelTest e.printStackTrace(); } } + @Test(groups = "Functional") public void testFindMousePosition_wrapped_scales_longSequence() { @@ -916,13 +915,13 @@ public class SeqPanelTest Cache.applicationProperties.setProperty("FONT_STYLE", "0"); // sequence of 50 bases, doubled 10 times, = 51200 bases String dna = "ATGGCCATTGGGCCCAAATTTCCCAAAGGGTTTCCCTGAGGTCAGTCAGA"; - for (int i = 0 ; i < 10 ; i++) + for (int i = 0; i < 10; i++) { dna += dna; } assertEquals(dna.length(), 51200); - AlignFrame alignFrame = new FileLoader() - .LoadFileWaitTillLoaded(dna, DataSourceType.PASTE); + AlignFrame alignFrame = new FileLoader().LoadFileWaitTillLoaded(dna, + DataSourceType.PASTE); SeqPanel testee = alignFrame.alignPanel.getSeqPanel(); AlignViewport av = alignFrame.getViewport(); av.setScaleAboveWrapped(true); @@ -936,12 +935,12 @@ public class SeqPanelTest } catch (InterruptedException e) { } - + final int charHeight = av.getCharHeight(); final int charWidth = av.getCharWidth(); assertEquals(charHeight, 17); assertEquals(charWidth, 12); - + FontMetrics fm = testee.getFontMetrics(av.getFont()); int labelWidth = fm.stringWidth("00000") + charWidth; assertEquals(labelWidth, 57); // 5 x 9 + charWidth @@ -949,13 +948,13 @@ public class SeqPanelTest int x = 0; int y = 0; - + /* * mouse at top left of wrapped panel; there is a gap of 2 * charHeight * above the alignment */ - MouseEvent evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, - 0, 0, 0, false, 0); + MouseEvent evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, + x, y, 0, 0, 0, false, 0); MousePos pos = testee.findMousePosition(evt); assertEquals(pos.column, -1); // over scale left, not an alignment column assertEquals(pos.seqIndex, -1); // above sequences @@ -966,94 +965,94 @@ public class SeqPanelTest */ y += charHeight; x = labelWidth; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, -1); assertEquals(pos.column, 0); assertEquals(pos.annotationIndex, -1); - + /* * cursor over scale left of first sequence */ y += charHeight; x = 0; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, 0); assertEquals(pos.column, -1); assertEquals(pos.annotationIndex, -1); - + /* * cursor over start of first sequence */ x = labelWidth; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, 0); assertEquals(pos.column, 0); assertEquals(pos.annotationIndex, -1); - + /* * move one character right, to bottom pixel of same row */ x += charWidth; y += charHeight - 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, 0); assertEquals(pos.column, 1); - + /* * move down one pixel - now in the no man's land between rows */ y += 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, -1); assertEquals(pos.column, 1); - + /* * move down two char heights less one pixel - still in the no man's land * (scale above + spacer line) */ y += (2 * charHeight - 1); - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, -1); assertEquals(pos.column, 1); - + /* * move down one more pixel - now on the next row of the sequence */ y += 1; - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, 0); assertEquals(pos.column, 1 + av.getWrappedWidth()); - + /* * scroll to near the end of the sequence */ SearchResultsI sr = new SearchResults(); int scrollTo = dna.length() - 1000; - sr.addResult(av.getAlignment().getSequenceAt(0), scrollTo, scrollTo); + sr.addResult(av.getAlignment().getSequenceAt(0), scrollTo, scrollTo); alignFrame.alignPanel.scrollToPosition(sr); - + /* * place the mouse on the first column of the 6th sequence, and * verify that (computed) findMousePosition matches (actual) ViewportRanges */ x = labelWidth; y = 17 * charHeight; // 17 = 6 times two header rows and 5 sequence rows - evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, 0, - false, 0); + evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, y, 0, 0, + 0, false, 0); pos = testee.findMousePosition(evt); assertEquals(pos.seqIndex, 0); int expected = av.getRanges().getStartRes() + 5 * av.getWrappedWidth();