Coverage Summary for Class: TestTreeStep (org.umlg.sqlg.test.gremlincompile)

Class Class, % Method, % Line, %
TestTreeStep 100% (1/1) 100% (6/6) 100% (93/93)


 package org.umlg.sqlg.test.gremlincompile;
 
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.hamcrest.Matchers;
 import org.junit.Assert;
 import org.junit.Test;
 import org.umlg.sqlg.test.BaseTest;
 
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 
 /**
  * Date: 2015/10/21
  * Time: 7:39 PM
  */
 public class TestTreeStep extends BaseTest {
 
     @Test
     public void testTree() {
         Vertex a1 = this.sqlgGraph.addVertex(T.label, "A", "name", "a1");
         Vertex b1 = this.sqlgGraph.addVertex(T.label, "B", "name", "b1");
         Vertex b2 = this.sqlgGraph.addVertex(T.label, "B", "name", "b2");
         Vertex b3 = this.sqlgGraph.addVertex(T.label, "B", "name", "b3");
         a1.addEdge("ab", b1);
         a1.addEdge("ab", b2);
         a1.addEdge("ab", b3);
         Vertex c1 = this.sqlgGraph.addVertex(T.label, "C", "name", "c1");
         Vertex c2 = this.sqlgGraph.addVertex(T.label, "C", "name", "c2");
         Vertex c3 = this.sqlgGraph.addVertex(T.label, "C", "name", "c3");
         b1.addEdge("bc", c1);
         b1.addEdge("bc", c2);
         b1.addEdge("bc", c3);
         this.sqlgGraph.tx().commit();
 
         DefaultGraphTraversal<Vertex, Tree> traversal = (DefaultGraphTraversal<Vertex, Tree>) this.sqlgGraph.traversal().V().hasLabel("A").out().out().tree();
         Assert.assertEquals(5, traversal.getSteps().size());
         Tree tree = traversal.next();
         Assert.assertEquals(2, traversal.getSteps().size());
         Assert.assertEquals(1, tree.size());
         Assert.assertTrue(tree.containsKey(a1));
         Tree tree2  = (Tree) tree.get(a1);
         Assert.assertEquals(1, tree2.size());
         Assert.assertTrue(tree2.containsKey(b1));
         Tree tree3  = (Tree) tree2.get(b1);
         Assert.assertEquals(3, tree3.size());
         Assert.assertTrue(tree3.containsKey(c1));
         Assert.assertTrue(tree3.containsKey(c1));
         Assert.assertTrue(tree3.containsKey(c1));
 
         //left join todo
 //        GraphTraversal gt = this.sqlgGraph.traversal().V().hasLabel("A").emit().repeat(__.out("ab", "bc")).times(2).tree();
 //        System.out.println(gt.toString());
 //        System.out.println(gt.next());
     }
 
     @Test
     public void testTreeWithBy() {
         Vertex a1 = this.sqlgGraph.addVertex(T.label, "A", "name", "a1");
         Vertex b1 = this.sqlgGraph.addVertex(T.label, "B", "name", "b1");
         Vertex b2 = this.sqlgGraph.addVertex(T.label, "B", "name", "b2");
         Vertex b3 = this.sqlgGraph.addVertex(T.label, "B", "name", "b3");
         a1.addEdge("ab", b1);
         a1.addEdge("ab", b2);
         a1.addEdge("ab", b3);
         Vertex c1 = this.sqlgGraph.addVertex(T.label, "C", "name", "c1");
         Vertex c2 = this.sqlgGraph.addVertex(T.label, "C", "name", "c2");
         Vertex c3 = this.sqlgGraph.addVertex(T.label, "C", "name", "c3");
         b1.addEdge("bc", c1);
         b1.addEdge("bc", c2);
         b1.addEdge("bc", c3);
 
         DefaultGraphTraversal<Vertex, Tree> traversal = (DefaultGraphTraversal<Vertex, Tree>) this.sqlgGraph.traversal()
                 .V().hasLabel("A").out().out().tree().by("name");
         Assert.assertEquals(5, traversal.getSteps().size());
         Tree tree = traversal.next();
         Assert.assertEquals(2, traversal.getSteps().size());
         Assert.assertEquals(1, tree.size());
         Assert.assertTrue(tree.containsKey("a1"));
         Tree tree2  = (Tree) tree.get("a1");
         Assert.assertEquals(1, tree2.size());
         Assert.assertTrue(tree2.containsKey("b1"));
         Tree tree3  = (Tree) tree2.get("b1");
         Assert.assertEquals(3, tree3.size());
         Assert.assertTrue(tree3.containsKey("c1"));
         Assert.assertTrue(tree3.containsKey("c1"));
         Assert.assertTrue(tree3.containsKey("c1"));
     }
 
     @Test
     public void testTreeWithSideEffect() {
         Vertex a1 = this.sqlgGraph.addVertex(T.label, "A", "name", "a1");
         Vertex b1 = this.sqlgGraph.addVertex(T.label, "B", "name", "b1");
         Vertex b2 = this.sqlgGraph.addVertex(T.label, "B", "name", "b2");
         Vertex b3 = this.sqlgGraph.addVertex(T.label, "B", "name", "b3");
         a1.addEdge("ab", b1);
         a1.addEdge("ab", b2);
         a1.addEdge("ab", b3);
         Vertex c1 = this.sqlgGraph.addVertex(T.label, "C", "name", "c1");
         Vertex c2 = this.sqlgGraph.addVertex(T.label, "C", "name", "c2");
         Vertex c3 = this.sqlgGraph.addVertex(T.label, "C", "name", "c3");
         b1.addEdge("bc", c1);
         b1.addEdge("bc", c2);
         b1.addEdge("bc", c3);
 
         DefaultGraphTraversal<Vertex, Vertex> traversal = (DefaultGraphTraversal<Vertex, Vertex>) this.sqlgGraph.traversal()
                 .V().hasLabel("A").out().out().tree("a");
         Assert.assertEquals(5, traversal.getSteps().size());
         Vertex v = traversal.next();
         Assert.assertEquals(2, traversal.getSteps().size());
         Assert.assertTrue(Matchers.is(Matchers.oneOf(c1, c2, c3)).matches(v));
     }
 
     @Test
     public void g_VX1X_out_out_tree_byXnameX() {
         Graph graph = this.sqlgGraph;
         loadModern(this.sqlgGraph);
         assertModernGraph(graph, true, false);
         GraphTraversalSource g = this.sqlgGraph.traversal();
         @SuppressWarnings("unchecked") final List<DefaultGraphTraversal<Vertex, Tree>> traversals = Arrays.asList(
                 (DefaultGraphTraversal)g.V(convertToVertexId("marko")).out().out().tree().by("name"),
                 (DefaultGraphTraversal)g.V(convertToVertexId("marko")).out().out().tree("a").by("name").both().both().cap("a")
         );
         traversals.forEach(traversal -> {
             printTraversalForm(traversal);
             final Tree tree = traversal.next();
             Assert.assertFalse(traversal.hasNext());
             Assert.assertEquals(1, tree.size());
             Assert.assertTrue(tree.containsKey("marko"));
             Assert.assertEquals(1, ((Map) tree.get("marko")).size());
             Assert.assertTrue(((Map) tree.get("marko")).containsKey("josh"));
             Assert.assertTrue(((Map) ((Map) tree.get("marko")).get("josh")).containsKey("lop"));
             Assert.assertTrue(((Map) ((Map) tree.get("marko")).get("josh")).containsKey("ripple"));
         });
     }
 }