package com.tinkerpop.blueprints.impls.orient; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.Iterator; import org.junit.Test; import com.orientechnologies.orient.core.db.record.OIdentifiable; import com.orientechnologies.orient.core.sql.OCommandSQL; public class TestSelectProjectionVertex { @Test public void test() { OrientGraph graph = new OrientGraph("memory:" + TestSelectProjectionVertex.class.getSimpleName()); try { graph.createVertexType("VertA"); graph.createVertexType("VertB"); graph.createEdgeType("AtoB"); OrientVertex root = graph.addVertex("class:VertA"); graph.commit(); for (int i = 0; i < 2; i++) { OrientVertex v = graph.addVertex("class:VertB"); root.addEdge("AtoB", v); } graph.commit(); String query = "SELECT $res as val LET $res = (SELECT @rid AS refId, out('AtoB') AS vertices FROM VertA) FETCHPLAN val:2"; Iterable<OrientVertex> results = graph.command(new OCommandSQL(query)).execute(); final Iterator<OrientVertex> iterator = results.iterator(); assertTrue(iterator.hasNext()); OrientVertex result = iterator.next(); Iterable<OrientVertex> vertices = result.getProperty("val"); for (OrientVertex vertex : vertices) { assertEquals(((OIdentifiable) vertex.getProperty("refId")).getIdentity(), root.getIdentity()); } } finally { graph.drop(); } } }