Skip to content

Commit 2b5e8cc

Browse files
committed
Updated test case as per review comments.
1 parent 3e91cb7 commit 2b5e8cc

File tree

2 files changed

+27
-25
lines changed

2 files changed

+27
-25
lines changed

bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/FindReplaceLogic.java

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ public class FindReplaceLogic implements IFindReplaceLogic {
5151
private IFindReplaceTarget target;
5252
private Point incrementalBaseLocation;
5353
private Point restoreBaseLocation = new Point(0, 0);
54-
private boolean isSetRestoreBaseLocation = true;
5554
private boolean isTargetSupportingRegEx;
5655
private boolean isTargetEditable;
5756
private final Set<SearchOptions> searchOptions = new HashSet<>();
@@ -63,8 +62,9 @@ public class FindReplaceLogic implements IFindReplaceLogic {
6362
public void setFindString(String findString) {
6463
if (this.findString.isEmpty() && !findString.isEmpty()) {
6564
// User just started a new search after clearing previous search.
66-
if (target != null)
65+
if (target != null) {
6766
restoreBaseLocation = target.getSelection();
67+
}
6868
}
6969
this.findString = Objects.requireNonNull(findString);
7070
if (isAvailableAndActive(SearchOptions.INCREMENTAL)) {
@@ -171,10 +171,6 @@ private static boolean isWord(String str) {
171171
public void resetIncrementalBaseLocation() {
172172
if (target != null && shouldInitIncrementalBaseLocation()) {
173173
incrementalBaseLocation = target.getSelection();
174-
if (isSetRestoreBaseLocation) {
175-
restoreBaseLocation = incrementalBaseLocation;
176-
isSetRestoreBaseLocation = false;
177-
}
178174
} else {
179175
incrementalBaseLocation = new Point(0, 0);
180176
}
@@ -361,10 +357,6 @@ private void restoreSelectionIfEmpty() {
361357
extension.setSelection(restoreBaseLocation.x, restoreBaseLocation.y);
362358
}
363359

364-
Point getRestoreBaseLocation() {
365-
return restoreBaseLocation;
366-
}
367-
368360
/**
369361
* Replaces all occurrences of the user's findString with the replace string.
370362
* Returns the number of replacements that occur.

tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/FindReplaceLogicTest.java

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -829,40 +829,47 @@ public void testResetIncrementalBaseLocation() {
829829

830830
findReplaceLogic.setFindString("test");
831831
assertThat(textViewer.getSelectedRange(), is(new Point(0, 4)));
832+
833+
// Move caret after first "test" i.e., caret after "test\n", so after 5 characters
832834
textViewer.setSelectedRange(5, 0);
833835
findReplaceLogic.resetIncrementalBaseLocation();
834836
findReplaceLogic.performSearch();
835837
assertThat(textViewer.getSelectedRange(), is(new Point(5, 4)));
836838

839+
// Move caret inside second "test" i.e., caret after "test\nte", so after 7 characters
837840
textViewer.setSelectedRange(7, 0);
838841
findReplaceLogic.resetIncrementalBaseLocation();
839842
findReplaceLogic.performSearch();
840843
assertThat(textViewer.getSelectedRange(), is(new Point(10, 4)));
841844

845+
// Move caret to position to third "test" i.e., caret after "test\ntest\n", so after 10 characters
842846
textViewer.setSelectedRange(10, 0);
843847
findReplaceLogic.resetIncrementalBaseLocation();
844848
findReplaceLogic.performSearch();
845849
assertThat(textViewer.getSelectedRange(), is(new Point(10, 4)));
846-
assertThat(((FindReplaceLogic) findReplaceLogic).getRestoreBaseLocation(), is(new Point(10, 0)));
850+
851+
findReplaceLogic.setFindString("");
852+
findReplaceLogic.performSearch();
853+
assertThat(textViewer.getSelectedRange(), is(new Point(10, 0)));
847854
}
848855

849856
@Test
850-
public void testRestoreBaseLocationCapturedOnNewSearch() {
857+
public void testSelectionRestoredAfterClearingSearch() {
851858
String setupString= "alpha beta gamma";
852859
TextViewer textViewer= setupTextViewer(setupString);
853860
textViewer.setSelectedRange(6, 0); // caret after 'alpha '
854861
IFindReplaceLogic logic= setupFindReplaceLogicObject(textViewer);
855862
logic.activate(SearchOptions.FORWARD);
856863
logic.activate(SearchOptions.INCREMENTAL);
857864

858-
// Initially empty find string
865+
logic.setFindString("gamma");
866+
assertThat(textViewer.getSelectedRange(), is(new Point(12, 5))); // "gamma" found
867+
859868
logic.setFindString("");
860-
// Now start a new search (transition empty -> non-empty)
861-
logic.setFindString("beta");
862-
// Expect the stored restore location to match the caret before search started
863-
assertThat(((FindReplaceLogic) logic).getRestoreBaseLocation(), is(new Point(6, 0)));
869+
assertThat(textViewer.getSelectedRange(), is(new Point(6, 0)));
864870
}
865871

872+
866873
@Test
867874
public void testCaretRestoredWhenSearchCleared() {
868875
String setupString= "alpha beta gamma";
@@ -882,28 +889,31 @@ public void testCaretRestoredWhenSearchCleared() {
882889
assertThat(textViewer.getSelectedRange(), is(new Point(0, 0)));
883890
}
884891

892+
885893
@Test
886-
public void testRestoreBaseLocationRefreshedBetweenSessions() {
894+
public void testCaretRestoredBetweenSearchSessions() {
887895
String setupString= "alpha beta gamma";
888896
TextViewer textViewer= setupTextViewer(setupString);
889897
IFindReplaceLogic logic= setupFindReplaceLogicObject(textViewer);
890898
logic.activate(SearchOptions.FORWARD);
891899
logic.activate(SearchOptions.INCREMENTAL);
892900

893-
// First search session
894-
textViewer.setSelectedRange(0, 0);
901+
textViewer.setSelectedRange(0, 0); // caret at start
895902
logic.setFindString("alpha");
896-
assertThat(((FindReplaceLogic) logic).getRestoreBaseLocation(), is(new Point(0, 0)));
903+
assertThat(textViewer.getSelectedRange(), is(new Point(0, 5))); // "alpha" found
897904

898905
// Clear the search (simulate reopen of overlay)
899906
logic.setFindString("");
900907
logic.performSearch();
908+
assertThat(textViewer.getSelectedRange(), is(new Point(0, 0))); // caret restored
901909

902-
// Move caret and start new search session
903-
textViewer.setSelectedRange(6, 0);
910+
textViewer.setSelectedRange(6, 0); // caret before "beta"
904911
logic.setFindString("beta");
905-
// Verify that restoreBaseLocation updated to the new caret position
906-
assertThat(((FindReplaceLogic) logic).getRestoreBaseLocation(), is(new Point(6, 0)));
912+
assertThat(textViewer.getSelectedRange(), is(new Point(6, 4))); // "beta" found
913+
914+
logic.setFindString("");
915+
logic.performSearch();
916+
assertThat(textViewer.getSelectedRange(), is(new Point(6, 0))); // caret restored to new base
907917
}
908918

909919
@Test

0 commit comments

Comments
 (0)