Moved some tests to the correct packages CTR

Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/2c6c151f
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/2c6c151f
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/2c6c151f

Branch: refs/heads/TINKERPOP-1522
Commit: 2c6c151fc491fbad5541edcd49902899ee7a4b12
Parents: 6fbf130
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Mar 5 14:17:22 2018 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Mar 5 14:17:22 2018 -0500

----------------------------------------------------------------------
 .../traversal/step/util/BulkSetTest.java        |  92 ++++
 .../traversal/util/TraversalHelperTest.java     | 424 +++++++++++++++++++
 .../gremlin/process/util/BulkSetTest.java       |  92 ----
 .../process/util/TraversalHelperTest.java       | 424 -------------------
 4 files changed, 516 insertions(+), 516 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2c6c151f/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/BulkSetTest.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/BulkSetTest.java
 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/BulkSetTest.java
new file mode 100644
index 0000000..9b4980f
--- /dev/null
+++ 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/BulkSetTest.java
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.traversal.step.util;
+
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
+import org.junit.Test;
+
+import java.util.Iterator;
+import java.util.Random;
+import java.util.Set;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public class BulkSetTest {
+
+    @Test
+    public void shouldHaveProperHashAndEquality() {
+        final BulkSet<String> a = new BulkSet<>();
+        final BulkSet<String> b = new BulkSet<>();
+        a.add("stephen", 12);
+        a.add("marko", 32);
+        a.add("daniel", 74);
+        b.add("stephen", 12);
+        b.add("marko", 32);
+        b.add("daniel", 74);
+        assertEquals(a, b);
+        assertTrue(a.equals(b));
+        assertEquals(a.hashCode(), b.hashCode());
+        assertTrue(a.hashCode() == b.hashCode());
+        assertEquals(12, a.get("stephen"));
+        assertEquals(12, b.get("stephen"));
+        a.add("matthias", 99);
+        assertFalse(a.equals(b));
+        assertFalse(a.hashCode() == b.hashCode());
+        assertNotEquals(a.hashCode(), b.hashCode());
+    }
+
+    @Test
+    public void shouldHaveProperCountAndNotOutOfMemoryException() {
+        final Set<Boolean> list = new BulkSet<>();
+        final Random random = new Random();
+        for (int i = 0; i < 10000000; i++) {
+            list.add(random.nextBoolean());
+        }
+        assertEquals(10000000, list.size());
+    }
+
+    @Test
+    public void shouldHaveCorrectBulkCounts() {
+        final BulkSet<String> set = new BulkSet<>();
+        set.add("marko");
+        set.add("matthias");
+        set.add("marko", 7);
+        set.add("stephen");
+        set.add("stephen");
+        assertEquals(8, set.get("marko"));
+        assertEquals(1, set.get("matthias"));
+        assertEquals(2, set.get("stephen"));
+        final Iterator<String> iterator = set.iterator();
+        for (int i = 0; i < 11; i++) {
+            if (i < 8)
+                assertEquals("marko", iterator.next());
+            else if (i < 9)
+                assertEquals("matthias", iterator.next());
+            else
+                assertEquals("stephen", iterator.next());
+        }
+        assertEquals(11, set.size());
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2c6c151f/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelperTest.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelperTest.java
 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelperTest.java
new file mode 100644
index 0000000..74ef6a4
--- /dev/null
+++ 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelperTest.java
@@ -0,0 +1,424 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.traversal.util;
+
+import 
org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.TraversalVertexProgramStep;
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.LocalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.RepeatStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.UnionStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.FilterStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.HasStep;
+import 
org.apache.tinkerpop.gremlin.process.traversal.step.filter.LambdaFilterStep;
+import 
org.apache.tinkerpop.gremlin.process.traversal.step.filter.PathFilterStep;
+import 
org.apache.tinkerpop.gremlin.process.traversal.step.filter.TraversalFilterStep;
+import 
org.apache.tinkerpop.gremlin.process.traversal.step.filter.WhereTraversalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.NotStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.FlatMapStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertiesStep;
+import 
org.apache.tinkerpop.gremlin.process.traversal.step.map.TraversalFlatMapStep;
+import 
org.apache.tinkerpop.gremlin.process.traversal.step.map.TraversalMapStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
+import 
org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.IdentityStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
+import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+import org.apache.tinkerpop.gremlin.structure.PropertyType;
+import org.apache.tinkerpop.gremlin.structure.T;
+import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.in;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.outE;
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class TraversalHelperTest {
+
+    @Test
+    public void shouldSetPreviousStepToEmptyStep() {
+        final Traversal.Admin<?, ?> traversal = __.V().out().asAdmin();
+        //transform the traversal to __.V().not(out())
+        //the VertexStep's previousStep should be the EmptyStep
+        Optional<VertexStep> vertexStepOpt = 
TraversalHelper.getFirstStepOfAssignableClass(VertexStep.class, traversal);
+        assertTrue(vertexStepOpt.isPresent());
+        Traversal.Admin<?,?> inner = __.start().asAdmin();
+        inner.addStep(0, vertexStepOpt.get());
+        TraversalHelper.replaceStep(vertexStepOpt.get(), new 
NotStep<>(__.identity().asAdmin(), inner), traversal);
+        List<VertexStep> vertexSteps = 
TraversalHelper.getStepsOfAssignableClassRecursively(VertexStep.class, 
traversal);
+        assertEquals(1, vertexSteps.size());
+        VertexStep vertexStep = vertexSteps.get(0);
+        assertTrue("Expected the previousStep to be an EmptyStep, found 
instead " + 
vertexStep.getPreviousStep().toString(),vertexStep.getPreviousStep() == 
EmptyStep.instance());
+    }
+
+    @Test
+    public void shouldIdentifyLocalChildren() {
+        final Traversal.Admin<?, ?> localChild = __.as("x").select("a", 
"b").by("name").asAdmin();
+        new LocalStep<>(new DefaultTraversal(), localChild);
+        assertFalse(TraversalHelper.isGlobalChild(localChild));
+        ///
+        new WhereTraversalStep<>(new DefaultTraversal(), localChild);
+        assertFalse(TraversalHelper.isGlobalChild(localChild));
+        ///
+        new TraversalFilterStep<>(new DefaultTraversal(), localChild);
+        assertFalse(TraversalHelper.isGlobalChild(localChild));
+        ///
+        new TraversalMapStep<>(new DefaultTraversal(), localChild);
+        assertFalse(TraversalHelper.isGlobalChild(localChild));
+        ///
+        new TraversalFlatMapStep<>(new DefaultTraversal(), localChild);
+        assertFalse(TraversalHelper.isGlobalChild(localChild));
+        ///
+        final Traversal.Admin<?, ?> remoteLocalChild = 
__.repeat(localChild).asAdmin();
+        new LocalStep<>(new DefaultTraversal<>(), remoteLocalChild);
+        assertFalse(TraversalHelper.isGlobalChild(localChild));
+    }
+
+    @Test
+    public void shouldIdentifyGlobalChildren() {
+        final Traversal.Admin<?, ?> globalChild = __.select("a", 
"b").by("name").asAdmin();
+        TraversalParent parent = new RepeatStep<>(new DefaultTraversal());
+        ((RepeatStep) parent).setRepeatTraversal(globalChild);
+        assertTrue(TraversalHelper.isGlobalChild(globalChild));
+        ///
+        new UnionStep<>(new DefaultTraversal(), globalChild);
+        assertTrue(TraversalHelper.isGlobalChild(globalChild));
+        ///
+        new TraversalVertexProgramStep(new DefaultTraversal<>(), globalChild);
+        assertTrue(TraversalHelper.isGlobalChild(globalChild));
+        ///
+        final Traversal.Admin<?, ?> remoteRemoteChild = 
__.repeat(globalChild).asAdmin();
+        new UnionStep<>(new DefaultTraversal(), remoteRemoteChild);
+        assertTrue(TraversalHelper.isGlobalChild(globalChild));
+    }
+
+    @Test
+    public void shouldIdentifyLocalProperties() {
+        assertTrue(TraversalHelper.isLocalProperties(__.identity().asAdmin()));
+        assertTrue(TraversalHelper.isLocalProperties(__.id().asAdmin()));
+        assertTrue(TraversalHelper.isLocalProperties(__.label().asAdmin()));
+        
assertTrue(TraversalHelper.isLocalProperties(__.values("name").asAdmin()));
+        
assertFalse(TraversalHelper.isLocalProperties(outE("knows").asAdmin()));
+    }
+
+    @Test
+    public void shouldNotFindStepOfClassInTraversal() {
+        final Traversal.Admin traversal = new 
DefaultTraversal<>(EmptyGraph.instance());
+        traversal.asAdmin().addStep(0, new HasStep(traversal));
+        traversal.asAdmin().addStep(0, new HasStep(traversal));
+        traversal.asAdmin().addStep(0, new HasStep(traversal));
+
+        assertThat(TraversalHelper.hasStepOfClass(FilterStep.class, 
traversal), is(false));
+    }
+
+    @Test
+    public void shouldFindStepOfClassInTraversal() {
+        final Traversal.Admin traversal = new 
DefaultTraversal<>(EmptyGraph.instance());
+        traversal.asAdmin().addStep(0, new HasStep(traversal));
+        traversal.asAdmin().addStep(0, new IdentityStep<>(traversal));
+        traversal.asAdmin().addStep(0, new HasStep(traversal));
+
+        assertThat(TraversalHelper.hasStepOfClass(IdentityStep.class, 
traversal), is(true));
+    }
+
+    @Test
+    public void shouldNotFindStepOfAssignableClassInTraversal() {
+        final Traversal.Admin traversal = new 
DefaultTraversal<>(EmptyGraph.instance());
+        traversal.asAdmin().addStep(0, new HasStep(traversal));
+        traversal.asAdmin().addStep(0, new HasStep(traversal));
+        traversal.asAdmin().addStep(0, new HasStep(traversal));
+
+        
assertThat(TraversalHelper.hasStepOfAssignableClass(IdentityStep.class, 
traversal), is(false));
+    }
+
+    @Test
+    public void shouldFindStepOfAssignableClassInTraversal() {
+        final Traversal.Admin traversal = new 
DefaultTraversal<>(EmptyGraph.instance());
+        traversal.asAdmin().addStep(0, new HasStep(traversal));
+        traversal.asAdmin().addStep(0, new HasStep(traversal));
+        traversal.asAdmin().addStep(0, new HasStep(traversal));
+
+        assertThat(TraversalHelper.hasStepOfAssignableClass(FilterStep.class, 
traversal), is(true));
+    }
+
+    @Test
+    public void shouldGetTheStepIndex() {
+        final Traversal.Admin traversal = new 
DefaultTraversal<>(EmptyGraph.instance());
+        final HasStep hasStep = new HasStep(traversal);
+        traversal.asAdmin().addStep(0, new HasStep(traversal));
+        traversal.asAdmin().addStep(0, hasStep);
+        traversal.asAdmin().addStep(0, new HasStep(traversal));
+
+        assertEquals(1, TraversalHelper.stepIndex(hasStep, traversal));
+    }
+
+    @Test
+    public void shouldNotFindTheStepIndex() {
+        final Traversal.Admin traversal = new 
DefaultTraversal<>(EmptyGraph.instance());
+        final IdentityStep identityStep = new IdentityStep(traversal);
+        traversal.asAdmin().addStep(0, new HasStep(traversal));
+        traversal.asAdmin().addStep(0, new HasStep(traversal));
+        traversal.asAdmin().addStep(0, new HasStep(traversal));
+
+        assertEquals(-1, TraversalHelper.stepIndex(identityStep, traversal));
+    }
+
+    @Test
+    public void shouldInsertBeforeStep() {
+        final Traversal.Admin traversal = new 
DefaultTraversal<>(EmptyGraph.instance());
+        final HasStep hasStep = new HasStep(traversal);
+        final IdentityStep identityStep = new IdentityStep(traversal);
+        traversal.asAdmin().addStep(0, new HasStep(traversal));
+        traversal.asAdmin().addStep(0, hasStep);
+        traversal.asAdmin().addStep(0, new HasStep(traversal));
+
+        TraversalHelper.insertBeforeStep(identityStep, hasStep, traversal);
+
+        assertEquals(traversal.asAdmin().getSteps().get(1), identityStep);
+        assertEquals(4, traversal.asAdmin().getSteps().size());
+    }
+
+    @Test
+    public void shouldInsertAfterStep() {
+        final Traversal.Admin traversal = new 
DefaultTraversal<>(EmptyGraph.instance());
+        final HasStep hasStep = new HasStep(traversal);
+        final IdentityStep identityStep = new IdentityStep(traversal);
+        traversal.asAdmin().addStep(0, new HasStep(traversal));
+        traversal.asAdmin().addStep(0, hasStep);
+        traversal.asAdmin().addStep(0, new HasStep(traversal));
+
+        TraversalHelper.insertAfterStep(identityStep, hasStep, traversal);
+
+        assertEquals(traversal.asAdmin().getSteps().get(2), identityStep);
+        assertEquals(4, traversal.asAdmin().getSteps().size());
+    }
+
+    @Test
+    public void shouldReplaceStep() {
+        final Traversal.Admin traversal = new 
DefaultTraversal<>(EmptyGraph.instance());
+        final HasStep hasStep = new HasStep(traversal);
+        final IdentityStep identityStep = new IdentityStep(traversal);
+        traversal.asAdmin().addStep(0, new HasStep(traversal));
+        traversal.asAdmin().addStep(0, hasStep);
+        traversal.asAdmin().addStep(0, new HasStep(traversal));
+
+        TraversalHelper.replaceStep(hasStep, identityStep, traversal);
+
+        assertEquals(traversal.asAdmin().getSteps().get(1), identityStep);
+        assertEquals(3, traversal.asAdmin().getSteps().size());
+    }
+
+    @Test
+    public void 
shouldChainTogetherStepsWithNextPreviousInALinkedListStructure() {
+        final Traversal.Admin traversal = new 
DefaultTraversal<>(EmptyGraph.instance());
+        traversal.asAdmin().addStep(new IdentityStep(traversal));
+        traversal.asAdmin().addStep(new HasStep(traversal));
+        traversal.asAdmin().addStep(new LambdaFilterStep(traversal, traverser 
-> true));
+        validateToyTraversal(traversal);
+    }
+
+    @Test
+    public void shouldAddStepsCorrectly() {
+        Traversal.Admin traversal = new 
DefaultTraversal<>(EmptyGraph.instance());
+        traversal.asAdmin().addStep(0, new LambdaFilterStep(traversal, 
traverser -> true));
+        traversal.asAdmin().addStep(0, new HasStep(traversal));
+        traversal.asAdmin().addStep(0, new IdentityStep(traversal));
+        validateToyTraversal(traversal);
+
+        traversal = new DefaultTraversal<>(EmptyGraph.instance());
+        traversal.asAdmin().addStep(0, new IdentityStep(traversal));
+        traversal.asAdmin().addStep(1, new HasStep(traversal));
+        traversal.asAdmin().addStep(2, new LambdaFilterStep(traversal, 
traverser -> true));
+        validateToyTraversal(traversal);
+    }
+
+    @Test
+    public void shouldRemoveStepsCorrectly() {
+        final Traversal.Admin traversal = new 
DefaultTraversal<>(EmptyGraph.instance());
+        traversal.asAdmin().addStep(new IdentityStep(traversal));
+        traversal.asAdmin().addStep(new HasStep(traversal));
+        traversal.asAdmin().addStep(new LambdaFilterStep(traversal, traverser 
-> true));
+
+        traversal.asAdmin().addStep(new PropertiesStep(traversal, 
PropertyType.VALUE, "marko"));
+        traversal.asAdmin().removeStep(3);
+        validateToyTraversal(traversal);
+
+        traversal.asAdmin().addStep(0, new PropertiesStep(traversal, 
PropertyType.PROPERTY, "marko"));
+        traversal.asAdmin().removeStep(0);
+        validateToyTraversal(traversal);
+
+        traversal.asAdmin().removeStep(1);
+        traversal.asAdmin().addStep(1, new HasStep(traversal));
+        validateToyTraversal(traversal);
+    }
+
+    private static void validateToyTraversal(final Traversal traversal) {
+        assertEquals(traversal.asAdmin().getSteps().size(), 3);
+
+        assertEquals(IdentityStep.class, 
traversal.asAdmin().getSteps().get(0).getClass());
+        assertEquals(HasStep.class, 
traversal.asAdmin().getSteps().get(1).getClass());
+        assertEquals(LambdaFilterStep.class, 
traversal.asAdmin().getSteps().get(2).getClass());
+
+        // IDENTITY STEP
+        assertEquals(EmptyStep.class, ((Step) 
traversal.asAdmin().getSteps().get(0)).getPreviousStep().getClass());
+        assertEquals(HasStep.class, ((Step) 
traversal.asAdmin().getSteps().get(0)).getNextStep().getClass());
+        assertEquals(LambdaFilterStep.class, ((Step) 
traversal.asAdmin().getSteps().get(0)).getNextStep().getNextStep().getClass());
+        assertEquals(EmptyStep.class, ((Step) 
traversal.asAdmin().getSteps().get(0)).getNextStep().getNextStep().getNextStep().getClass());
+
+        // HAS STEP
+        assertEquals(IdentityStep.class, ((Step) 
traversal.asAdmin().getSteps().get(1)).getPreviousStep().getClass());
+        assertEquals(EmptyStep.class, ((Step) 
traversal.asAdmin().getSteps().get(1)).getPreviousStep().getPreviousStep().getClass());
+        assertEquals(LambdaFilterStep.class, ((Step) 
traversal.asAdmin().getSteps().get(1)).getNextStep().getClass());
+        assertEquals(EmptyStep.class, ((Step) 
traversal.asAdmin().getSteps().get(1)).getNextStep().getNextStep().getClass());
+
+        // FILTER STEP
+        assertEquals(HasStep.class, ((Step) 
traversal.asAdmin().getSteps().get(2)).getPreviousStep().getClass());
+        assertEquals(IdentityStep.class, ((Step) 
traversal.asAdmin().getSteps().get(2)).getPreviousStep().getPreviousStep().getClass());
+        assertEquals(EmptyStep.class, ((Step) 
traversal.asAdmin().getSteps().get(2)).getPreviousStep().getPreviousStep().getPreviousStep().getClass());
+        assertEquals(EmptyStep.class, ((Step) 
traversal.asAdmin().getSteps().get(2)).getNextStep().getClass());
+
+        assertEquals(3, traversal.asAdmin().getSteps().size());
+    }
+
+    @Test
+    public void shouldTruncateLongName() {
+        Step s = Mockito.mock(Step.class);
+        Mockito.when(s.toString()).thenReturn("0123456789");
+        assertEquals("0123...", TraversalHelper.getShortName(s, 7));
+    }
+
+    @Test
+    public void shouldIdentifyStarGraphTraversals() {
+        assertTrue(TraversalHelper.isLocalStarGraph(__.identity().asAdmin()));
+        assertTrue(TraversalHelper.isLocalStarGraph(__.id().asAdmin()));
+        assertTrue(TraversalHelper.isLocalStarGraph(__.out().asAdmin()));
+        assertTrue(TraversalHelper.isLocalStarGraph(__.label().asAdmin()));
+        assertTrue(TraversalHelper.isLocalStarGraph(__.bothE().asAdmin()));
+        assertTrue(TraversalHelper.isLocalStarGraph(__.values().asAdmin()));
+        
assertTrue(TraversalHelper.isLocalStarGraph(__.properties().asAdmin()));
+        
assertTrue(TraversalHelper.isLocalStarGraph(__.repeat(__.identity()).asAdmin()));
+        
assertTrue(TraversalHelper.isLocalStarGraph(__.repeat(__.has("name")).asAdmin()));
+        
assertTrue(TraversalHelper.isLocalStarGraph(__.out().repeat(__.identity()).asAdmin()));
+        assertTrue(TraversalHelper.isLocalStarGraph(__.out().id().asAdmin()));
+        assertTrue(TraversalHelper.isLocalStarGraph(__.label().union(__.out(), 
in()).asAdmin()));
+        assertTrue(TraversalHelper.isLocalStarGraph(__.label().union(__.out(), 
in()).id().asAdmin()));
+        assertTrue(TraversalHelper.isLocalStarGraph(__.coalesce(out("likes"), 
out("knows"), out("created")).groupCount().asAdmin()));
+        
assertTrue(TraversalHelper.isLocalStarGraph(__.local(__.out()).groupCount().asAdmin()));
+        
assertTrue(TraversalHelper.isLocalStarGraph(__.local(__.out()).groupCount().by(T.id).asAdmin()));
+        // 
assertTrue(TraversalHelper.isLocalStarGraph(__.out().repeat(__.has("name")).asAdmin()));
+        //
+        
assertFalse(TraversalHelper.isLocalStarGraph(__.out().label().asAdmin()));
+        
assertFalse(TraversalHelper.isLocalStarGraph(__.out().values().asAdmin()));
+        
assertFalse(TraversalHelper.isLocalStarGraph(__.out().valueMap().asAdmin()));
+        
assertFalse(TraversalHelper.isLocalStarGraph(__.repeat(__.out()).asAdmin()));
+        
assertFalse(TraversalHelper.isLocalStarGraph(__.repeat(__.has("name").out()).asAdmin()));
+        
assertFalse(TraversalHelper.isLocalStarGraph(__.repeat(__.has("name").union(__.out(),
 in())).asAdmin()));
+        assertFalse(TraversalHelper.isLocalStarGraph(__.union(__.out(), 
in()).label().asAdmin()));
+        assertFalse(TraversalHelper.isLocalStarGraph(__.union(__.out(), 
in().out()).asAdmin()));
+        assertFalse(TraversalHelper.isLocalStarGraph(__.union(__.out(), 
__.out().union(in(), __.out())).asAdmin()));
+        assertFalse(TraversalHelper.isLocalStarGraph(__.union(__.values(), 
__.out().union(in(), __.out())).out().asAdmin()));
+        assertFalse(TraversalHelper.isLocalStarGraph(__.coalesce(out("likes"), 
out("knows"), out("created")).groupCount().by("name").asAdmin()));
+        
assertFalse(TraversalHelper.isLocalStarGraph(__.local(__.out()).groupCount().by("name").asAdmin()));
+    }
+
+    @Test
+    public void shouldGetStepsByClass() {
+        Set<String> labels = (Set) 
TraversalHelper.getStepsOfClass(VertexStep.class, 
__.out().as("a").values("name").as("b").in().as("c").groupCount().as("d").asAdmin())
+                .stream()
+                .flatMap(s -> s.getLabels().stream())
+                .collect(Collectors.toSet());
+        assertEquals(2, labels.size());
+        assertTrue(labels.contains("a"));
+        assertTrue(labels.contains("c"));
+        //
+        labels = (Set) 
TraversalHelper.getStepsOfAssignableClass(VertexStep.class, 
__.out().as("a").values("name").as("b").in().as("c").groupCount().as("d").asAdmin())
+                .stream()
+                .flatMap(s -> s.getLabels().stream())
+                .collect(Collectors.toSet());
+        assertEquals(2, labels.size());
+        assertTrue(labels.contains("a"));
+        assertTrue(labels.contains("c"));
+        //
+        labels = (Set) 
TraversalHelper.getStepsOfAssignableClass(FlatMapStep.class, 
__.out().as("a").values("name").as("b").in().as("c").groupCount().as("d").asAdmin())
+                .stream()
+                .flatMap(s -> s.getLabels().stream())
+                .collect(Collectors.toSet());
+        assertEquals(3, labels.size());
+        assertTrue(labels.contains("a"));
+        assertTrue(labels.contains("b"));
+        assertTrue(labels.contains("c"));
+        //
+        labels = (Set) TraversalHelper.getStepsOfClass(Step.class, 
__.out().as("a").values("name").as("b").in().as("c").groupCount().as("d").asAdmin())
+                .stream()
+                .flatMap(s -> s.getLabels().stream())
+                .collect(Collectors.toSet());
+        assertEquals(0, labels.size());
+        //
+        labels = (Set) TraversalHelper.getStepsOfAssignableClass(Step.class, 
__.out().as("a").values("name").as("b").in().as("c").groupCount().as("d").asAdmin())
+                .stream()
+                .flatMap(s -> s.getLabels().stream())
+                .collect(Collectors.toSet());
+        assertEquals(4, labels.size());
+        assertTrue(labels.contains("a"));
+        assertTrue(labels.contains("b"));
+        assertTrue(labels.contains("c"));
+        assertTrue(labels.contains("d"));
+    }
+
+    @Test
+    public void shouldGetLabels() {
+        Set<String> labels = (Set) 
TraversalHelper.getLabels(__.out().as("a").values("name").as("b").in().as("c").groupCount().as("d").asAdmin());
+        assertEquals(4, labels.size());
+        assertTrue(labels.contains("a"));
+        assertTrue(labels.contains("b"));
+        assertTrue(labels.contains("c"));
+        assertTrue(labels.contains("d"));
+        labels = (Set) 
TraversalHelper.getLabels(__.out().as("a").repeat(__.out("name").as("b")).local(in().as("c")).as("d").groupCount().by(outE().as("e")).as("f").asAdmin());
+        assertEquals(6, labels.size());
+        assertTrue(labels.contains("a"));
+        assertTrue(labels.contains("b"));
+        assertTrue(labels.contains("c"));
+        assertTrue(labels.contains("d"));
+        assertTrue(labels.contains("e"));
+        assertTrue(labels.contains("f"));
+    }
+
+    @Test
+    public void shouldFindStepsRecursively() {
+        final Traversal<?,?> traversal = __.V().repeat(__.out().simplePath());
+        assertTrue(TraversalHelper.anyStepRecursively(s -> s instanceof 
PathFilterStep, traversal.asAdmin()));
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2c6c151f/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/BulkSetTest.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/BulkSetTest.java
 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/BulkSetTest.java
deleted file mode 100644
index df1c54f..0000000
--- 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/BulkSetTest.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.util;
-
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
-import org.junit.Test;
-
-import java.util.Iterator;
-import java.util.Random;
-import java.util.Set;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertTrue;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public class BulkSetTest {
-
-    @Test
-    public void shouldHaveProperHashAndEquality() {
-        final BulkSet<String> a = new BulkSet<>();
-        final BulkSet<String> b = new BulkSet<>();
-        a.add("stephen", 12);
-        a.add("marko", 32);
-        a.add("daniel", 74);
-        b.add("stephen", 12);
-        b.add("marko", 32);
-        b.add("daniel", 74);
-        assertEquals(a, b);
-        assertTrue(a.equals(b));
-        assertEquals(a.hashCode(), b.hashCode());
-        assertTrue(a.hashCode() == b.hashCode());
-        assertEquals(12, a.get("stephen"));
-        assertEquals(12, b.get("stephen"));
-        a.add("matthias", 99);
-        assertFalse(a.equals(b));
-        assertFalse(a.hashCode() == b.hashCode());
-        assertNotEquals(a.hashCode(), b.hashCode());
-    }
-
-    @Test
-    public void shouldHaveProperCountAndNotOutOfMemoryException() {
-        final Set<Boolean> list = new BulkSet<>();
-        final Random random = new Random();
-        for (int i = 0; i < 10000000; i++) {
-            list.add(random.nextBoolean());
-        }
-        assertEquals(10000000, list.size());
-    }
-
-    @Test
-    public void shouldHaveCorrectBulkCounts() {
-        final BulkSet<String> set = new BulkSet<>();
-        set.add("marko");
-        set.add("matthias");
-        set.add("marko", 7);
-        set.add("stephen");
-        set.add("stephen");
-        assertEquals(8, set.get("marko"));
-        assertEquals(1, set.get("matthias"));
-        assertEquals(2, set.get("stephen"));
-        final Iterator<String> iterator = set.iterator();
-        for (int i = 0; i < 11; i++) {
-            if (i < 8)
-                assertEquals("marko", iterator.next());
-            else if (i < 9)
-                assertEquals("matthias", iterator.next());
-            else
-                assertEquals("stephen", iterator.next());
-        }
-        assertEquals(11, set.size());
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2c6c151f/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/TraversalHelperTest.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/TraversalHelperTest.java
 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/TraversalHelperTest.java
deleted file mode 100644
index df22cd2..0000000
--- 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/TraversalHelperTest.java
+++ /dev/null
@@ -1,424 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.util;
-
-import 
org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.TraversalVertexProgramStep;
-import org.apache.tinkerpop.gremlin.process.traversal.Step;
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
-import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.branch.LocalStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.branch.RepeatStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.branch.UnionStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.filter.FilterStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.filter.HasStep;
-import 
org.apache.tinkerpop.gremlin.process.traversal.step.filter.LambdaFilterStep;
-import 
org.apache.tinkerpop.gremlin.process.traversal.step.filter.PathFilterStep;
-import 
org.apache.tinkerpop.gremlin.process.traversal.step.filter.TraversalFilterStep;
-import 
org.apache.tinkerpop.gremlin.process.traversal.step.filter.WhereTraversalStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.filter.NotStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.FlatMapStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertiesStep;
-import 
org.apache.tinkerpop.gremlin.process.traversal.step.map.TraversalFlatMapStep;
-import 
org.apache.tinkerpop.gremlin.process.traversal.step.map.TraversalMapStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
-import 
org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.IdentityStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
-import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import org.apache.tinkerpop.gremlin.structure.PropertyType;
-import org.apache.tinkerpop.gremlin.structure.T;
-import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
-import org.junit.Test;
-import org.mockito.Mockito;
-
-import java.util.List;
-import java.util.Optional;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.in;
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out;
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.outE;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public class TraversalHelperTest {
-
-    @Test
-    public void shouldSetPreviousStepToEmptyStep() {
-        final Traversal.Admin<?, ?> traversal = __.V().out().asAdmin();
-        //transform the traversal to __.V().not(out())
-        //the VertexStep's previousStep should be the EmptyStep
-        Optional<VertexStep> vertexStepOpt = 
TraversalHelper.getFirstStepOfAssignableClass(VertexStep.class, traversal);
-        assertTrue(vertexStepOpt.isPresent());
-        Traversal.Admin<?,?> inner = __.start().asAdmin();
-        inner.addStep(0, vertexStepOpt.get());
-        TraversalHelper.replaceStep(vertexStepOpt.get(), new 
NotStep<>(__.identity().asAdmin(), inner), traversal);
-        List<VertexStep> vertexSteps = 
TraversalHelper.getStepsOfAssignableClassRecursively(VertexStep.class, 
traversal);
-        assertEquals(1, vertexSteps.size());
-        VertexStep vertexStep = vertexSteps.get(0);
-        assertTrue("Expected the previousStep to be an EmptyStep, found 
instead " + 
vertexStep.getPreviousStep().toString(),vertexStep.getPreviousStep() == 
EmptyStep.instance());
-    }
-
-    @Test
-    public void shouldIdentifyLocalChildren() {
-        final Traversal.Admin<?, ?> localChild = __.as("x").select("a", 
"b").by("name").asAdmin();
-        new LocalStep<>(new DefaultTraversal(), localChild);
-        assertFalse(TraversalHelper.isGlobalChild(localChild));
-        ///
-        new WhereTraversalStep<>(new DefaultTraversal(), localChild);
-        assertFalse(TraversalHelper.isGlobalChild(localChild));
-        ///
-        new TraversalFilterStep<>(new DefaultTraversal(), localChild);
-        assertFalse(TraversalHelper.isGlobalChild(localChild));
-        ///
-        new TraversalMapStep<>(new DefaultTraversal(), localChild);
-        assertFalse(TraversalHelper.isGlobalChild(localChild));
-        ///
-        new TraversalFlatMapStep<>(new DefaultTraversal(), localChild);
-        assertFalse(TraversalHelper.isGlobalChild(localChild));
-        ///
-        final Traversal.Admin<?, ?> remoteLocalChild = 
__.repeat(localChild).asAdmin();
-        new LocalStep<>(new DefaultTraversal<>(), remoteLocalChild);
-        assertFalse(TraversalHelper.isGlobalChild(localChild));
-    }
-
-    @Test
-    public void shouldIdentifyGlobalChildren() {
-        final Traversal.Admin<?, ?> globalChild = __.select("a", 
"b").by("name").asAdmin();
-        TraversalParent parent = new RepeatStep<>(new DefaultTraversal());
-        ((RepeatStep) parent).setRepeatTraversal(globalChild);
-        assertTrue(TraversalHelper.isGlobalChild(globalChild));
-        ///
-        new UnionStep<>(new DefaultTraversal(), globalChild);
-        assertTrue(TraversalHelper.isGlobalChild(globalChild));
-        ///
-        new TraversalVertexProgramStep(new DefaultTraversal<>(), globalChild);
-        assertTrue(TraversalHelper.isGlobalChild(globalChild));
-        ///
-        final Traversal.Admin<?, ?> remoteRemoteChild = 
__.repeat(globalChild).asAdmin();
-        new UnionStep<>(new DefaultTraversal(), remoteRemoteChild);
-        assertTrue(TraversalHelper.isGlobalChild(globalChild));
-    }
-
-    @Test
-    public void shouldIdentifyLocalProperties() {
-        assertTrue(TraversalHelper.isLocalProperties(__.identity().asAdmin()));
-        assertTrue(TraversalHelper.isLocalProperties(__.id().asAdmin()));
-        assertTrue(TraversalHelper.isLocalProperties(__.label().asAdmin()));
-        
assertTrue(TraversalHelper.isLocalProperties(__.values("name").asAdmin()));
-        
assertFalse(TraversalHelper.isLocalProperties(outE("knows").asAdmin()));
-    }
-
-    @Test
-    public void shouldNotFindStepOfClassInTraversal() {
-        final Traversal.Admin traversal = new 
DefaultTraversal<>(EmptyGraph.instance());
-        traversal.asAdmin().addStep(0, new HasStep(traversal));
-        traversal.asAdmin().addStep(0, new HasStep(traversal));
-        traversal.asAdmin().addStep(0, new HasStep(traversal));
-
-        assertThat(TraversalHelper.hasStepOfClass(FilterStep.class, 
traversal), is(false));
-    }
-
-    @Test
-    public void shouldFindStepOfClassInTraversal() {
-        final Traversal.Admin traversal = new 
DefaultTraversal<>(EmptyGraph.instance());
-        traversal.asAdmin().addStep(0, new HasStep(traversal));
-        traversal.asAdmin().addStep(0, new IdentityStep<>(traversal));
-        traversal.asAdmin().addStep(0, new HasStep(traversal));
-
-        assertThat(TraversalHelper.hasStepOfClass(IdentityStep.class, 
traversal), is(true));
-    }
-
-    @Test
-    public void shouldNotFindStepOfAssignableClassInTraversal() {
-        final Traversal.Admin traversal = new 
DefaultTraversal<>(EmptyGraph.instance());
-        traversal.asAdmin().addStep(0, new HasStep(traversal));
-        traversal.asAdmin().addStep(0, new HasStep(traversal));
-        traversal.asAdmin().addStep(0, new HasStep(traversal));
-
-        
assertThat(TraversalHelper.hasStepOfAssignableClass(IdentityStep.class, 
traversal), is(false));
-    }
-
-    @Test
-    public void shouldFindStepOfAssignableClassInTraversal() {
-        final Traversal.Admin traversal = new 
DefaultTraversal<>(EmptyGraph.instance());
-        traversal.asAdmin().addStep(0, new HasStep(traversal));
-        traversal.asAdmin().addStep(0, new HasStep(traversal));
-        traversal.asAdmin().addStep(0, new HasStep(traversal));
-
-        assertThat(TraversalHelper.hasStepOfAssignableClass(FilterStep.class, 
traversal), is(true));
-    }
-
-    @Test
-    public void shouldGetTheStepIndex() {
-        final Traversal.Admin traversal = new 
DefaultTraversal<>(EmptyGraph.instance());
-        final HasStep hasStep = new HasStep(traversal);
-        traversal.asAdmin().addStep(0, new HasStep(traversal));
-        traversal.asAdmin().addStep(0, hasStep);
-        traversal.asAdmin().addStep(0, new HasStep(traversal));
-
-        assertEquals(1, TraversalHelper.stepIndex(hasStep, traversal));
-    }
-
-    @Test
-    public void shouldNotFindTheStepIndex() {
-        final Traversal.Admin traversal = new 
DefaultTraversal<>(EmptyGraph.instance());
-        final IdentityStep identityStep = new IdentityStep(traversal);
-        traversal.asAdmin().addStep(0, new HasStep(traversal));
-        traversal.asAdmin().addStep(0, new HasStep(traversal));
-        traversal.asAdmin().addStep(0, new HasStep(traversal));
-
-        assertEquals(-1, TraversalHelper.stepIndex(identityStep, traversal));
-    }
-
-    @Test
-    public void shouldInsertBeforeStep() {
-        final Traversal.Admin traversal = new 
DefaultTraversal<>(EmptyGraph.instance());
-        final HasStep hasStep = new HasStep(traversal);
-        final IdentityStep identityStep = new IdentityStep(traversal);
-        traversal.asAdmin().addStep(0, new HasStep(traversal));
-        traversal.asAdmin().addStep(0, hasStep);
-        traversal.asAdmin().addStep(0, new HasStep(traversal));
-
-        TraversalHelper.insertBeforeStep(identityStep, hasStep, traversal);
-
-        assertEquals(traversal.asAdmin().getSteps().get(1), identityStep);
-        assertEquals(4, traversal.asAdmin().getSteps().size());
-    }
-
-    @Test
-    public void shouldInsertAfterStep() {
-        final Traversal.Admin traversal = new 
DefaultTraversal<>(EmptyGraph.instance());
-        final HasStep hasStep = new HasStep(traversal);
-        final IdentityStep identityStep = new IdentityStep(traversal);
-        traversal.asAdmin().addStep(0, new HasStep(traversal));
-        traversal.asAdmin().addStep(0, hasStep);
-        traversal.asAdmin().addStep(0, new HasStep(traversal));
-
-        TraversalHelper.insertAfterStep(identityStep, hasStep, traversal);
-
-        assertEquals(traversal.asAdmin().getSteps().get(2), identityStep);
-        assertEquals(4, traversal.asAdmin().getSteps().size());
-    }
-
-    @Test
-    public void shouldReplaceStep() {
-        final Traversal.Admin traversal = new 
DefaultTraversal<>(EmptyGraph.instance());
-        final HasStep hasStep = new HasStep(traversal);
-        final IdentityStep identityStep = new IdentityStep(traversal);
-        traversal.asAdmin().addStep(0, new HasStep(traversal));
-        traversal.asAdmin().addStep(0, hasStep);
-        traversal.asAdmin().addStep(0, new HasStep(traversal));
-
-        TraversalHelper.replaceStep(hasStep, identityStep, traversal);
-
-        assertEquals(traversal.asAdmin().getSteps().get(1), identityStep);
-        assertEquals(3, traversal.asAdmin().getSteps().size());
-    }
-
-    @Test
-    public void 
shouldChainTogetherStepsWithNextPreviousInALinkedListStructure() {
-        final Traversal.Admin traversal = new 
DefaultTraversal<>(EmptyGraph.instance());
-        traversal.asAdmin().addStep(new IdentityStep(traversal));
-        traversal.asAdmin().addStep(new HasStep(traversal));
-        traversal.asAdmin().addStep(new LambdaFilterStep(traversal, traverser 
-> true));
-        validateToyTraversal(traversal);
-    }
-
-    @Test
-    public void shouldAddStepsCorrectly() {
-        Traversal.Admin traversal = new 
DefaultTraversal<>(EmptyGraph.instance());
-        traversal.asAdmin().addStep(0, new LambdaFilterStep(traversal, 
traverser -> true));
-        traversal.asAdmin().addStep(0, new HasStep(traversal));
-        traversal.asAdmin().addStep(0, new IdentityStep(traversal));
-        validateToyTraversal(traversal);
-
-        traversal = new DefaultTraversal<>(EmptyGraph.instance());
-        traversal.asAdmin().addStep(0, new IdentityStep(traversal));
-        traversal.asAdmin().addStep(1, new HasStep(traversal));
-        traversal.asAdmin().addStep(2, new LambdaFilterStep(traversal, 
traverser -> true));
-        validateToyTraversal(traversal);
-    }
-
-    @Test
-    public void shouldRemoveStepsCorrectly() {
-        final Traversal.Admin traversal = new 
DefaultTraversal<>(EmptyGraph.instance());
-        traversal.asAdmin().addStep(new IdentityStep(traversal));
-        traversal.asAdmin().addStep(new HasStep(traversal));
-        traversal.asAdmin().addStep(new LambdaFilterStep(traversal, traverser 
-> true));
-
-        traversal.asAdmin().addStep(new PropertiesStep(traversal, 
PropertyType.VALUE, "marko"));
-        traversal.asAdmin().removeStep(3);
-        validateToyTraversal(traversal);
-
-        traversal.asAdmin().addStep(0, new PropertiesStep(traversal, 
PropertyType.PROPERTY, "marko"));
-        traversal.asAdmin().removeStep(0);
-        validateToyTraversal(traversal);
-
-        traversal.asAdmin().removeStep(1);
-        traversal.asAdmin().addStep(1, new HasStep(traversal));
-        validateToyTraversal(traversal);
-    }
-
-    private static void validateToyTraversal(final Traversal traversal) {
-        assertEquals(traversal.asAdmin().getSteps().size(), 3);
-
-        assertEquals(IdentityStep.class, 
traversal.asAdmin().getSteps().get(0).getClass());
-        assertEquals(HasStep.class, 
traversal.asAdmin().getSteps().get(1).getClass());
-        assertEquals(LambdaFilterStep.class, 
traversal.asAdmin().getSteps().get(2).getClass());
-
-        // IDENTITY STEP
-        assertEquals(EmptyStep.class, ((Step) 
traversal.asAdmin().getSteps().get(0)).getPreviousStep().getClass());
-        assertEquals(HasStep.class, ((Step) 
traversal.asAdmin().getSteps().get(0)).getNextStep().getClass());
-        assertEquals(LambdaFilterStep.class, ((Step) 
traversal.asAdmin().getSteps().get(0)).getNextStep().getNextStep().getClass());
-        assertEquals(EmptyStep.class, ((Step) 
traversal.asAdmin().getSteps().get(0)).getNextStep().getNextStep().getNextStep().getClass());
-
-        // HAS STEP
-        assertEquals(IdentityStep.class, ((Step) 
traversal.asAdmin().getSteps().get(1)).getPreviousStep().getClass());
-        assertEquals(EmptyStep.class, ((Step) 
traversal.asAdmin().getSteps().get(1)).getPreviousStep().getPreviousStep().getClass());
-        assertEquals(LambdaFilterStep.class, ((Step) 
traversal.asAdmin().getSteps().get(1)).getNextStep().getClass());
-        assertEquals(EmptyStep.class, ((Step) 
traversal.asAdmin().getSteps().get(1)).getNextStep().getNextStep().getClass());
-
-        // FILTER STEP
-        assertEquals(HasStep.class, ((Step) 
traversal.asAdmin().getSteps().get(2)).getPreviousStep().getClass());
-        assertEquals(IdentityStep.class, ((Step) 
traversal.asAdmin().getSteps().get(2)).getPreviousStep().getPreviousStep().getClass());
-        assertEquals(EmptyStep.class, ((Step) 
traversal.asAdmin().getSteps().get(2)).getPreviousStep().getPreviousStep().getPreviousStep().getClass());
-        assertEquals(EmptyStep.class, ((Step) 
traversal.asAdmin().getSteps().get(2)).getNextStep().getClass());
-
-        assertEquals(3, traversal.asAdmin().getSteps().size());
-    }
-
-    @Test
-    public void shouldTruncateLongName() {
-        Step s = Mockito.mock(Step.class);
-        Mockito.when(s.toString()).thenReturn("0123456789");
-        assertEquals("0123...", TraversalHelper.getShortName(s, 7));
-    }
-
-    @Test
-    public void shouldIdentifyStarGraphTraversals() {
-        assertTrue(TraversalHelper.isLocalStarGraph(__.identity().asAdmin()));
-        assertTrue(TraversalHelper.isLocalStarGraph(__.id().asAdmin()));
-        assertTrue(TraversalHelper.isLocalStarGraph(__.out().asAdmin()));
-        assertTrue(TraversalHelper.isLocalStarGraph(__.label().asAdmin()));
-        assertTrue(TraversalHelper.isLocalStarGraph(__.bothE().asAdmin()));
-        assertTrue(TraversalHelper.isLocalStarGraph(__.values().asAdmin()));
-        
assertTrue(TraversalHelper.isLocalStarGraph(__.properties().asAdmin()));
-        
assertTrue(TraversalHelper.isLocalStarGraph(__.repeat(__.identity()).asAdmin()));
-        
assertTrue(TraversalHelper.isLocalStarGraph(__.repeat(__.has("name")).asAdmin()));
-        
assertTrue(TraversalHelper.isLocalStarGraph(__.out().repeat(__.identity()).asAdmin()));
-        assertTrue(TraversalHelper.isLocalStarGraph(__.out().id().asAdmin()));
-        assertTrue(TraversalHelper.isLocalStarGraph(__.label().union(__.out(), 
in()).asAdmin()));
-        assertTrue(TraversalHelper.isLocalStarGraph(__.label().union(__.out(), 
in()).id().asAdmin()));
-        assertTrue(TraversalHelper.isLocalStarGraph(__.coalesce(out("likes"), 
out("knows"), out("created")).groupCount().asAdmin()));
-        
assertTrue(TraversalHelper.isLocalStarGraph(__.local(__.out()).groupCount().asAdmin()));
-        
assertTrue(TraversalHelper.isLocalStarGraph(__.local(__.out()).groupCount().by(T.id).asAdmin()));
-        // 
assertTrue(TraversalHelper.isLocalStarGraph(__.out().repeat(__.has("name")).asAdmin()));
-        //
-        
assertFalse(TraversalHelper.isLocalStarGraph(__.out().label().asAdmin()));
-        
assertFalse(TraversalHelper.isLocalStarGraph(__.out().values().asAdmin()));
-        
assertFalse(TraversalHelper.isLocalStarGraph(__.out().valueMap().asAdmin()));
-        
assertFalse(TraversalHelper.isLocalStarGraph(__.repeat(__.out()).asAdmin()));
-        
assertFalse(TraversalHelper.isLocalStarGraph(__.repeat(__.has("name").out()).asAdmin()));
-        
assertFalse(TraversalHelper.isLocalStarGraph(__.repeat(__.has("name").union(__.out(),
 in())).asAdmin()));
-        assertFalse(TraversalHelper.isLocalStarGraph(__.union(__.out(), 
in()).label().asAdmin()));
-        assertFalse(TraversalHelper.isLocalStarGraph(__.union(__.out(), 
in().out()).asAdmin()));
-        assertFalse(TraversalHelper.isLocalStarGraph(__.union(__.out(), 
__.out().union(in(), __.out())).asAdmin()));
-        assertFalse(TraversalHelper.isLocalStarGraph(__.union(__.values(), 
__.out().union(in(), __.out())).out().asAdmin()));
-        assertFalse(TraversalHelper.isLocalStarGraph(__.coalesce(out("likes"), 
out("knows"), out("created")).groupCount().by("name").asAdmin()));
-        
assertFalse(TraversalHelper.isLocalStarGraph(__.local(__.out()).groupCount().by("name").asAdmin()));
-    }
-
-    @Test
-    public void shouldGetStepsByClass() {
-        Set<String> labels = (Set) 
TraversalHelper.getStepsOfClass(VertexStep.class, 
__.out().as("a").values("name").as("b").in().as("c").groupCount().as("d").asAdmin())
-                .stream()
-                .flatMap(s -> s.getLabels().stream())
-                .collect(Collectors.toSet());
-        assertEquals(2, labels.size());
-        assertTrue(labels.contains("a"));
-        assertTrue(labels.contains("c"));
-        //
-        labels = (Set) 
TraversalHelper.getStepsOfAssignableClass(VertexStep.class, 
__.out().as("a").values("name").as("b").in().as("c").groupCount().as("d").asAdmin())
-                .stream()
-                .flatMap(s -> s.getLabels().stream())
-                .collect(Collectors.toSet());
-        assertEquals(2, labels.size());
-        assertTrue(labels.contains("a"));
-        assertTrue(labels.contains("c"));
-        //
-        labels = (Set) 
TraversalHelper.getStepsOfAssignableClass(FlatMapStep.class, 
__.out().as("a").values("name").as("b").in().as("c").groupCount().as("d").asAdmin())
-                .stream()
-                .flatMap(s -> s.getLabels().stream())
-                .collect(Collectors.toSet());
-        assertEquals(3, labels.size());
-        assertTrue(labels.contains("a"));
-        assertTrue(labels.contains("b"));
-        assertTrue(labels.contains("c"));
-        //
-        labels = (Set) TraversalHelper.getStepsOfClass(Step.class, 
__.out().as("a").values("name").as("b").in().as("c").groupCount().as("d").asAdmin())
-                .stream()
-                .flatMap(s -> s.getLabels().stream())
-                .collect(Collectors.toSet());
-        assertEquals(0, labels.size());
-        //
-        labels = (Set) TraversalHelper.getStepsOfAssignableClass(Step.class, 
__.out().as("a").values("name").as("b").in().as("c").groupCount().as("d").asAdmin())
-                .stream()
-                .flatMap(s -> s.getLabels().stream())
-                .collect(Collectors.toSet());
-        assertEquals(4, labels.size());
-        assertTrue(labels.contains("a"));
-        assertTrue(labels.contains("b"));
-        assertTrue(labels.contains("c"));
-        assertTrue(labels.contains("d"));
-    }
-
-    @Test
-    public void shouldGetLabels() {
-        Set<String> labels = (Set) 
TraversalHelper.getLabels(__.out().as("a").values("name").as("b").in().as("c").groupCount().as("d").asAdmin());
-        assertEquals(4, labels.size());
-        assertTrue(labels.contains("a"));
-        assertTrue(labels.contains("b"));
-        assertTrue(labels.contains("c"));
-        assertTrue(labels.contains("d"));
-        labels = (Set) 
TraversalHelper.getLabels(__.out().as("a").repeat(__.out("name").as("b")).local(in().as("c")).as("d").groupCount().by(outE().as("e")).as("f").asAdmin());
-        assertEquals(6, labels.size());
-        assertTrue(labels.contains("a"));
-        assertTrue(labels.contains("b"));
-        assertTrue(labels.contains("c"));
-        assertTrue(labels.contains("d"));
-        assertTrue(labels.contains("e"));
-        assertTrue(labels.contains("f"));
-    }
-
-    @Test
-    public void shouldFindStepsRecursively() {
-        final Traversal<?,?> traversal = __.V().repeat(__.out().simplePath());
-        assertTrue(TraversalHelper.anyStepRecursively(s -> s instanceof 
PathFilterStep, traversal.asAdmin()));
-    }
-}

Reply via email to