X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fgui%2FSeqPanelTest.java;fp=test%2Fjalview%2Fgui%2FSeqPanelTest.java;h=7f3aef1cdb111a9400ac487aeeb05388b9addcf1;hb=c793942b6430bba9d9b6795e4afd8a1907c022d7;hp=a5d244db1d43d3ed94ddd61f6a479a1c0382cfdf;hpb=75d911e3d5e02de2549f025132610bc85300c84d;p=jalview.git diff --git a/test/jalview/gui/SeqPanelTest.java b/test/jalview/gui/SeqPanelTest.java index a5d244d..7f3aef1 100644 --- a/test/jalview/gui/SeqPanelTest.java +++ b/test/jalview/gui/SeqPanelTest.java @@ -21,11 +21,16 @@ package jalview.gui; import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNull; +import jalview.commands.EditCommand; +import jalview.commands.EditCommand.Action; +import jalview.commands.EditCommand.Edit; import jalview.datamodel.Alignment; import jalview.datamodel.AlignmentI; import jalview.datamodel.Sequence; import jalview.datamodel.SequenceI; +import jalview.util.MessageManager; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -88,4 +93,109 @@ public class SeqPanelTest assertEquals(alignFrame.statusBar.getText(), "Sequence 2 ID: Seq2 Residue: B (2)"); } + + @Test(groups = "Functional") + public void testGetEditStatusMessage() + { + assertNull(SeqPanel.getEditStatusMessage(null)); + + EditCommand edit = new EditCommand(); // empty + 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"); + assertEquals(SeqPanel.getEditStatusMessage(edit), expected); + + // 3 more gaps makes +4 + edit.addEdit(edit.new Edit(Action.INSERT_GAP, seqs, 1, 3, '-')); + expected = MessageManager.formatMessage("label.insert_gaps", "4"); + assertEquals(SeqPanel.getEditStatusMessage(edit), expected); + + // 2 deletes makes + 2 + edit.addEdit(edit.new Edit(Action.DELETE_GAP, seqs, 1, 2, '-')); + expected = MessageManager.formatMessage("label.insert_gaps", "2"); + assertEquals(SeqPanel.getEditStatusMessage(edit), expected); + + // 2 more deletes makes 0 - no text + edit.addEdit(edit.new Edit(Action.DELETE_GAP, seqs, 1, 2, '-')); + assertNull(SeqPanel.getEditStatusMessage(edit)); + + // 1 more delete makes 1 delete + edit.addEdit(edit.new Edit(Action.DELETE_GAP, seqs, 1, 1, '-')); + expected = MessageManager.formatMessage("label.delete_gap", "1"); + assertEquals(SeqPanel.getEditStatusMessage(edit), expected); + + // 1 more delete makes 2 deletes + edit.addEdit(edit.new Edit(Action.DELETE_GAP, seqs, 1, 1, '-')); + expected = MessageManager.formatMessage("label.delete_gaps", "2"); + assertEquals(SeqPanel.getEditStatusMessage(edit), expected); + } + + /** + * Tests that simulate 'locked editing', where an inserted gap is balanced by + * a gap deletion in the selection group, and vice versa + */ + @Test(groups = "Functional") + public void testGetEditStatusMessage_lockedEditing() + { + 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); + Edit e2 = edit.new Edit(Action.DELETE_GAP, seqs, 5, 1, '-'); + e2.setSystemGenerated(true); + 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); + Edit e4 = edit.new Edit(Action.DELETE_GAP, seqs, 5, 2, '-'); + e4.setSystemGenerated(true); + 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); + Edit e6 = edit.new Edit(Action.INSERT_GAP, seqs, 5, 2, '-'); + e6.setSystemGenerated(true); + 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); + Edit e8 = edit.new Edit(Action.INSERT_GAP, seqs, 5, 1, '-'); + e8.setSystemGenerated(true); + 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); + Edit e10 = edit.new Edit(Action.INSERT_GAP, seqs, 5, 1, '-'); + e10.setSystemGenerated(true); + 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); + Edit e12 = edit.new Edit(Action.INSERT_GAP, seqs, 5, 2, '-'); + e12.setSystemGenerated(true); + edit.addEdit(e12); + expected = MessageManager.formatMessage("label.delete_gaps", "3"); + assertEquals(SeqPanel.getEditStatusMessage(edit), expected); + } }