Skip to content

Commit b8069d2

Browse files
committed
Updated TextMergeViewerTest with more pre/post conditions checks
Prepare the test to be executed with swapped left/right logic. See eclipse-platform/eclipse.platform.ui#3776
1 parent 8a99f8c commit b8069d2

File tree

1 file changed

+82
-22
lines changed

1 file changed

+82
-22
lines changed

team/tests/org.eclipse.compare.tests/src/org/eclipse/compare/tests/TextMergeViewerTest.java

Lines changed: 82 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@
4141
import org.eclipse.compare.contentmergeviewer.TextMergeViewer;
4242
import org.eclipse.compare.contentmergeviewer.TokenComparator;
4343
import org.eclipse.compare.internal.ChangeCompareFilterPropertyAction;
44+
import org.eclipse.compare.internal.ComparePreferencePage;
45+
import org.eclipse.compare.internal.CompareUIPlugin;
4446
import org.eclipse.compare.internal.IMergeViewerTestAdapter;
4547
import org.eclipse.compare.internal.MergeViewerContentProvider;
4648
import org.eclipse.compare.internal.Utilities;
@@ -56,6 +58,7 @@
5658
import org.eclipse.jface.action.IContributionItem;
5759
import org.eclipse.jface.action.ToolBarManager;
5860
import org.eclipse.jface.dialogs.Dialog;
61+
import org.eclipse.jface.preference.IPreferenceStore;
5962
import org.eclipse.jface.text.Document;
6063
import org.eclipse.jface.text.DocumentEvent;
6164
import org.eclipse.jface.text.IDocument;
@@ -75,6 +78,15 @@
7578

7679
public class TextMergeViewerTest {
7780

81+
static boolean rightIsChanged() {
82+
IPreferenceStore store = CompareUIPlugin.getDefault().getPreferenceStore();
83+
return store.getBoolean(ComparePreferencePage.SWAPPED);
84+
}
85+
86+
static boolean leftIsChanged() {
87+
return !rightIsChanged();
88+
}
89+
7890
/**
7991
* Returns a boolean value indicating whether or not the contents
8092
* of the given streams are considered to be equal. Closes both input streams.
@@ -179,7 +191,7 @@ public String getType() {
179191
}
180192
@Override
181193
public InputStream getContents() {
182-
return new ByteArrayInputStream(contents);
194+
return contents == null ? null : new ByteArrayInputStream(contents);
183195
}
184196
@Override
185197
protected Object clone() {
@@ -207,7 +219,7 @@ public boolean equals(Object obj) {
207219
return false;
208220
}
209221
public Object getContentsAsString() {
210-
return new String(contents);
222+
return contents == null ? null : new String(contents);
211223
}
212224
}
213225

@@ -286,31 +298,41 @@ public void testCopyRightToLeft() throws Exception {
286298
DiffNode parentNode = new DiffNode(new ParentTestElement(), new ParentTestElement());
287299
String copiedText = "hi there";
288300
DiffNode testNode = new DiffNode(parentNode, Differencer.CHANGE, null, new EditableTestElement("some text".getBytes()), new EditableTestElement(copiedText.getBytes()));
301+
assertEquals("some text", ((EditableTestElement) testNode.getLeft()).getContentsAsString());
302+
assertEquals(copiedText, ((EditableTestElement) testNode.getRight()).getContentsAsString());
303+
289304
runInDialog(testNode, () -> {
290-
viewer.copy(false /* rightToLeft */);
305+
viewer.copy(rightIsChanged() /* rightToLeft */);
291306
saveViewerContents();
292307
});
293-
assertEquals(copiedText, ((EditableTestElement)testNode.getLeft()).getContentsAsString());
308+
assertEquals(copiedText, ((EditableTestElement) testNode.getLeft()).getContentsAsString());
309+
assertEquals(copiedText, ((EditableTestElement) testNode.getRight()).getContentsAsString());
294310
}
295311

296312
@Test
297313
public void testCopyLeftToRight() throws Exception {
298314
DiffNode parentNode = new DiffNode(new ParentTestElement(), new ParentTestElement());
299315
String copiedText = "hi there";
300316
DiffNode testNode = new DiffNode(parentNode, Differencer.CHANGE, null, new EditableTestElement(copiedText.getBytes()), new EditableTestElement("some text".getBytes()));
317+
assertEquals(copiedText, ((EditableTestElement) testNode.getLeft()).getContentsAsString());
318+
assertEquals("some text", ((EditableTestElement) testNode.getRight()).getContentsAsString());
319+
301320
runInDialog(testNode, () -> {
302-
viewer.copy(true /* leftToRight */);
321+
viewer.copy(leftIsChanged() /* leftToRight */);
303322
saveViewerContents();
304323
});
305-
assertEquals(copiedText, ((EditableTestElement)testNode.getRight()).getContentsAsString());
324+
assertEquals(copiedText, ((EditableTestElement) testNode.getLeft()).getContentsAsString());
325+
assertEquals(copiedText, ((EditableTestElement) testNode.getRight()).getContentsAsString());
306326
}
307327

308328
@Test
309329
public void testCopyRightToEmptyLeft() throws Exception {
310330
DiffNode parentNode = new DiffNode(new ParentTestElement(), new ParentTestElement());
311331
DiffNode testNode = new DiffNode(parentNode, Differencer.ADDITION, null, null, new EditableTestElement("hi there".getBytes()));
332+
assertNull(testNode.getLeft());
333+
assertEquals("hi there", ((EditableTestElement) testNode.getRight()).getContentsAsString());
312334
runInDialog(testNode, () -> {
313-
viewer.copy(false /* rightToLeft */);
335+
viewer.copy(rightIsChanged() /* rightToLeft */);
314336
saveViewerContents();
315337
});
316338
assertEquals(testNode.getRight(), testNode.getLeft());
@@ -320,8 +342,10 @@ public void testCopyRightToEmptyLeft() throws Exception {
320342
public void testCopyLeftToEmptyRight() throws Exception {
321343
DiffNode parentNode = new DiffNode(new ParentTestElement(), new ParentTestElement());
322344
DiffNode testNode = new DiffNode(parentNode, Differencer.DELETION, null, new EditableTestElement("hi there".getBytes()), null);
345+
assertEquals("hi there", ((EditableTestElement) testNode.getLeft()).getContentsAsString());
346+
assertNull(testNode.getRight());
323347
runInDialog(testNode, () -> {
324-
viewer.copy(true /* leftToRight */);
348+
viewer.copy(leftIsChanged() /* leftToRight */);
325349
saveViewerContents();
326350
});
327351
assertEquals(testNode.getRight(), testNode.getLeft());
@@ -331,8 +355,10 @@ public void testCopyLeftToEmptyRight() throws Exception {
331355
public void testCopyEmptyLeftToRight() throws Exception {
332356
DiffNode parentNode = new DiffNode(new ParentTestElement(), new ParentTestElement());
333357
DiffNode testNode = new DiffNode(parentNode, Differencer.ADDITION, null, null, new EditableTestElement("hi there".getBytes()));
358+
assertNull(testNode.getLeft());
359+
assertEquals("hi there", ((EditableTestElement) testNode.getRight()).getContentsAsString());
334360
runInDialog(testNode, () -> {
335-
viewer.copy(true /* leftToRight */);
361+
viewer.copy(leftIsChanged() /* leftToRight */);
336362
saveViewerContents();
337363
});
338364
assertNull(testNode.getLeft());
@@ -343,8 +369,10 @@ public void testCopyEmptyLeftToRight() throws Exception {
343369
public void testCopyEmptyRightToLeft() throws Exception {
344370
DiffNode parentNode = new DiffNode(new ParentTestElement(), new ParentTestElement());
345371
DiffNode testNode = new DiffNode(parentNode, Differencer.DELETION, null, new EditableTestElement("hi there".getBytes()), null);
372+
assertEquals("hi there", ((EditableTestElement) testNode.getLeft()).getContentsAsString());
373+
assertNull(testNode.getRight());
346374
runInDialog(testNode, () -> {
347-
viewer.copy(false /* rightToLeft */);
375+
viewer.copy(rightIsChanged() /* rightToLeft */);
348376
saveViewerContents();
349377
});
350378
assertNull(testNode.getLeft());
@@ -354,53 +382,81 @@ public void testCopyEmptyRightToLeft() throws Exception {
354382
@Test
355383
public void testModifyLeft() throws Exception {
356384
DiffNode testNode = new DiffNode(new EditableTestElement("hi there".getBytes()), null);
385+
assertEquals("hi there", ((EditableTestElement) testNode.getLeft()).getContentsAsString());
386+
assertNull(testNode.getRight());
387+
357388
final String newText = "New text";
358389
runInDialog(testNode, () -> {
359-
IDocument doc = getDocument(true /* left */);
390+
IDocument doc = getDocument(leftIsChanged() /* left */);
360391
doc.set(newText);
361392
saveViewerContents();
362393
});
363394
assertEquals(newText, ((EditableTestElement)testNode.getLeft()).getContentsAsString());
395+
assertNull(testNode.getRight());
364396
}
365397

366398
@Test
367399
public void testModifyRight() throws Exception {
368400
DiffNode testNode = new DiffNode(null, new EditableTestElement("hi there".getBytes()));
401+
assertEquals("hi there", ((EditableTestElement) testNode.getRight()).getContentsAsString());
402+
assertNull(testNode.getLeft());
369403
final String newText = "New text";
370404
runInDialog(testNode, () -> {
371-
IDocument doc = getDocument(false /* right */);
405+
IDocument doc = getDocument(rightIsChanged() /* right */);
372406
doc.set(newText);
373407
saveViewerContents();
374408
});
375409
assertEquals(newText, ((EditableTestElement)testNode.getRight()).getContentsAsString());
410+
assertNull(testNode.getLeft());
376411
}
377412

378413
@Test
379414
public void testCopyEmptyRightToLeftAndModify() throws Exception {
380415
DiffNode parentNode = new DiffNode(new ParentTestElement(), new ParentTestElement());
381-
DiffNode testNode = new DiffNode(parentNode, Differencer.ADDITION, null, null, new EditableTestElement("hi there".getBytes()));
416+
int kind = leftIsChanged() ? Differencer.ADDITION : Differencer.DELETION;
417+
DiffNode testNode = new DiffNode(parentNode, kind, null, new EditableTestElement(null), new EditableTestElement("hi there".getBytes()));
418+
assertNull(((EditableTestElement) testNode.getLeft()).getContentsAsString());
419+
assertEquals("hi there", ((EditableTestElement) testNode.getRight()).getContentsAsString());
420+
382421
final String newText = "New text";
383422
runInDialog(testNode, () -> {
384-
viewer.copy(false /* rightToLeft */);
385-
IDocument doc = getDocument(true /* left */);
423+
viewer.copy(rightIsChanged() /* rightToLeft */);
424+
IDocument doc = getDocument(leftIsChanged() /* left */);
386425
doc.set(newText);
387426
saveViewerContents();
388427
});
389-
assertEquals(newText, ((EditableTestElement)testNode.getLeft()).getContentsAsString());
428+
429+
if (leftIsChanged()) {
430+
assertEquals(newText, ((EditableTestElement) testNode.getLeft()).getContentsAsString());
431+
assertEquals("hi there", ((EditableTestElement) testNode.getRight()).getContentsAsString());
432+
} else {
433+
assertEquals(newText, ((EditableTestElement) testNode.getRight()).getContentsAsString());
434+
assertEquals("hi there", ((EditableTestElement) testNode.getLeft()).getContentsAsString());
435+
}
390436
}
391437

392438
@Test
393439
public void testCopyEmptyLeftToRightAndModify() throws Exception {
394440
DiffNode parentNode = new DiffNode(new ParentTestElement(), new ParentTestElement());
395-
DiffNode testNode = new DiffNode(parentNode, Differencer.DELETION, null, new EditableTestElement("hi there".getBytes()), null);
441+
int kind = leftIsChanged() ? Differencer.DELETION : Differencer.ADDITION;
442+
DiffNode testNode = new DiffNode(parentNode, kind, null, new EditableTestElement("hi there".getBytes()), new EditableTestElement(null));
443+
assertEquals("hi there", ((EditableTestElement) testNode.getLeft()).getContentsAsString());
444+
assertNull(((EditableTestElement) testNode.getRight()).getContentsAsString());
445+
396446
final String newText = "New text";
397447
runInDialog(testNode, () -> {
398-
viewer.copy(true /* leftToRight */);
399-
IDocument doc = getDocument(false /* right */);
448+
viewer.copy(leftIsChanged() /* leftToRight */);
449+
IDocument doc = getDocument(rightIsChanged() /* right */);
400450
doc.set(newText);
401451
saveViewerContents();
402452
});
403-
assertEquals(newText, ((EditableTestElement)testNode.getRight()).getContentsAsString());
453+
if (leftIsChanged()) {
454+
assertEquals("hi there", ((EditableTestElement) testNode.getLeft()).getContentsAsString());
455+
assertEquals(newText, ((EditableTestElement) testNode.getRight()).getContentsAsString());
456+
} else {
457+
assertEquals("hi there", ((EditableTestElement) testNode.getRight()).getContentsAsString());
458+
assertEquals(newText, ((EditableTestElement) testNode.getLeft()).getContentsAsString());
459+
}
404460
}
405461

406462
@Test
@@ -414,8 +470,12 @@ public void testCompareFilter() throws Exception {
414470
leftString.getBytes());
415471
final EditableTestElement rightElement = new EditableTestElement(
416472
rightString.getBytes());
417-
DiffNode testNode = new DiffNode(parentNode, Differencer.CHANGE, null,
418-
leftElement, rightElement);
473+
DiffNode testNode;
474+
if (leftIsChanged()) {
475+
testNode = new DiffNode(parentNode, Differencer.CHANGE, null, leftElement, rightElement);
476+
} else {
477+
testNode = new DiffNode(parentNode, Differencer.CHANGE, null, rightElement, leftElement);
478+
}
419479
final CompareConfiguration cc = new CompareConfiguration();
420480
runInDialog(testNode, () -> {
421481
Object adapter = viewer

0 commit comments

Comments
 (0)