All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.tinkerpop.gremlin.process.graph.step.sideEffect.TreeTest Maven / Gradle / Ivy

The newest version!
package com.tinkerpop.gremlin.process.graph.step.sideEffect;

import com.tinkerpop.gremlin.LoadGraphWith;
import com.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
import com.tinkerpop.gremlin.process.T;
import com.tinkerpop.gremlin.process.Traversal;
import com.tinkerpop.gremlin.process.graph.util.Tree;
import com.tinkerpop.gremlin.structure.Vertex;
import org.junit.Test;

import java.util.Arrays;
import java.util.List;
import java.util.Map;

import static com.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
import static org.junit.Assert.*;

/**
 * @author Marko A. Rodriguez (http://markorodriguez.com)
 * @author Stephen Mallette (http://stephen.genoprime.com)
 */
public abstract class TreeTest extends AbstractGremlinProcessTest {

    public abstract Traversal get_g_V_out_out_tree_byXidX();

    public abstract Traversal get_g_V_out_out_treeXaX_byXidX();

    public abstract Traversal get_g_V_out_out_treeXaX();

    public abstract Traversal get_g_VX1X_out_out_tree_byXnameX(final Object v1Id);

    public abstract Traversal get_g_VX1X_out_out_treeXaX_byXnameX_both_both_capXaX(final Object v1Id);

    @Test
    @LoadGraphWith(MODERN)
    public void g_VX1X_out_out_tree_byXnameX() {
        List> traversals = Arrays.asList(
                get_g_VX1X_out_out_tree_byXnameX(convertToVertexId("marko")),
                get_g_VX1X_out_out_treeXaX_byXnameX_both_both_capXaX(convertToVertexId("marko")));
        traversals.forEach(traversal -> {
            printTraversalForm(traversal);
            final Tree tree = traversal.next();
            assertFalse(traversal.hasNext());
            assertEquals(1, tree.size());
            assertTrue(tree.containsKey("marko"));
            assertEquals(1, ((Map) tree.get("marko")).size());
            assertTrue(((Map) tree.get("marko")).containsKey("josh"));
            assertTrue(((Map) ((Map) tree.get("marko")).get("josh")).containsKey("lop"));
            assertTrue(((Map) ((Map) tree.get("marko")).get("josh")).containsKey("ripple"));
        });
    }

    @Test
    @LoadGraphWith(MODERN)
    public void g_V_out_out_tree_byXidX() {
        List> traversals = Arrays.asList(get_g_V_out_out_tree_byXidX(), get_g_V_out_out_treeXaX_byXidX());
        traversals.forEach(traversal -> {
            printTraversalForm(traversal);
            final Tree tree = traversal.next();
            assertFalse(traversal.hasNext());
            assertEquals(1, tree.size());
            assertTrue(tree.containsKey(convertToVertexId("marko")));
            assertEquals(1, ((Map) tree.get(convertToVertexId("marko"))).size());
            assertTrue(((Map) tree.get(convertToVertexId("marko"))).containsKey(convertToVertexId("josh")));
            assertTrue(((Map) ((Map) tree.get(convertToVertexId("marko"))).get(convertToVertexId("josh"))).containsKey(convertToVertexId("lop")));
            assertTrue(((Map) ((Map) tree.get(convertToVertexId("marko"))).get(convertToVertexId("josh"))).containsKey(convertToVertexId("ripple")));
        });
    }

    @Test
    @LoadGraphWith(MODERN)
    public void g_V_out_out_treeXaX() {
        List> traversals = Arrays.asList(get_g_V_out_out_treeXaX());
        traversals.forEach(traversal -> {
            printTraversalForm(traversal);
            final Tree tree = traversal.next();
            assertFalse(traversal.hasNext());
            assertEquals(1, tree.size());
            assertTrue(tree.containsKey(convertToVertex(g, "marko")));
            assertEquals(1, ((Map) tree.get(convertToVertex(g, "marko"))).size());
            assertTrue(((Map) tree.get(convertToVertex(g, "marko"))).containsKey(convertToVertex(g, "josh")));
            assertTrue(((Map) ((Map) tree.get(convertToVertex(g, "marko"))).get(convertToVertex(g, "josh"))).containsKey(convertToVertex(g, "lop")));
            assertTrue(((Map) ((Map) tree.get(convertToVertex(g, "marko"))).get(convertToVertex(g, "josh"))).containsKey(convertToVertex(g, "ripple")));
        });
    }

    public static class StandardTest extends TreeTest {
        public StandardTest() {
            requiresGraphComputer = false;
        }

        @Override
        public Traversal get_g_VX1X_out_out_tree_byXnameX(final Object v1Id) {
            return (Traversal) g.V(v1Id).out().out().tree().by("name");
        }

        @Override
        public Traversal get_g_VX1X_out_out_treeXaX_byXnameX_both_both_capXaX(final Object v1Id) {
            return g.V(v1Id).out().out().tree("a").by("name").both().both().cap("a");
        }

        @Override
        public Traversal get_g_V_out_out_tree_byXidX() {
            return (Traversal) g.V().out().out().tree().by(T.id);
        }

        @Override
        public Traversal get_g_V_out_out_treeXaX_byXidX() {
            return (Traversal) g.V().out().out().tree("a").by(T.id);
        }

        @Override
        public Traversal get_g_V_out_out_treeXaX() {
            return (Traversal) g.V().out().out().tree("a");
        }
    }

    public static class ComputerTest extends TreeTest {
        public ComputerTest() {
            requiresGraphComputer = true;
        }

        @Override
        public Traversal get_g_VX1X_out_out_tree_byXnameX(final Object v1Id) {
            // TODO: micropaths don't have vertex properties
            return (Traversal) g.V(v1Id).out().out().tree().by("name");
        }

        @Override
        public Traversal get_g_VX1X_out_out_treeXaX_byXnameX_both_both_capXaX(final Object v1Id) {
            // TODO: micropaths don't have vertex properties
            return g.V(v1Id).out().out().tree("a").by("name").both().both().cap("a");
        }

        @Override
        public Traversal get_g_V_out_out_tree_byXidX() {
            return (Traversal) g.V().out().out().tree().by(T.id).submit(g.compute());
        }

        @Override
        public Traversal get_g_V_out_out_treeXaX_byXidX() {
            return (Traversal) g.V().out().out().tree("a").by(T.id).submit(g.compute());
        }

        @Override
        public Traversal get_g_V_out_out_treeXaX() {
            return (Traversal) g.V().out().out().tree("a").submit(g.compute());
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy