+
@Test
+public void testGroupOverTwoPropertiesWithValues() {
+ this.sqlgGraph.addVertex(T.label, "Person", "name", "A", "surname", "C", "age", 1);
+ this.sqlgGraph.addVertex(T.label, "Person", "name", "B", "surname", "D", "age", 2);
+ this.sqlgGraph.addVertex(T.label, "Person", "name", "A", "surname", "C", "age", 3);
+ this.sqlgGraph.addVertex(T.label, "Person", "name", "B", "surname", "E", "age", 4);
+ this.sqlgGraph.addVertex(T.label, "Person", "name", "C", "surname", "E", "age", 5);
+ this.sqlgGraph.tx().commit();
+
+ DefaultTraversal<Vertex, Map<List<String>, Integer>> traversal = (DefaultTraversal) this.sqlgGraph.traversal().V().hasLabel("Person")
+ .<List<String>, Integer>group()
+ .by(__.values("name", "surname").fold())
+ .by(__.values("age").max());
+
+ printTraversalForm(traversal);
+
+ Map<List<String>, Integer> result = traversal.next();
+ Assert.assertTrue(result.containsKey(Arrays.asList("A", "C")) || result.containsKey(Arrays.asList("C", "A")));
+ Assert.assertTrue(result.containsKey(Arrays.asList("B", "D")) || result.containsKey(Arrays.asList("D", "B")));
+ Assert.assertTrue(result.containsKey(Arrays.asList("B", "E")) || result.containsKey(Arrays.asList("E", "B")));
+ Assert.assertTrue(result.containsKey(Arrays.asList("C", "E")) || result.containsKey(Arrays.asList("E", "C")));
+ Assert.assertEquals(4, result.size());
+ Assert.assertFalse(traversal.hasNext());
+
+ if (result.containsKey(Arrays.asList("A", "C"))) {
+ Assert.assertEquals(3, result.get(Arrays.asList("A", "C")), 0);
+ } else {
+ Assert.assertEquals(3, result.get(Arrays.asList("C", "A")), 0);
+ }
+ if (result.containsKey(Arrays.asList("B", "D"))) {
+ Assert.assertEquals(2, result.get(Arrays.asList("B", "D")), 0);
+ } else {
+ Assert.assertEquals(2, result.get(Arrays.asList("D", "B")), 0);
+ }
+ if (result.containsKey(Arrays.asList("B", "E"))) {
+ Assert.assertEquals(4, result.get(Arrays.asList("B", "E")), 0);
+ } else {
+ Assert.assertEquals(4, result.get(Arrays.asList("E", "B")), 0);
+ }
+ if (result.containsKey(Arrays.asList("C", "E"))) {
+ Assert.assertEquals(5, result.get(Arrays.asList("C", "E")), 0);
+ } else {
+ Assert.assertEquals(5, result.get(Arrays.asList("E", "C")), 0);
+ }
+}
+