Changeset View
Changeset View
Standalone View
Standalone View
java/src/test/java/org/softwareheritage/graph/AllowedEdgesTest.java
package org.softwareheritage.graph; | package org.softwareheritage.graph; | ||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import org.junit.Test; | import org.junit.Test; | ||||
import org.junit.Assert; | import org.junit.Assert; | ||||
import org.softwareheritage.graph.AllowedEdges; | |||||
import org.softwareheritage.graph.GraphTest; | |||||
import org.softwareheritage.graph.Node; | |||||
public class AllowedEdgesTest extends GraphTest { | public class AllowedEdgesTest extends GraphTest { | ||||
class EdgeType { | static class EdgeType { | ||||
Node.Type src; | Node.Type src; | ||||
Node.Type dst; | Node.Type dst; | ||||
public EdgeType(Node.Type src, Node.Type dst) { | public EdgeType(Node.Type src, Node.Type dst) { | ||||
this.src = src; | this.src = src; | ||||
this.dst = dst; | this.dst = dst; | ||||
} | } | ||||
Show All 16 Lines | void assertEdgeRestriction(AllowedEdges edges, ArrayList<EdgeType> expectedAllowed) { | ||||
boolean isExpected = false; | boolean isExpected = false; | ||||
for (EdgeType expected : expectedAllowed) { | for (EdgeType expected : expectedAllowed) { | ||||
if (expected.equals(edge)) { | if (expected.equals(edge)) { | ||||
isExpected = true; | isExpected = true; | ||||
break; | break; | ||||
} | } | ||||
} | } | ||||
Assert.assertTrue("Edge type: " + src + " -> " + dst, isAllowed == isExpected); | Assert.assertEquals("Edge type: " + src + " -> " + dst, isAllowed, isExpected); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
@Test | @Test | ||||
public void dirToDirDirToCntEdges() { | public void dirToDirDirToCntEdges() { | ||||
Graph graph = getGraph(); | AllowedEdges edges = new AllowedEdges("dir:dir,dir:cnt"); | ||||
AllowedEdges edges = new AllowedEdges(graph, "dir:dir,dir:cnt"); | |||||
ArrayList<EdgeType> expected = new ArrayList<>(); | ArrayList<EdgeType> expected = new ArrayList<>(); | ||||
expected.add(new EdgeType(Node.Type.DIR, Node.Type.DIR)); | expected.add(new EdgeType(Node.Type.DIR, Node.Type.DIR)); | ||||
expected.add(new EdgeType(Node.Type.DIR, Node.Type.CNT)); | expected.add(new EdgeType(Node.Type.DIR, Node.Type.CNT)); | ||||
assertEdgeRestriction(edges, expected); | assertEdgeRestriction(edges, expected); | ||||
} | } | ||||
@Test | @Test | ||||
public void relToRevRevToRevRevToDirEdges() { | public void relToRevRevToRevRevToDirEdges() { | ||||
Graph graph = getGraph(); | AllowedEdges edges = new AllowedEdges("rel:rev,rev:rev,rev:dir"); | ||||
AllowedEdges edges = new AllowedEdges(graph, "rel:rev,rev:rev,rev:dir"); | |||||
ArrayList<EdgeType> expected = new ArrayList<>(); | ArrayList<EdgeType> expected = new ArrayList<>(); | ||||
expected.add(new EdgeType(Node.Type.REL, Node.Type.REV)); | expected.add(new EdgeType(Node.Type.REL, Node.Type.REV)); | ||||
expected.add(new EdgeType(Node.Type.REV, Node.Type.REV)); | expected.add(new EdgeType(Node.Type.REV, Node.Type.REV)); | ||||
expected.add(new EdgeType(Node.Type.REV, Node.Type.DIR)); | expected.add(new EdgeType(Node.Type.REV, Node.Type.DIR)); | ||||
assertEdgeRestriction(edges, expected); | assertEdgeRestriction(edges, expected); | ||||
} | } | ||||
@Test | @Test | ||||
public void revToAllDirToDirEdges() { | public void revToAllDirToDirEdges() { | ||||
Graph graph = getGraph(); | AllowedEdges edges = new AllowedEdges("rev:*,dir:dir"); | ||||
AllowedEdges edges = new AllowedEdges(graph, "rev:*,dir:dir"); | |||||
ArrayList<EdgeType> expected = new ArrayList<>(); | ArrayList<EdgeType> expected = new ArrayList<>(); | ||||
for (Node.Type dst : Node.Type.values()) { | for (Node.Type dst : Node.Type.values()) { | ||||
expected.add(new EdgeType(Node.Type.REV, dst)); | expected.add(new EdgeType(Node.Type.REV, dst)); | ||||
} | } | ||||
expected.add(new EdgeType(Node.Type.DIR, Node.Type.DIR)); | expected.add(new EdgeType(Node.Type.DIR, Node.Type.DIR)); | ||||
assertEdgeRestriction(edges, expected); | assertEdgeRestriction(edges, expected); | ||||
} | } | ||||
@Test | @Test | ||||
public void allToCntEdges() { | public void allToCntEdges() { | ||||
Graph graph = getGraph(); | AllowedEdges edges = new AllowedEdges("*:cnt"); | ||||
AllowedEdges edges = new AllowedEdges(graph, "*:cnt"); | |||||
ArrayList<EdgeType> expected = new ArrayList<>(); | ArrayList<EdgeType> expected = new ArrayList<>(); | ||||
for (Node.Type src : Node.Type.values()) { | for (Node.Type src : Node.Type.values()) { | ||||
expected.add(new EdgeType(src, Node.Type.CNT)); | expected.add(new EdgeType(src, Node.Type.CNT)); | ||||
} | } | ||||
assertEdgeRestriction(edges, expected); | assertEdgeRestriction(edges, expected); | ||||
} | } | ||||
@Test | @Test | ||||
public void allEdges() { | public void allEdges() { | ||||
Graph graph = getGraph(); | AllowedEdges edges = new AllowedEdges("*:*"); | ||||
AllowedEdges edges = new AllowedEdges(graph, "*:*"); | |||||
ArrayList<EdgeType> expected = new ArrayList<>(); | ArrayList<EdgeType> expected = new ArrayList<>(); | ||||
for (Node.Type src : Node.Type.values()) { | for (Node.Type src : Node.Type.values()) { | ||||
for (Node.Type dst : Node.Type.values()) { | for (Node.Type dst : Node.Type.values()) { | ||||
expected.add(new EdgeType(src, dst)); | expected.add(new EdgeType(src, dst)); | ||||
} | } | ||||
} | } | ||||
assertEdgeRestriction(edges, expected); | assertEdgeRestriction(edges, expected); | ||||
// Special null value used to quickly bypass edge check when no restriction | // Special null value used to quickly bypass edge check when no restriction | ||||
AllowedEdges edges2 = new AllowedEdges(graph, "*"); | AllowedEdges edges2 = new AllowedEdges("*"); | ||||
Assert.assertNull(edges2.restrictedTo); | Assert.assertNull(edges2.restrictedTo); | ||||
} | } | ||||
@Test | @Test | ||||
public void noEdges() { | public void noEdges() { | ||||
Graph graph = getGraph(); | AllowedEdges edges = new AllowedEdges(""); | ||||
AllowedEdges edges = new AllowedEdges(graph, ""); | AllowedEdges edges2 = new AllowedEdges(null); | ||||
AllowedEdges edges2 = new AllowedEdges(graph, null); | |||||
ArrayList<EdgeType> expected = new ArrayList<>(); | ArrayList<EdgeType> expected = new ArrayList<>(); | ||||
assertEdgeRestriction(edges, expected); | assertEdgeRestriction(edges, expected); | ||||
assertEdgeRestriction(edges2, expected); | assertEdgeRestriction(edges2, expected); | ||||
} | } | ||||
} | } |