Skip to content

Commit adbbaa6

Browse files
committed
Find/replace tests: remove reflective logic access
The IFindReplaceUIAccess currently provides access to the IFindReplaceTarget, to which the UI is attached. The implementations for the dialog and overlay employ reflection to access the target within the UI implementation. It is, however, not necessary to access this information via the find/replace UI since the tests set up the target anyway and thus have access to it. This change removes the according methods from the IFindReplaceUIAccess and the reflective access from its implementations.
1 parent 5c74619 commit adbbaa6

File tree

6 files changed

+50
-88
lines changed

6 files changed

+50
-88
lines changed

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

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,6 @@ public void testDisableWholeWordIfRegEx() {
119119
dialog.assertEnabled(SearchOptions.REGEX);
120120
dialog.assertEnabled(SearchOptions.WHOLE_WORD);
121121

122-
dialog.getFindReplaceLogic().updateTarget(fTextViewer.getFindReplaceTarget(), false);
123122
dialog.select(SearchOptions.WHOLE_WORD);
124123
dialog.select(SearchOptions.REGEX);
125124
dialog.assertEnabled(SearchOptions.REGEX);
@@ -161,7 +160,7 @@ public void testShiftEnterReversesSearchDirection() {
161160
dialog.select(SearchOptions.INCREMENTAL);
162161
dialog.setFindText("line");
163162
ensureHasFocusOnGTK();
164-
IFindReplaceTarget target= dialog.getTarget();
163+
IFindReplaceTarget target= getFindReplaceTarget();
165164

166165
assertEquals(0, (target.getSelection()).x);
167166
assertEquals(4, (target.getSelection()).y);
@@ -190,7 +189,7 @@ public void testChangeInputForIncrementalSearch() {
190189
dialog.select(SearchOptions.INCREMENTAL);
191190

192191
dialog.setFindText("lin");
193-
IFindReplaceTarget target= dialog.getTarget();
192+
IFindReplaceTarget target= getFindReplaceTarget();
194193
assertEquals(0, (target.getSelection()).x);
195194
assertEquals(dialog.getFindText().length(), (target.getSelection()).y);
196195

@@ -206,7 +205,7 @@ public void testFindWithWholeWordEnabledWithMultipleWords() {
206205
dialog.select(SearchOptions.WHOLE_WORD);
207206
dialog.select(SearchOptions.WRAP);
208207
dialog.setFindText("two");
209-
IFindReplaceTarget target= dialog.getTarget();
208+
IFindReplaceTarget target= getFindReplaceTarget();
210209
assertEquals(0, (target.getSelection()).x);
211210
assertEquals(3, (target.getSelection()).y);
212211

@@ -227,7 +226,7 @@ public void testRegExSearch() {
227226
dialog.select(SearchOptions.REGEX);
228227
dialog.setFindText("(a|bc)");
229228

230-
IFindReplaceTarget target= dialog.getTarget();
229+
IFindReplaceTarget target= getFindReplaceTarget();
231230
dialog.simulateKeyboardInteractionInFindInputField(SWT.CR, false);
232231
assertEquals(0, (target.getSelection()).x);
233232
assertEquals(1, (target.getSelection()).y);
@@ -374,4 +373,8 @@ protected TextViewer getTextViewer() {
374373
return fTextViewer;
375374
}
376375

376+
protected final IFindReplaceTarget getFindReplaceTarget() {
377+
return fTextViewer.getFindReplaceTarget();
378+
}
379+
377380
}

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

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,11 @@
1212

1313
import org.eclipse.swt.widgets.Widget;
1414

15-
import org.eclipse.jface.text.IFindReplaceTarget;
16-
1715
/**
1816
* Wraps UI access for different find/replace UIs
1917
*/
2018
public interface IFindReplaceUIAccess {
2119

22-
IFindReplaceTarget getTarget();
23-
2420
void closeAndRestore();
2521

2622
void close();
@@ -47,8 +43,6 @@ public interface IFindReplaceUIAccess {
4743

4844
Widget getButtonForSearchOption(SearchOptions option);
4945

50-
IFindReplaceLogic getFindReplaceLogic();
51-
5246
void performReplaceAll();
5347

5448
void performReplace();

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

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public OverlayAccess openUIFromTextViewer(TextViewer viewer) {
4646
Accessor actionAccessor= new Accessor(getFindReplaceAction(), FindReplaceAction.class);
4747
actionAccessor.invoke("showOverlayInEditor", null);
4848
Accessor overlayAccessor= new Accessor(actionAccessor.get("overlay"), "org.eclipse.ui.internal.findandreplace.overlay.FindReplaceOverlay", getClass().getClassLoader());
49-
return new OverlayAccess(overlayAccessor);
49+
return new OverlayAccess(getFindReplaceTarget(), overlayAccessor);
5050
}
5151

5252
@Test
@@ -55,7 +55,7 @@ public void testDirectionalSearchButtons() {
5555
OverlayAccess dialog= getDialog();
5656

5757
dialog.setFindText("line");
58-
IFindReplaceTarget target= dialog.getTarget();
58+
IFindReplaceTarget target= getFindReplaceTarget();
5959

6060
assertEquals(0, (target.getSelection()).x);
6161
assertEquals(4, (target.getSelection()).y);
@@ -89,14 +89,14 @@ public void testDirectionalSearchButtons() {
8989
public void testIncrementalSearchUpdatesAfterChangingOptions() {
9090
initializeTextViewerWithFindReplaceUI("alinee\naLinee\nline\nline");
9191
OverlayAccess dialog= getDialog();
92-
IFindReplaceTarget target= dialog.getTarget();
92+
IFindReplaceTarget target= getFindReplaceTarget();
9393
dialog.setFindText("Line");
94-
assertThat(dialog.getTarget().getSelectionText(), is("line"));
95-
assertEquals(new Point(1,4), dialog.getTarget().getSelection());
94+
assertThat(target.getSelectionText(), is("line"));
95+
assertEquals(new Point(1, 4), target.getSelection());
9696

9797
dialog.select(SearchOptions.CASE_SENSITIVE);
98-
assertThat(dialog.getTarget().getSelectionText(), is("Line"));
99-
assertEquals(new Point(8,4), dialog.getTarget().getSelection());
98+
assertThat(target.getSelectionText(), is("Line"));
99+
assertEquals(new Point(8, 4), target.getSelection());
100100

101101
dialog.unselect(SearchOptions.CASE_SENSITIVE);
102102
assertEquals(1, (target.getSelection()).x);
@@ -110,7 +110,7 @@ public void testIncrementalSearchUpdatesAfterChangingOptions() {
110110
dialog.unselect(SearchOptions.WHOLE_WORD);
111111
assertEquals(1, (target.getSelection()).x);
112112
assertEquals(4, (target.getSelection()).y);
113-
assertThat(dialog.getTarget().getSelectionText(), is("line"));
113+
assertThat(target.getSelectionText(), is("line"));
114114
}
115115

116116
@Test
@@ -153,18 +153,19 @@ public void testRememberReplaceExpandState() {
153153
@Test
154154
public void testSearchBackwardsWithRegEx() {
155155
initializeTextViewerWithFindReplaceUI("text text text");
156+
IFindReplaceTarget target= getFindReplaceTarget();
156157

157158
OverlayAccess dialog= getDialog();
158159
dialog.select(SearchOptions.REGEX);
159160
dialog.setFindText("text"); // with RegEx enabled, there is no incremental search!
160161
dialog.pressSearch(true);
161-
assertThat(dialog.getTarget().getSelection().y, is(4));
162+
assertThat(target.getSelection().y, is(4));
162163
dialog.pressSearch(true);
163-
assertThat(dialog.getTarget().getSelection().x, is("text ".length()));
164+
assertThat(target.getSelection().x, is("text ".length()));
164165
dialog.pressSearch(true);
165-
assertThat(dialog.getTarget().getSelection().x, is("text text ".length()));
166+
assertThat(target.getSelection().x, is("text text ".length()));
166167
dialog.pressSearch(false);
167-
assertThat(dialog.getTarget().getSelection().x, is("text ".length()));
168+
assertThat(target.getSelection().x, is("text ".length()));
168169
}
169170

170171
@Test

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

Lines changed: 21 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -36,45 +36,43 @@
3636
import org.eclipse.jface.text.IFindReplaceTarget;
3737
import org.eclipse.jface.text.IFindReplaceTargetExtension;
3838

39-
import org.eclipse.ui.internal.findandreplace.FindReplaceLogic;
40-
import org.eclipse.ui.internal.findandreplace.IFindReplaceLogic;
4139
import org.eclipse.ui.internal.findandreplace.IFindReplaceUIAccess;
4240
import org.eclipse.ui.internal.findandreplace.SearchOptions;
4341

4442
class OverlayAccess implements IFindReplaceUIAccess {
45-
FindReplaceLogic findReplaceLogic;
43+
private final IFindReplaceTarget findReplaceTarget;
4644

47-
HistoryTextWrapper find;
45+
private final HistoryTextWrapper find;
4846

49-
HistoryTextWrapper replace;
47+
private final ToolItem inSelection;
5048

51-
ToolItem inSelection;
49+
private final ToolItem caseSensitive;
5250

53-
ToolItem caseSensitive;
51+
private final ToolItem wholeWord;
5452

55-
ToolItem wholeWord;
53+
private final ToolItem regEx;
5654

57-
ToolItem regEx;
55+
private final ToolItem searchForward;
5856

59-
ToolItem searchForward;
57+
private final ToolItem searchBackward;
6058

61-
ToolItem searchBackward;
59+
private final Button openReplaceDialog;
6260

63-
Button openReplaceDialog;
61+
private HistoryTextWrapper replace;
6462

65-
ToolItem replaceButton;
63+
private ToolItem replaceButton;
6664

67-
ToolItem replaceAllButton;
65+
private ToolItem replaceAllButton;
6866

69-
private Runnable closeOperation;
67+
private final Runnable closeOperation;
7068

71-
Accessor dialogAccessor;
69+
private final Accessor dialogAccessor;
7270

73-
private Supplier<Shell> shellRetriever;
71+
private final Supplier<Shell> shellRetriever;
7472

75-
OverlayAccess(Accessor findReplaceOverlayAccessor) {
73+
OverlayAccess(IFindReplaceTarget findReplaceTarget, Accessor findReplaceOverlayAccessor) {
74+
this.findReplaceTarget= findReplaceTarget;
7675
dialogAccessor= findReplaceOverlayAccessor;
77-
findReplaceLogic= (FindReplaceLogic) findReplaceOverlayAccessor.get("findReplaceLogic");
7876
find= (HistoryTextWrapper) findReplaceOverlayAccessor.get("searchBar");
7977
replace= (HistoryTextWrapper) findReplaceOverlayAccessor.get("replaceBar");
8078
caseSensitive= (ToolItem) findReplaceOverlayAccessor.get("caseSensitiveSearchButton");
@@ -90,11 +88,6 @@ class OverlayAccess implements IFindReplaceUIAccess {
9088
shellRetriever= () -> ((Shell) findReplaceOverlayAccessor.invoke("getShell", null));
9189
}
9290

93-
@Override
94-
public IFindReplaceTarget getTarget() {
95-
return findReplaceLogic.getTarget();
96-
}
97-
9891
private void restoreInitialConfiguration() {
9992
find.setText("");
10093
select(SearchOptions.GLOBAL);
@@ -228,11 +221,6 @@ public void pressSearch(boolean forward) {
228221
}
229222
}
230223

231-
@Override
232-
public IFindReplaceLogic getFindReplaceLogic() {
233-
return findReplaceLogic;
234-
}
235-
236224
@Override
237225
public void performReplaceAll() {
238226
openReplaceDialog();
@@ -277,25 +265,23 @@ public void assertInitialConfiguration() {
277265
assertUnselected(SearchOptions.REGEX);
278266
assertUnselected(SearchOptions.WHOLE_WORD);
279267
assertUnselected(SearchOptions.CASE_SENSITIVE);
280-
if (!doesTextViewerHaveMultiLineSelection(findReplaceLogic.getTarget())) {
268+
if (!doesTextViewerHaveMultiLineSelection()) {
281269
assertSelected(SearchOptions.GLOBAL);
282-
assertTrue(findReplaceLogic.isActive(SearchOptions.GLOBAL));
283270
} else {
284271
assertUnselected(SearchOptions.GLOBAL);
285-
assertFalse(findReplaceLogic.isActive(SearchOptions.GLOBAL));
286272
}
287273
assertEnabled(SearchOptions.GLOBAL);
288274
assertEnabled(SearchOptions.REGEX);
289275
assertEnabled(SearchOptions.CASE_SENSITIVE);
290-
if (getFindText().equals("") || findReplaceLogic.isAvailable(SearchOptions.WHOLE_WORD)) {
276+
if (!getFindText().contains(" ")) {
291277
assertEnabled(SearchOptions.WHOLE_WORD);
292278
} else {
293279
assertDisabled(SearchOptions.WHOLE_WORD);
294280
}
295281
}
296282

297-
private boolean doesTextViewerHaveMultiLineSelection(IFindReplaceTarget target) {
298-
if (target instanceof IFindReplaceTargetExtension scopeProvider) {
283+
private boolean doesTextViewerHaveMultiLineSelection() {
284+
if (findReplaceTarget instanceof IFindReplaceTargetExtension scopeProvider) {
299285
return scopeProvider.getScope() != null; // null is returned for global scope
300286
}
301287
return false;

tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/workbench/texteditor/tests/DialogAccess.java

Lines changed: 4 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import static org.hamcrest.Matchers.hasItems;
1616
import static org.hamcrest.Matchers.not;
1717
import static org.junit.Assert.assertFalse;
18-
import static org.junit.Assert.assertTrue;
1918

2019
import java.util.Arrays;
2120
import java.util.Set;
@@ -34,14 +33,12 @@
3433
import org.eclipse.jface.text.IFindReplaceTarget;
3534
import org.eclipse.jface.text.IFindReplaceTargetExtension;
3635

37-
import org.eclipse.ui.internal.findandreplace.FindReplaceLogic;
38-
import org.eclipse.ui.internal.findandreplace.IFindReplaceLogic;
3936
import org.eclipse.ui.internal.findandreplace.IFindReplaceUIAccess;
4037
import org.eclipse.ui.internal.findandreplace.SearchOptions;
4138

4239
class DialogAccess implements IFindReplaceUIAccess {
4340

44-
FindReplaceLogic findReplaceLogic;
41+
private final IFindReplaceTarget findReplaceTarget;
4542

4643
Combo findCombo;
4744

@@ -77,9 +74,9 @@ class DialogAccess implements IFindReplaceUIAccess {
7774

7875
Accessor dialogAccessor;
7976

80-
DialogAccess(Accessor findReplaceDialogAccessor) {
77+
DialogAccess(IFindReplaceTarget findReplaceTarget, Accessor findReplaceDialogAccessor) {
78+
this.findReplaceTarget= findReplaceTarget;
8179
dialogAccessor= findReplaceDialogAccessor;
82-
findReplaceLogic= (FindReplaceLogic) findReplaceDialogAccessor.get("findReplaceLogic");
8380
findCombo= (Combo) findReplaceDialogAccessor.get("fFindField");
8481
replaceCombo= (Combo) findReplaceDialogAccessor.get("fReplaceField");
8582
forwardRadioButton= (Button) findReplaceDialogAccessor.get("fForwardRadioButton");
@@ -199,11 +196,6 @@ public void setReplaceText(String text) {
199196
replaceCombo.notifyListeners(SWT.Modify, null);
200197
}
201198

202-
@Override
203-
public IFindReplaceTarget getTarget() {
204-
return findReplaceLogic.getTarget();
205-
}
206-
207199
@Override
208200
public String getFindText() {
209201
return findCombo.getText();
@@ -219,11 +211,6 @@ public Combo getFindCombo() {
219211
return findCombo;
220212
}
221213

222-
@Override
223-
public IFindReplaceLogic getFindReplaceLogic() {
224-
return findReplaceLogic;
225-
}
226-
227214
@Override
228215
public void performReplaceAll() {
229216
replaceAllButton.notifyListeners(SWT.Selection, null);
@@ -241,20 +228,11 @@ public void performReplaceAndFind() {
241228

242229
@Override
243230
public void assertInitialConfiguration() {
244-
assertTrue(findReplaceLogic.isActive(SearchOptions.FORWARD));
245-
assertFalse(findReplaceLogic.isActive(SearchOptions.CASE_SENSITIVE));
246-
assertTrue(findReplaceLogic.isActive(SearchOptions.WRAP));
247-
assertFalse(findReplaceLogic.isActive(SearchOptions.INCREMENTAL));
248-
assertFalse(findReplaceLogic.isActive(SearchOptions.REGEX));
249-
assertFalse(findReplaceLogic.isActive(SearchOptions.WHOLE_WORD));
250-
251231
assertSelected(SearchOptions.FORWARD);
252-
if (!doesTextViewerHaveMultiLineSelection(findReplaceLogic.getTarget())) {
232+
if (!doesTextViewerHaveMultiLineSelection(findReplaceTarget)) {
253233
assertSelected(SearchOptions.GLOBAL);
254-
assertTrue(findReplaceLogic.isActive(SearchOptions.GLOBAL));
255234
} else {
256235
assertUnselected(SearchOptions.GLOBAL);
257-
assertFalse(findReplaceLogic.isActive(SearchOptions.GLOBAL));
258236
}
259237
assertSelected(SearchOptions.WRAP);
260238

tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/workbench/texteditor/tests/FindReplaceDialogTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public DialogAccess openUIFromTextViewer(TextViewer viewer) {
5151
Accessor fFindReplaceDialogStubAccessor= new Accessor(fFindReplaceDialogStub, "org.eclipse.ui.texteditor.FindReplaceAction$FindReplaceDialogStub", getClass().getClassLoader());
5252

5353
Accessor dialogAccessor= new Accessor(fFindReplaceDialogStubAccessor.invoke("getDialog", null), "org.eclipse.ui.texteditor.FindReplaceDialog", getClass().getClassLoader());
54-
return new DialogAccess(dialogAccessor);
54+
return new DialogAccess(getFindReplaceTarget(), dialogAccessor);
5555
}
5656

5757
@Test
@@ -122,7 +122,7 @@ public void testShiftEnterReversesSearchDirectionDialogSpecific() {
122122

123123
dialog.setFindText("line");
124124
ensureHasFocusOnGTK();
125-
IFindReplaceTarget target= dialog.getTarget();
125+
IFindReplaceTarget target= getFindReplaceTarget();
126126

127127
dialog.simulateKeyboardInteractionInFindInputField(SWT.CR, false);
128128
assertEquals(0, (target.getSelection()).x);
@@ -152,7 +152,7 @@ public void testReplaceAndFindAfterInitializingFindWithSelectedString() {
152152

153153
assertThat(dialog.getFindText(), is("text"));
154154

155-
IFindReplaceTarget target= dialog.getTarget();
155+
IFindReplaceTarget target= getFindReplaceTarget();
156156
assertEquals(0, (target.getSelection()).x);
157157
assertEquals(4, (target.getSelection()).y);
158158

@@ -209,7 +209,7 @@ public void testFindWithWholeWordEnabledWithMultipleWordsNotIncremental() {
209209
dialog.setFindText("two");
210210
dialog.select(SearchOptions.WHOLE_WORD);
211211
dialog.select(SearchOptions.WRAP);
212-
IFindReplaceTarget target= dialog.getTarget();
212+
IFindReplaceTarget target= getFindReplaceTarget();
213213

214214
dialog.simulateKeyboardInteractionInFindInputField(SWT.CR, false);
215215
assertEquals(0, (target.getSelection()).x);

0 commit comments

Comments
 (0)