Coverage Summary for Class: TestUnion (org.umlg.sqlg.test.union)
Class | Class, % | Method, % | Branch, % | Line, % |
---|---|---|---|---|
TestUnion | 0% (0/1) | 0% (0/3) | 0% (0/4) | 0% (0/19) |
package org.umlg.sqlg.test.union; import org.apache.tinkerpop.gremlin.process.traversal.Path; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__; import org.apache.tinkerpop.gremlin.structure.Vertex; import org.junit.Test; import org.umlg.sqlg.test.BaseTest; import java.util.List; /** * Date: 2016/05/30 * Time: 9:01 PM */ @SuppressWarnings("unchecked") public class TestUnion extends BaseTest { // @Test // public void g_V_hasXperson_name_markoX_path_asXaX_unionXidentity_identityX_selectXaX_unfold() { // loadModern(); // DefaultGraphTraversal<Vertex, Vertex> graphTraversal = (DefaultGraphTraversal<Vertex, Vertex>) this.sqlgGraph.traversal().V().has("person", "name", "marko") // .path().as("a") // .union( // __.identity(), // __.identity() // ).select("a") // .<Vertex>unfold(); // printTraversalForm(graphTraversal); // List<Vertex> result = graphTraversal.toList(); // for (Vertex vertex : result) { // System.out.println(vertex); // } // } @Test public void g_unionXV_out_out_V_hasLabelXsoftwareXX_path_byXnameX() { loadModern(); DefaultGraphTraversal<Vertex, Path> graphTraversal = (DefaultGraphTraversal) this.sqlgGraph.traversal().union( __.V().out().out(), __.V().hasLabel("software") ).path().by("name"); printTraversalForm(graphTraversal); List<Path> result = graphTraversal.toList(); for (Path path : result) { System.out.println(path); } } // @Test public void g_unionXV_out_out_V_hasLabelXsoftwareXX_path() { loadModern(); DefaultGraphTraversal<Vertex, Path> graphTraversal = (DefaultGraphTraversal<Vertex, Path>) this.sqlgGraph.traversal().union( __.V().out().out(), __.V().hasLabel("software") ).path(); printTraversalForm(graphTraversal); List<Path> result = graphTraversal.toList(); for (Path path : result) { System.out.println(path); } // DefaultGraphTraversal<Path, Path> graphTraversal = (DefaultGraphTraversal<Path, Path>) this.sqlgGraph.traversal().union( // __.V().out().out().path(), // __.V().hasLabel("software").path() // ); // printTraversalForm(graphTraversal); // List<Path> result = graphTraversal.toList(); // for (Path path : result) { // System.out.println(path); // } } // @Test // public void g_V_hasXperson_name_aliceX_propertyXsingle_age_unionXage_constantX1XX_sumX() { //// this.sqlgGraph.addVertex(T.label, "person", "name", "alice", "age", 50); // this.sqlgGraph.addVertex(T.label, "person", "name", "alice", "age", 50L); // this.sqlgGraph.tx().commit(); // // List<Vertex> vertices = this.sqlgGraph.traversal().V().has("person","name","alice") // .property("age", __.union(__.values("age"), __.constant(1)).sum()) // .toList(); // this.sqlgGraph.tx().commit(); // Assert.assertFalse(this.sqlgGraph.traversal().V().has("person","age",50L).hasNext()); // Assert.assertEquals(1L, this.sqlgGraph.traversal().V().has("person","age",51L).count().next(), 0); // } // // @Test // public void g_unionXconstantX1X_constantX2X_constantX3XX() { // loadModern(); // GraphTraversalSource g = sqlgGraph.traversal(); // DefaultGraphTraversal<String, String> graphTraversal = (DefaultGraphTraversal<String, String>) g.union( // __.constant("d[1].i"), // __.constant("d[2].i"), // __.constant("d[3].i") // ); // printTraversalForm(graphTraversal); // List<String> result = graphTraversal.toList(); // Assert.assertTrue(result.contains("d[1].i")); // Assert.assertTrue(result.contains("d[2].i")); // Assert.assertTrue(result.contains("d[3].i")); // } // // @Test // public void g_V_unionXrepeatXunionXoutXcreatedX__inXcreatedXX_timesX2X__repeatXunionXinXcreatedX__outXcreatedXX_timesX2XX_label_groupCount() { // loadModern(); // final Traversal<Vertex, Map<String, Long>> traversal = (Traversal) this.sqlgGraph.traversal().V().union( // __.repeat(__.union( // __.out("created"), // __.in("created"))).times(2), // __.repeat(__.union( // __.in("created"), // __.out("created"))).times(2)) // .label().groupCount(); // final Map<String, Long> groupCount = traversal.next(); // Assert.assertFalse(traversal.hasNext()); // Assert.assertEquals(2, groupCount.size()); // Assert.assertEquals(12L, groupCount.get("software").longValue()); // Assert.assertEquals(20L, groupCount.get("person").longValue()); // } // // /** // * https://github.com/pietermartin/sqlg/issues/416 // */ // @Test // public void testAliasesWithinUnion() { // Vertex a = this.sqlgGraph.addVertex(T.label, "A", "name", "A"); // Vertex b = this.sqlgGraph.addVertex(T.label, "B", "name", "B"); // // a.addEdge("edge", b); // // // First, confirm that a simple traversal using an alias works properly. This works as // // expected (the failure is below with the union where the exact traversal is used inside the union). // List<Vertex> noUnionItems = this.sqlgGraph.traversal() // .V() // .hasLabel("A") // .as("alias1") // .out() // .<Vertex>select("alias1") // .toList(); // // Assert.assertEquals(1, noUnionItems.size()); // Assert.assertEquals(a, noUnionItems.get(0)); // // // This one doesn't work even though the exact same traversal is used inside the union. Debugging // // the code shows that it cannot find the "alias1" label in the SelectOneStep (in the map method). // List<Vertex> unionItems = this.sqlgGraph.traversal() // .inject("ignore") // Normally an inject would be used here, but see #415 // .<Vertex>union( // __.V().hasLabel("A").as("alias1").out().select("alias1") // ) // .toList(); // // // This fails because unionItems contains 0 results. // Assert.assertEquals(1, unionItems.size()); // } // // @Test // public void testdkarthikeyan88_bug359() { // Graph g = this.sqlgGraph; // Vertex cluster = g.addVertex(T.label, "Cluster", "name", "Test Cluster"); // Vertex service = g.addVertex(T.label, "Service", "name", "Test Service"); // Vertex database = g.addVertex(T.label, "Database", "name", "Test DB"); // Vertex schema1 = g.addVertex(T.label, "Schema", "name", "Test Schema1"); // Vertex schema2 = g.addVertex(T.label, "Schema", "name", "Test Schema2"); // Vertex table1 = g.addVertex(T.label, "Table", "name", "Table1"); // Vertex table2 = g.addVertex(T.label, "Table", "name", "Table2"); // Vertex table3 = g.addVertex(T.label, "Table", "name", "Table3"); // Vertex table4 = g.addVertex(T.label, "Table", "name", "Table4"); // Vertex column1 = g.addVertex(T.label, "Column", "name", "Column1"); // Vertex column2 = g.addVertex(T.label, "Column", "name", "Column2"); // Vertex column3 = g.addVertex(T.label, "Column", "name", "Column3"); // Vertex column4 = g.addVertex(T.label, "Column", "name", "Column4"); // Vertex column5 = g.addVertex(T.label, "Column", "name", "Column5"); // Vertex column6 = g.addVertex(T.label, "Column", "name", "Column6"); // Vertex column7 = g.addVertex(T.label, "Column", "name", "Column7"); // Vertex column8 = g.addVertex(T.label, "Column", "name", "Column8"); // // cluster.addEdge("has_Service", service); // service.addEdge("has_Database", database); // database.addEdge("has_Schema", schema1); // database.addEdge("has_Schema", schema2); // schema1.addEdge("has_Table", table1); // schema1.addEdge("has_Table", table2); // schema2.addEdge("has_Table", table3); // schema2.addEdge("has_Table", table4); // table1.addEdge("has_Column", column1); // table1.addEdge("has_Column", column2); // table2.addEdge("has_Column", column3); // table2.addEdge("has_Column", column4); // table3.addEdge("has_Column", column5); // table3.addEdge("has_Column", column6); // table4.addEdge("has_Column", column7); // table4.addEdge("has_Column", column8); // // g.tx().commit(); // //// String expected = "" + //// "{" + //// " Test Cluster={" + //// " Test Service={" + //// " Test DB={" + //// " Test Schema1={" + //// " Table1={" + //// " Column1={}, Column2={}" + //// " }" + //// " }, " + //// " Test Schema2={" + //// " Table3={" + //// " Column5={}, Column6={}" + //// " }" + //// " }" + //// " }" + //// " }" + //// " }" + //// "}"; // // GraphTraversal<Vertex, Tree> traversal = g.traversal().V() // .hasLabel("public.Cluster") // .has("name", "Test Cluster") // .out("has_Service").has("name", "Test Service") // .out("has_Database").has("name", "Test DB") // .union( // __.out("has_Schema").has("name", P.eq("Test Schema1")).out("has_Table").has("name", P.without("Table2")), // __.out("has_Schema").has("name", P.eq("Test Schema1")).out("has_Table").has("name", P.within("Table1")), // __.out("has_Schema").has("name", P.eq("Test Schema2")).out("has_Table").has("name", P.neq("Table4"))) // .out("has_Column") // .range(0, 100).tree(); // // Tree<Vertex> tree = traversal.next(); // // List<Vertex> clusters = tree.getObjectsAtDepth(1); // Assert.assertEquals(1, clusters.size()); // List<Vertex> services = tree.getObjectsAtDepth(2); // Assert.assertEquals(1, services.size()); // List<Vertex> databases = tree.getObjectsAtDepth(3); // Assert.assertEquals(1, databases.size()); // List<Vertex> schemas = tree.getObjectsAtDepth(4); // Assert.assertEquals(2, schemas.size()); // List<Vertex> tables = tree.getObjectsAtDepth(5); // Assert.assertEquals(2, tables.size()); // List<Vertex> columns = tree.getObjectsAtDepth(6); // Assert.assertEquals(4, columns.size()); // columns = tree.getLeafObjects(); // Assert.assertEquals(4, columns.size()); // // Assert.assertTrue(tree.containsKey(cluster)); // Assert.assertTrue(tree.get(cluster).containsKey(service)); // Assert.assertTrue(tree.get(cluster).get(service).containsKey(database)); // Assert.assertTrue(tree.get(cluster).get(service).get(database).containsKey(schema1)); // Assert.assertTrue(tree.get(cluster).get(service).get(database).get(schema1).containsKey(table1)); // Assert.assertTrue(tree.get(cluster).get(service).get(database).get(schema1).get(table1).containsKey(column1)); // Assert.assertTrue(tree.get(cluster).get(service).get(database).get(schema1).get(table1).containsKey(column2)); // // Assert.assertTrue(tree.get(cluster).get(service).get(database).containsKey(schema2)); // Assert.assertTrue(tree.get(cluster).get(service).get(database).get(schema2).containsKey(table3)); // Assert.assertTrue(tree.get(cluster).get(service).get(database).get(schema2).get(table3).containsKey(column5)); // Assert.assertTrue(tree.get(cluster).get(service).get(database).get(schema2).get(table3).containsKey(column6)); // } // // @Test // public void testUnionHasPath() { // Vertex a1 = this.sqlgGraph.addVertex(T.label, "A", "name", "A1"); // Vertex a2 = this.sqlgGraph.addVertex(T.label, "A", "name", "A2"); // Vertex a3 = this.sqlgGraph.addVertex(T.label, "A", "name", "A3"); // Vertex a4 = this.sqlgGraph.addVertex(T.label, "A", "name", "A4"); // 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"); // 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"); // a1.addEdge("toB", b1); // a1.addEdge("toB", b2); // a1.addEdge("toB", b3); // b1.addEdge("toC", c1); // b2.addEdge("toC", c2); // b3.addEdge("toC", c3); // // GraphTraversal<Vertex, Path> traversal = this.sqlgGraph.traversal().V().has("A", "name", "A1") // .union( // __.out("toB").has("name", P.eq("B1")).out("toC"), // __.out("toB").has("name", P.eq("B2")).out("toC")) // .path(); // printTraversalForm(traversal); // // Set<Object> objs = new HashSet<>(); // while (traversal.hasNext()) { // Path p = traversal.next(); // Assert.assertEquals(3, p.size()); // Object root0 = p.get(0); // Assert.assertEquals(a1, root0); // Object child0 = p.get(1); // Assert.assertEquals("B", ((Vertex) child0).label()); // Object child1 = p.get(2); // Assert.assertEquals("C", ((Vertex) child1).label()); // objs.add(child0); // objs.add(child1); // } // Assert.assertEquals(4, objs.size()); // Assert.assertTrue(objs.contains(b1)); // Assert.assertTrue(objs.contains(b2)); // Assert.assertTrue(objs.contains(c1)); // Assert.assertTrue(objs.contains(c2)); // // traversal = this.sqlgGraph.traversal().V().hasLabel("A") // .union( // __.optional(__.out("toB").has("name", P.eq("B1")).optional(__.out("toC"))), // __.optional(__.out("toB").has("name", P.eq("B2")).optional(__.out("toC")))) // .path(); // printTraversalForm(traversal); // List<Path> paths = traversal.toList(); // Assert.assertEquals(8, paths.size()); // Assert.assertEquals(2, paths.stream().filter(p -> p.size() == 3).count()); // } // // @Test // public void testUnionAsPerUMLG() { // Vertex a1 = this.sqlgGraph.addVertex(T.label, "A"); // Vertex b1 = this.sqlgGraph.addVertex(T.label, "B"); // Vertex b2 = this.sqlgGraph.addVertex(T.label, "B"); // Vertex bb1 = this.sqlgGraph.addVertex(T.label, "BB"); // Vertex bb2 = this.sqlgGraph.addVertex(T.label, "BB"); // a1.addEdge("ab", b1); // a1.addEdge("ab", b2); // bb1.addEdge("ab", a1); // bb2.addEdge("ab", a1); // this.sqlgGraph.tx().commit(); // List<Vertex> vertices = this.sqlgGraph.traversal().V(a1).in("ab").toList(); // Assert.assertEquals(2, vertices.size()); // vertices = this.sqlgGraph.traversal().V(a1).union(__.optional(__.out("ab")), __.optional(__.in("ab"))).toList(); // Assert.assertEquals(4, vertices.size()); // vertices = this.sqlgGraph.traversal().V(a1).union(__.out("ab"), __.in("ab")).toList(); // Assert.assertEquals(4, vertices.size()); // vertices = this.sqlgGraph.traversal().V(a1).union(__.out("ab"), __.in("ab")).toList(); // Assert.assertEquals(4, vertices.size()); // } // // @Test // public void testUnionFailure() { // loadModern(); // Traversal<Vertex, Map<String, Long>> traversal = this.sqlgGraph.traversal().V().union( // __.repeat(__.union( // __.out("created"), // __.in("created"))).times(2), // __.repeat(__.union( // __.in("created"), // __.out("created"))).times(2)) // .label().groupCount(); // printTraversalForm(traversal); // final Map<String, Long> groupCount = traversal.next(); // Assert.assertFalse(traversal.hasNext()); // Assert.assertEquals(12l, groupCount.get("software").longValue()); // Assert.assertEquals(20l, groupCount.get("person").longValue()); // Assert.assertEquals(2, groupCount.size()); // } // // @Test // public void g_VX1_2X_unionXoutE_count__inE_count__outE_weight_sumX() { // loadModern(); // Object marko = convertToVertexId("marko"); // Object vadas = convertToVertexId("vadas"); // final Traversal<Vertex, Number> traversal = this.sqlgGraph.traversal().V(marko, vadas) // .union( // __.outE().count(), // __.inE().count(), // (Traversal) __.outE().values("weight").sum() // ); // printTraversalForm(traversal); // checkResults(Arrays.asList(3l, 1.9d, 1l), traversal); // } // // @Test // public void g_V_outXcreatedX_unionXasXprojectX_inXcreatedX_hasXname_markoX_selectXprojectX__asXprojectX_inXcreatedX_inXknowsX_hasXname_markoX_selectXprojectXX_groupCount_byXnameX() { // loadModern(); // List<Vertex> vertices = this.sqlgGraph.traversal().V().out("created") // .<Vertex>union( // __.as("project").in("created").has("name", "marko").select("project"), // __.as("project").in("created").in("knows").has("name", "marko").select("project") // ).toList(); // Assert.assertEquals(7, vertices.size()); // Assert.assertEquals(6, vertices.stream().filter(v -> v.value("name").equals("lop")).count()); // Assert.assertEquals(1, vertices.stream().filter(v -> v.value("name").equals("ripple")).count()); // // Traversal<Vertex, Map<String, Long>> traversal = (Traversal) this.sqlgGraph.traversal().V().out("created") // .union( // __.as("project").in("created").has("name", "marko").select("project"), // __.as("project").in("created").in("knows").has("name", "marko").select("project") // ).groupCount().by("name"); // // printTraversalForm(traversal); // Assert.assertTrue(traversal.hasNext()); // final Map<String, Long> map = traversal.next(); // Assert.assertFalse(traversal.hasNext()); // Assert.assertEquals(2, map.size()); // Assert.assertEquals(1l, map.get("ripple").longValue()); // Assert.assertEquals(6l, map.get("lop").longValue()); // } }