diff --git a/interactive_engine/compiler/src/main/java/com/alibaba/graphscope/gremlin/integration/suite/standard/IrGremlinQueryTest.java b/interactive_engine/compiler/src/main/java/com/alibaba/graphscope/gremlin/integration/suite/standard/IrGremlinQueryTest.java index 4fff6e43d009..632d97cacb20 100644 --- a/interactive_engine/compiler/src/main/java/com/alibaba/graphscope/gremlin/integration/suite/standard/IrGremlinQueryTest.java +++ b/interactive_engine/compiler/src/main/java/com/alibaba/graphscope/gremlin/integration/suite/standard/IrGremlinQueryTest.java @@ -49,6 +49,12 @@ public abstract class IrGremlinQueryTest extends AbstractGremlinProcessTest { public abstract Traversal> get_g_V_matchXa_in_b__b_out_c__not_c_out_aX(); + public abstract Traversal + get_g_V_matchXa_knows_b__b_created_cX_select_c_values(); + + public abstract Traversal + get_g_V_matchXa_out_b__b_in_cX_select_c_out_dedup_values(); + @LoadGraphWith(LoadGraphWith.GraphData.MODERN) @Test public void g_V_group_by_by_dedup_count_test() { @@ -167,6 +173,44 @@ public void g_V_matchXa_in_b__b_out_c__not_c_out_aX() { traversal); } + @LoadGraphWith(LoadGraphWith.GraphData.MODERN) + @Test + public void g_V_matchXa_knows_b__b_created_cX_select_c_values() { + final Traversal traversal = + get_g_V_matchXa_knows_b__b_created_cX_select_c_values(); + printTraversalForm(traversal); + int counter = 0; + + List expected = Arrays.asList("lop", "ripple"); + + while (traversal.hasNext()) { + Object result = traversal.next(); + Assert.assertTrue(expected.contains(result.toString())); + ++counter; + } + + Assert.assertEquals(2, counter); + } + + @LoadGraphWith(LoadGraphWith.GraphData.MODERN) + @Test + public void g_V_matchXa_out_b__b_in_cX_select_c_out_dedup_values() { + final Traversal traversal = + get_g_V_matchXa_out_b__b_in_cX_select_c_out_dedup_values(); + printTraversalForm(traversal); + int counter = 0; + + List expected = Arrays.asList("josh", "vadas"); + + while (traversal.hasNext()) { + Object result = traversal.next(); + Assert.assertTrue(expected.contains(result.toString())); + ++counter; + } + + Assert.assertEquals(2, counter); + } + public static class Traversals extends IrGremlinQueryTest { @Override @@ -208,5 +252,24 @@ public Traversal get_g_V_out_as_a_in_select_a_as_b_select_b_by_v as("b").out("knows").as("c"), not(as("c").out("knows").as("a"))); } + + @Override + public Traversal get_g_V_matchXa_knows_b__b_created_cX_select_c_values() { + return g.V().match(as("a").out("knows").as("b"), as("b").out("created").as("c")) + .select("c") + .values("name"); + } + + @Override + public Traversal + get_g_V_matchXa_out_b__b_in_cX_select_c_out_dedup_values() { + return g.V().match( + as("a").out("created").has("name", "lop").as("b"), + as("b").in("created").has("age", 29).as("c")) + .select("c") + .out("knows") + .dedup() + .values("name"); + } } }