blob: b96b2e3e6ee0a70bd047d4bb717c942462a04d1f [file] [log] [blame]
package com.intellij.openapi.diff.impl.splitter;
import com.intellij.openapi.diff.impl.fragments.LineBlock;
import com.intellij.openapi.diff.impl.highlighting.FragmentSide;
import junit.framework.TestCase;
public class LineBlocksTest extends TestCase {
public void testVisibles() {
LineBlocks lineBlocks = LineBlocks.createLineBlocks(new LineBlock[]{new LineBlock(0, 1, 2, 1, null), new LineBlock(2, 1, 4, 1, null)});
Interval indecies = lineBlocks.getVisibleIndices(new Trapezium(1, 1, 2, 1));
assertEquals(Interval.fromTo(0, 1), indecies);
assertEquals(new Trapezium(0, 1, 2, 1), lineBlocks.getTrapezium(indecies.getStart()));
indecies = lineBlocks.getVisibleIndices(new Trapezium(4, 2, 4, 3));
assertEquals(Interval.fromTo(1, 2), indecies);
assertEquals(new Trapezium(2, 1, 4, 1), lineBlocks.getTrapezium(indecies.getStart()));
indecies = lineBlocks.getVisibleIndices(new Trapezium(3, 1, 3, 1));
assertEquals(Interval.fromTo(1, 2), indecies);
assertEquals(new Trapezium(2, 1, 4, 1), lineBlocks.getTrapezium(indecies.getStart()));
}
public void testIndecies() {
Interval[] intervals = new Interval[]{new Interval(1, 2), new Interval(4, 2), new Interval(6, 2)};
assertEquals(0, LineBlocks.getMaxStartedIndex(intervals, 0));
assertEquals(0, LineBlocks.getMaxStartedIndex(intervals, 1));
assertEquals(0, LineBlocks.getMaxStartedIndex(intervals, 2));
assertEquals(1, LineBlocks.getMaxStartedIndex(intervals, 3));
assertEquals(1, LineBlocks.getMaxStartedIndex(intervals, 4));
assertEquals(1, LineBlocks.getMinNotStartedIndex(intervals, 2));
assertEquals(1, LineBlocks.getMinNotStartedIndex(intervals, 3));
assertEquals(2, LineBlocks.getMinNotStartedIndex(intervals, 6));
assertEquals(3, LineBlocks.getMinNotStartedIndex(intervals, 7));
}
public void testLineNumberTransformation() {
LineBlocks lineBlocks = LineBlocks.createLineBlocks(new LineBlock[]{
new LineBlock(2, 2, 2, 2, null),
new LineBlock(6, 1, 6, 2, null),
new LineBlock(8, 2, 9, 0, null)});
checkLeftRight(lineBlocks, 0, 0);
checkLeftRight(lineBlocks, 3, 3);
checkLeftRight(lineBlocks, 5, 5);
checkLeftRight(lineBlocks, 6, 6);
assertEquals(6, lineBlocks.transform(FragmentSide.SIDE2, 7));
checkLeftRight(lineBlocks, 7, 8);
checkLeftRight(lineBlocks, 8, 9);
assertEquals(9, lineBlocks.transform(FragmentSide.SIDE1, 9));
assertEquals(9, lineBlocks.transform(FragmentSide.SIDE1, 10));
checkLeftRight(lineBlocks, 11, 10);
}
private void checkLeftRight(LineBlocks lineBlocks, int left, int right) {
assertEquals(right, lineBlocks.transform(FragmentSide.SIDE1, left));
assertEquals(left, lineBlocks.transform(FragmentSide.SIDE2, right));
}
}