blob: d67ef01f310bf65dd45c45ad774eeb8189c6be2c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2015 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui.workbench.texteditor.tests.revisions;
import java.util.Date;
import java.util.List;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.jface.internal.text.revisions.ChangeRegion;
import org.eclipse.jface.internal.text.revisions.Hunk;
import org.eclipse.jface.internal.text.revisions.Range;
import org.eclipse.jface.text.revisions.Revision;
import org.eclipse.jface.text.source.LineRange;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
/**
*
* @since 3.2
*/
public class ChangeRegionTest extends TestCase {
public static Test suite() {
return new TestSuite(ChangeRegionTest.class);
}
public static final class TestRevision extends Revision {
@Override
public Object getHoverInfo() {
return null;
}
@Override
public RGB getColor() {
return null;
}
@Override
public String getId() {
return null;
}
@Override
public Date getDate() {
return null;
}
}
private Revision fRevision;
@Override
protected void setUp() throws Exception {
fRevision= new TestRevision();
}
public void testCreation() throws Exception {
try {
new ChangeRegion(fRevision, null);
fail();
} catch (Exception e) {
}
try {
new ChangeRegion(null, new LineRange(12, 3));
fail();
} catch (Exception e) {
}
try {
new ChangeRegion(null, null);
fail();
} catch (Exception e) {
}
ChangeRegion r= new ChangeRegion(fRevision, new LineRange(12, 3));
assertEquals(fRevision, r.getRevision());
RangeUtil.assertEqualRange(new LineRange(12, 3), r.getAdjustedRanges().get(0));
RangeUtil.assertEqualRange(new LineRange(12, 3), r.getAdjustedCoverage());
}
public void testHunkAfter() throws Exception {
ChangeRegion r= new ChangeRegion(fRevision, new LineRange(12, 3));
List<Range> before= RangeUtil.deepClone(r.getAdjustedRanges());
r.adjustTo(new Hunk(16, 3, 2));
RangeUtil.assertEqualRanges(before, r.getAdjustedRanges());
RangeUtil.assertEqualRange(before.get(0), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 3));
before= RangeUtil.deepClone(r.getAdjustedRanges());
r.adjustTo(new Hunk(16, -33, 2));
RangeUtil.assertEqualRanges(before, r.getAdjustedRanges());
RangeUtil.assertEqualRange(before.get(0), r.getAdjustedCoverage());
}
public void testHunkRightAfter() throws Exception {
ChangeRegion r= new ChangeRegion(fRevision, new LineRange(12, 3));
List<Range> before= RangeUtil.deepClone(r.getAdjustedRanges());
r.adjustTo(new Hunk(15, 3, 2));
RangeUtil.assertEqualRanges(before, r.getAdjustedRanges());
RangeUtil.assertEqualRange(before.get(0), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 3));
before= RangeUtil.deepClone(r.getAdjustedRanges());
r.adjustTo(new Hunk(15, -3, 2));
RangeUtil.assertEqualRanges(before, r.getAdjustedRanges());
RangeUtil.assertEqualRange(before.get(0), r.getAdjustedCoverage());
}
public void testHunkBefore() throws Exception {
ChangeRegion r;
r= new ChangeRegion(fRevision, new LineRange(12, 3));
r.adjustTo(new Hunk(5, 3, 2));
RangeUtil.assertEqualSingleRange(new LineRange(15, 3), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(15, 3), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 3));
r.adjustTo(new Hunk(5, 3, 0));
RangeUtil.assertEqualSingleRange(new LineRange(15, 3), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(15, 3), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 3));
r.adjustTo(new Hunk(5, -3, 0));
RangeUtil.assertEqualSingleRange(new LineRange(9, 3), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(9, 3), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 3));
r.adjustTo(new Hunk(5, 3, 3));
RangeUtil.assertEqualSingleRange(new LineRange(15, 3), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(15, 3), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 3));
r.adjustTo(new Hunk(5, -3, 2));
RangeUtil.assertEqualSingleRange(new LineRange(9, 3), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(9, 3), r.getAdjustedCoverage());
}
public void testHunkRightBefore() throws Exception {
ChangeRegion r;
r= new ChangeRegion(fRevision, new LineRange(12, 3));
r.adjustTo(new Hunk(10, 0 , 2));
RangeUtil.assertEqualSingleRange(new LineRange(12, 3), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(12, 3), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 3));
r.adjustTo(new Hunk(10, 2 , 2));
RangeUtil.assertEqualSingleRange(new LineRange(14, 3), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(14, 3), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 3));
r.adjustTo(new Hunk(9, -3, 0));
RangeUtil.assertEqualSingleRange(new LineRange(9, 3), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(9, 3), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 3));
r.adjustTo(new Hunk(9, -1, 2));
RangeUtil.assertEqualSingleRange(new LineRange(11, 3), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(11, 3), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 3));
r.adjustTo(new Hunk(9, 3, 3));
RangeUtil.assertEqualSingleRange(new LineRange(15, 3), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(15, 3), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 3));
r.adjustTo(new Hunk(12, 3, 0));
RangeUtil.assertEqualSingleRange(new LineRange(15, 3), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(15, 3), r.getAdjustedCoverage());
}
public void testHunkAtStart() throws Exception {
ChangeRegion r;
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(12, 0 , 2));
RangeUtil.assertEqualSingleRange(new LineRange(14, 5), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(14, 5), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(12, -2, 0));
RangeUtil.assertEqualSingleRange(new LineRange(12, 5), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(12, 5), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(12, -2, 1));
RangeUtil.assertEqualSingleRange(new LineRange(13, 4), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(13, 4), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(12, 3, 0));
RangeUtil.assertEqualSingleRange(new LineRange(15, 7), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(15, 7), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(12, 3, 2));
RangeUtil.assertEqualSingleRange(new LineRange(17, 5), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(17, 5), r.getAdjustedCoverage());
}
public void testHunkAtEnd() throws Exception {
ChangeRegion r;
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(17, 0, 2));
RangeUtil.assertEqualSingleRange(new LineRange(12, 5), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(12, 5), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(17, 2, 2));
RangeUtil.assertEqualSingleRange(new LineRange(12, 5), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(12, 5), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(15, -2, 2));
RangeUtil.assertEqualSingleRange(new LineRange(12, 3), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(12, 3), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(17, -2, 0));
RangeUtil.assertEqualSingleRange(new LineRange(12, 5), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(12, 5), r.getAdjustedCoverage());
}
public void testHunkOverStart() throws Exception {
ChangeRegion r;
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(11, 0 , 2));
RangeUtil.assertEqualSingleRange(new LineRange(13, 6), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(13, 6), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(11, 2, 2));
RangeUtil.assertEqualSingleRange(new LineRange(15, 6), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(15, 6), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(11, -2, 2));
RangeUtil.assertEqualSingleRange(new LineRange(13, 4), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(13, 4), r.getAdjustedCoverage());
}
public void testHunkOverEnd() throws Exception {
ChangeRegion r;
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(18, 0 , 2));
RangeUtil.assertEqualSingleRange(new LineRange(12, 6), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(12, 6), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(18, -2, 0));
RangeUtil.assertEqualSingleRange(new LineRange(12, 6), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(12, 6), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(18, -2, 2));
RangeUtil.assertEqualSingleRange(new LineRange(12, 6), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(12, 6), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(17, -2, 1));
RangeUtil.assertEqualSingleRange(new LineRange(12, 5), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(12, 5), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(17, -2, 3));
RangeUtil.assertEqualSingleRange(new LineRange(12, 5), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(12, 5), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(17, 2, 3));
RangeUtil.assertEqualSingleRange(new LineRange(12, 5), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(12, 5), r.getAdjustedCoverage());
}
public void testHunkCovering() throws Exception {
ChangeRegion r;
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(12, 0 , 7));
assertTrue(r.getAdjustedRanges().isEmpty());
RangeUtil.assertEqualRange(new LineRange(12, 0), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(11, 0 , 8));
assertTrue(r.getAdjustedRanges().isEmpty());
RangeUtil.assertEqualRange(new LineRange(12, 0), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(11, 0 , 9));
assertTrue(r.getAdjustedRanges().isEmpty());
RangeUtil.assertEqualRange(new LineRange(12, 0), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(12, 0 , 9));
assertTrue(r.getAdjustedRanges().isEmpty());
RangeUtil.assertEqualRange(new LineRange(12, 0), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(12, -7, 0));
assertTrue(r.getAdjustedRanges().isEmpty());
RangeUtil.assertEqualRange(new LineRange(12, 0), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(12, -8, 0));
assertTrue(r.getAdjustedRanges().isEmpty());
RangeUtil.assertEqualRange(new LineRange(12, 0), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(11, -8, 0));
assertTrue(r.getAdjustedRanges().isEmpty());
RangeUtil.assertEqualRange(new LineRange(12, 0), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(11, -9, 0));
assertTrue(r.getAdjustedRanges().isEmpty());
RangeUtil.assertEqualRange(new LineRange(12, 0), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(8, -9, 6));
assertTrue(r.getAdjustedRanges().isEmpty());
RangeUtil.assertEqualRange(new LineRange(12, 0), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(8, -4, 8));
assertTrue(r.getAdjustedRanges().isEmpty());
RangeUtil.assertEqualRange(new LineRange(12, 0), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(8, -3, 9));
assertTrue(r.getAdjustedRanges().isEmpty());
RangeUtil.assertEqualRange(new LineRange(12, 0), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(8, -12, 5));
assertTrue(r.getAdjustedRanges().isEmpty());
RangeUtil.assertEqualRange(new LineRange(12, 0), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(8, -12, 20));
assertTrue(r.getAdjustedRanges().isEmpty());
RangeUtil.assertEqualRange(new LineRange(12, 0), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(8, 12, 20));
assertTrue(r.getAdjustedRanges().isEmpty());
RangeUtil.assertEqualRange(new LineRange(12, 0), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(8, -3, 8));
assertTrue(r.getAdjustedRanges().isEmpty());
RangeUtil.assertEqualRange(new LineRange(12, 0), r.getAdjustedCoverage());
}
public void testHunkInBetween() throws Exception {
// TODO require merging of adjacent ranges?
ChangeRegion r;
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(15, -2, 0));
RangeUtil.assertEqualRanges(new LineRange(12, 3), new LineRange(15, 2), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(12, 5), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(15, 2, 0));
RangeUtil.assertEqualRanges(new LineRange(12, 3), new LineRange(17, 4), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(12, 9), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(15, 0, 2));
RangeUtil.assertEqualRanges(new LineRange(12, 3), new LineRange(17, 2), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(12, 7), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(15, -1, 2));
RangeUtil.assertEqualRanges(new LineRange(12, 3), new LineRange(17, 1), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(12, 6), r.getAdjustedCoverage());
r= new ChangeRegion(fRevision, new LineRange(12, 7));
r.adjustTo(new Hunk(15, 2, 2));
RangeUtil.assertEqualRanges(new LineRange(12, 3), new LineRange(19, 2), r.getAdjustedRanges());
RangeUtil.assertEqualRange(new LineRange(12, 9), r.getAdjustedCoverage());
}
}