package com.orientechnologies.orient.graph.blueprints;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import com.orientechnologies.orient.core.sql.OCommandSQL;
import com.tinkerpop.blueprints.Edge;
import com.tinkerpop.blueprints.Vertex;
import com.tinkerpop.blueprints.impls.orient.OrientGraph;
public class GraphFunctionsTest {
private static String DB_URL = "memory:" + GraphFunctionsTest.class.getSimpleName();
private static OrientGraph graph;
private static Vertex v1;
private static Vertex v2;
private static Vertex v3;
private static Edge e1;
private static Edge e2;
public GraphFunctionsTest() {
}
@BeforeClass
public static void before() {
graph = new OrientGraph(DB_URL);
if (graph.getEdgeType("SubEdge") == null)
graph.createEdgeType("SubEdge");
if (graph.getVertexType("SubVertex") == null)
graph.createVertexType("SubVertex");
v1 = graph.addVertex("class:SubVertex");
v2 = graph.addVertex("class:SubVertex");
v3 = graph.addVertex(null);
e1 = graph.addEdge("class:SubEdge", v1, v2, null);
e2 = graph.addEdge(null, v1, v3, "contains");
graph.commit();
}
@AfterClass
public static void after() {
graph.drop();
graph = null;
v1 = null;
v2 = null;
v3 = null;
e1 = null;
e2 = null;
}
@Test
public void testOut() {
int found;
// V1
found = 0;
for (Vertex v : (Iterable<Vertex>) graph.command(new OCommandSQL("select expand( out() ) from " + v1.getId())).execute())
found++;
Assert.assertEquals(found, 2);
found = 0;
for (Vertex v : (Iterable<Vertex>) graph.command(new OCommandSQL("select expand( out('SubEdge') ) from " + v1.getId()))
.execute())
found++;
Assert.assertEquals(found, 1);
found = 0;
for (Vertex v : (Iterable<Vertex>) graph.command(new OCommandSQL("select expand( out('dddd') ) from " + v1.getId())).execute())
found++;
Assert.assertEquals(found, 0);
// V2
found = 0;
for (Vertex v : (Iterable<Vertex>) graph.command(new OCommandSQL("select expand( out() ) from " + v2.getId())).execute())
found++;
Assert.assertEquals(found, 0);
// V3
found = 0;
for (Vertex v : (Iterable<Vertex>) graph.command(new OCommandSQL("select expand( out() ) from " + v3.getId())).execute())
found++;
Assert.assertEquals(found, 0);
}
@Test
public void testIn() {
int found;
// V1
found = 0;
for (Vertex v : (Iterable<Vertex>) graph.command(new OCommandSQL("select expand( in() ) from " + v1.getId())).execute())
found++;
Assert.assertEquals(found, 0);
// V2
found = 0;
for (Vertex v : (Iterable<Vertex>) graph.command(new OCommandSQL("select expand( in() ) from " + v2.getId())).execute())
found++;
Assert.assertEquals(found, 1);
found = 0;
for (Vertex v : (Iterable<Vertex>) graph.command(new OCommandSQL("select expand( in('SubEdge') ) from " + v2.getId()))
.execute())
found++;
Assert.assertEquals(found, 1);
found = 0;
for (Vertex v : (Iterable<Vertex>) graph.command(new OCommandSQL("select expand( in('dddd') ) from " + v2.getId())).execute())
found++;
Assert.assertEquals(found, 0);
// V3
found = 0;
for (Vertex v : (Iterable<Vertex>) graph.command(new OCommandSQL("select expand( in() ) from " + v3.getId())).execute())
found++;
Assert.assertEquals(found, 1);
}
@Test
public void testOutE() {
int found;
// V1
found = 0;
for (Edge v : (Iterable<Edge>) graph.command(new OCommandSQL("select expand( outE() ) from " + v1.getId())).execute())
found++;
Assert.assertEquals(found, 2);
found = 0;
for (Edge v : (Iterable<Edge>) graph.command(new OCommandSQL("select expand( outE('SubEdge') ) from " + v1.getId())).execute())
found++;
Assert.assertEquals(found, 1);
found = 0;
for (Edge v : (Iterable<Edge>) graph.command(new OCommandSQL("select expand( outE('dddd') ) from " + v1.getId())).execute())
found++;
Assert.assertEquals(found, 0);
// V2
found = 0;
for (Edge v : (Iterable<Edge>) graph.command(new OCommandSQL("select expand( outE() ) from " + v2.getId())).execute())
found++;
Assert.assertEquals(found, 0);
// V3
found = 0;
for (Edge v : (Iterable<Edge>) graph.command(new OCommandSQL("select expand( outE() ) from " + v3.getId())).execute())
found++;
Assert.assertEquals(found, 0);
}
@Test
public void testInE() {
int found;
// V1
found = 0;
for (Edge v : (Iterable<Edge>) graph.command(new OCommandSQL("select expand( inE() ) from " + v1.getId())).execute())
found++;
Assert.assertEquals(found, 0);
// V2
found = 0;
for (Edge v : (Iterable<Edge>) graph.command(new OCommandSQL("select expand( inE() ) from " + v2.getId())).execute())
found++;
Assert.assertEquals(found, 1);
found = 0;
for (Edge v : (Iterable<Edge>) graph.command(new OCommandSQL("select expand( inE('SubEdge') ) from " + v2.getId())).execute())
found++;
Assert.assertEquals(found, 1);
found = 0;
for (Edge v : (Iterable<Edge>) graph.command(new OCommandSQL("select expand( inE('dddd') ) from " + v2.getId())).execute())
found++;
Assert.assertEquals(found, 0);
// V3
found = 0;
for (Edge v : (Iterable<Edge>) graph.command(new OCommandSQL("select expand( inE() ) from " + v3.getId())).execute())
found++;
Assert.assertEquals(found, 1);
}
@Test
public void testOutV() {
Iterable<Vertex> vertices;
// V1
vertices = (Iterable<Vertex>) graph.command(new OCommandSQL("select expand( outE().outV() ) from " + v1.getId())).execute();
Assert.assertEquals(vertices.iterator().next(), v1);
vertices = (Iterable<Vertex>) graph.command(new OCommandSQL("select expand( outE().inV() ) from " + v1.getId())).execute();
Assert.assertEquals(vertices.iterator().next(), v2);
// V2
vertices = (Iterable<Vertex>) graph.command(new OCommandSQL("select expand( inE().inV() ) from " + v2.getId())).execute();
Assert.assertEquals(vertices.iterator().next(), v2);
vertices = (Iterable<Vertex>) graph.command(new OCommandSQL("select expand( inE().outV() ) from " + v2.getId())).execute();
Assert.assertEquals(vertices.iterator().next(), v1);
}
@Test
public void testOutEPolymorphic() {
int found;
// V1
found = 0;
for (Edge v : (Iterable<Edge>) graph.command(new OCommandSQL("select expand( outE('E') ) from " + v1.getId())).execute())
found++;
Assert.assertEquals(found, 2);
}
}