blob: 13ae93d4bad65974458b51e2d6e4ad916b216271 [file] [log] [blame]
package com.intellij.vcs.log.graphmodel.fragment;
import junit.framework.Assert;
import com.intellij.vcs.log.graph.GraphTestUtils;
import com.intellij.vcs.log.graph.elements.Node;
import com.intellij.vcs.log.graph.mutable.MutableGraph;
import com.intellij.vcs.log.graphmodel.GraphFragment;
import org.jetbrains.annotations.NotNull;
import org.junit.Test;
import static com.intellij.vcs.log.graph.GraphTestUtils.getCommitNode;
import static com.intellij.vcs.log.graphmodel.fragment.GraphModelUtils.parseUnhiddenNodes;
import static com.intellij.vcs.log.graphmodel.fragment.GraphModelUtils.toStr;
/**
* @author erokhins
*/
public class ShortFragmentTest {
public void runTest(@NotNull String inputGraph, int rowIndex, String fragmentStr, final String unhiddenNodeRows, boolean down) {
MutableGraph graph = GraphTestUtils.getNewMutableGraph(inputGraph);
ShortFragmentGenerator shortFragmentGenerator = new ShortFragmentGenerator(graph);
shortFragmentGenerator.setUnconcealedNodeFunction(parseUnhiddenNodes(graph, unhiddenNodeRows));
Node commitNode = getCommitNode(graph, rowIndex);
GraphFragment fragment;
if (down) {
fragment = shortFragmentGenerator.getDownShortFragment(commitNode);
} else {
fragment = shortFragmentGenerator.getUpShortFragment(commitNode);
}
Assert.assertEquals(fragmentStr, toStr(fragment));
}
public void runTest(@NotNull String inputGraph, int rowIndex, String fragmentStr, boolean down) {
runTest(inputGraph, rowIndex, fragmentStr, "", down);
}
@Test
public void simpleDownTest() {
runTest(
"a0|-a1\n" +
"a1|-a2\n" +
"a2|-",
0,
"a0:0|-|-a1:1",
true
);
}
@Test
public void simpleUpTest() {
runTest(
"a0|-a1\n" +
"a1|-a2\n" +
"a2|-",
1,
"a0:0|-|-a1:1",
false
);
}
@Test
public void simpleNullDown() {
runTest(
"a0|-a1\n" +
"a1|-a2\n" +
"a2|-",
2,
"null",
true
);
}
@Test
public void simpleNullUp() {
runTest(
"a0|-a1\n" +
"a1|-a2\n" +
"a2|-",
0,
"null",
false
);
}
@Test
public void severalChildrenDown() {
runTest(
"a0|-a1 a2\n" +
"a1|-a2\n" +
"a2|-",
0,
"a0:0|-a1:1|-a2:2",
true
);
}
@Test
public void severalChildrenUp() {
runTest(
"a0|-a1 a2\n" +
"a1|-a2\n" +
"a2|-",
2,
"a0:0|-a1:1|-a2:2",
false
);
}
@Test
public void badEndNodeDown() {
runTest(
"a0|-a1 a3\n" +
"a1|-a3\n" +
"a2|-a3\n" +
"a3|-",
0,
"null",
true
);
}
@Test
public void badEndNodeUp() {
runTest(
"a0|-a2 a3 a1\n" +
"a1|-\n" +
"a2|-a3\n" +
"a3|-",
3,
"null",
false
);
}
@Test
public void badIntermediateNodeDown() {
runTest(
"a0|-a2 a3\n" +
"a1|-a2\n" +
"a2|-a3\n" +
"a3|-",
0,
"null",
true
);
}
@Test
public void badIntermediateNodeUp() {
runTest(
"a0|-a1 a3\n" +
"a1|-a2 a3\n" +
"a2|-\n" +
"a3|-",
3,
"null",
false
);
}
@Test
public void longEndNodeDown() {
runTest(
"a0|-a1 a2\n" +
"a1|-a2\n" +
"a2|-a3\n" +
"a3|-",
0,
"a0:0|-a1:1|-a2:2",
true
);
}
@Test
public void longEndNodeUp() {
runTest(
"a0|-a1\n" +
"a1|-a2 a3\n" +
"a2|-a3\n" +
"a3|-",
3,
"a1:1|-a2:2|-a3:3",
false
);
}
@Test
public void edgeNodesDown() {
runTest(
"a0|-a3 a1\n" +
"a1|-a2 a3\n" +
"a2|-a3\n" +
"a3|-",
0,
"a0:0|-a1:1 a2:2 a3:2|-a3:3",
true
);
}
@Test
public void edgeNodesUp() {
runTest(
"a0|-a3 a1\n" +
"a1|-a2 a3\n" +
"a2|-a3\n" +
"a3|-",
3,
"a0:0|-a1:1 a2:2 a3:2|-a3:3",
false
);
}
@Test
public void unhiddenMiddleTestDown() {
runTest(
"a0|-a3 a1\n" +
"a1|-a2 a3\n" +
"a2|-a3\n" +
"a3|-",
0,
"null",
"1",
true
);
}
@Test
public void unhiddenMiddleTestUp() {
runTest(
"a0|-a3 a1\n" +
"a1|-a2 a3\n" +
"a2|-a3\n" +
"a3|-",
3,
"null",
"1",
false
);
}
@Test
public void unhiddenEndTestDown() {
runTest(
"a0|-a3 a1\n" +
"a1|-a2 a3\n" +
"a2|-a3\n" +
"a3|-",
0,
"a0:0|-a1:1 a2:2 a3:2|-a3:3",
"0 3",
true
);
}
@Test
public void unhiddenEndTestUp() {
runTest(
"a0|-a3 a1\n" +
"a1|-a2 a3\n" +
"a2|-a3\n" +
"a3|-",
3,
"a0:0|-a1:1 a2:2 a3:2|-a3:3",
"0 3",
false
);
}
@Test
public void doubleLineEndTestDown() {
runTest(
"a0|-a2 a1\n" +
"a1|-\n" +
"a2|-",
0,
"a0:0|-a1:1|-a2:2",
true
);
}
@Test
public void doubleLineEndTestUp() {
runTest(
"a0|-a2\n" +
"a1|-a2\n" +
"a2|-",
2,
"a0:0|-a1:1|-a2:2",
false
);
}
}