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

com.tinkerpop.gremlin.process.graph.step.branch.UnionTest Maven / Gradle / Ivy

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

import com.tinkerpop.gremlin.LoadGraphWith;
import com.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
import com.tinkerpop.gremlin.process.Traversal;
import com.tinkerpop.gremlin.structure.Vertex;
import org.junit.Test;

import java.util.HashMap;
import java.util.Map;

import static com.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
import static com.tinkerpop.gremlin.process.graph.AnonymousGraphTraversal.Tokens.__;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;

/**
 * @author Marko A. Rodriguez (http://markorodriguez.com)
 */
public abstract class UnionTest extends AbstractGremlinProcessTest {

    public abstract Traversal get_g_V_unionXout__inX_name();

    public abstract Traversal get_g_VX1X_unionXrepeatXoutX_timesX2X__outX_name(final Object v1Id);

    public abstract Traversal get_g_V_chooseXlabel_eq_person__unionX__out_lang__out_nameX__in_labelX();

    public abstract Traversal> get_g_V_chooseXlabel_eq_person__unionX__out_lang__out_nameX__in_labelX_groupCount();

    public abstract Traversal> get_g_V_unionXrepeatXunionXoutXcreatedX__inXcreatedXX_timesX2X__repeatXunionXinXcreatedX__outXcreatedXX_timesX2XX_label_groupCount();

    @Test
    @LoadGraphWith(MODERN)
    public void g_V_unionXout__inX_name() {
        final Traversal traversal = get_g_V_unionXout__inX_name();
        printTraversalForm(traversal);
        checkResults(new HashMap() {{
            put("marko", 3l);
            put("lop", 3l);
            put("peter", 1l);
            put("ripple", 1l);
            put("josh", 3l);
            put("vadas", 1l);
        }}, traversal);
    }

    @Test
    @LoadGraphWith(MODERN)
    public void g_VX1X_unionXrepeatXoutX_timesX2X__outX_name() {
        final Traversal traversal = get_g_VX1X_unionXrepeatXoutX_timesX2X__outX_name(convertToVertexId("marko"));
        printTraversalForm(traversal);
        checkResults(new HashMap() {{
            put("lop", 2l);
            put("ripple", 1l);
            put("josh", 1l);
            put("vadas", 1l);
        }}, traversal);
    }

    @Test
    @LoadGraphWith(MODERN)
    public void g_V_chooseXlabel_eq_person__unionX__out_lang__out_nameX__in_labelX() {
        final Traversal traversal = get_g_V_chooseXlabel_eq_person__unionX__out_lang__out_nameX__in_labelX();
        printTraversalForm(traversal);
        checkResults(new HashMap() {{
            put("lop", 3l);
            put("ripple", 1l);
            put("java", 4l);
            put("josh", 1l);
            put("vadas", 1l);
            put("person", 4l);
        }}, traversal);
    }

    @Test
    @LoadGraphWith(MODERN)
    public void g_V_chooseXlabel_eq_person__unionX__out_lang__out_nameX__in_labelX_groupCount() {
        final Traversal> traversal = get_g_V_chooseXlabel_eq_person__unionX__out_lang__out_nameX__in_labelX_groupCount();
        printTraversalForm(traversal);
        final Map groupCount = traversal.next();
        assertFalse(traversal.hasNext());
        assertEquals(3l, groupCount.get("lop").longValue());
        assertEquals(1l, groupCount.get("ripple").longValue());
        assertEquals(4l, groupCount.get("java").longValue());
        assertEquals(1l, groupCount.get("josh").longValue());
        assertEquals(1l, groupCount.get("vadas").longValue());
        assertEquals(4l, groupCount.get("person").longValue());
        assertEquals(6, groupCount.size());

    }

    @Test
    @LoadGraphWith(MODERN)
    public void g_V_unionXrepeatXunionXoutXcreatedX__inXcreatedXX_timesX2X__repeatXunionXinXcreatedX__outXcreatedXX_timesX2XX_label_groupCount() {
        final Traversal> traversal = get_g_V_unionXrepeatXunionXoutXcreatedX__inXcreatedXX_timesX2X__repeatXunionXinXcreatedX__outXcreatedXX_timesX2XX_label_groupCount();
        printTraversalForm(traversal);
        final Map groupCount = traversal.next();
        assertFalse(traversal.hasNext());
        assertEquals(12l, groupCount.get("software").longValue());
        assertEquals(20l, groupCount.get("person").longValue());
        assertEquals(2, groupCount.size());

    }

    public static class StandardTest extends UnionTest {

        public StandardTest() {
            requiresGraphComputer = false;
        }

        public Traversal get_g_V_unionXout__inX_name() {
            return g.V().union(__.out(), __.in()).values("name");
        }

        public Traversal get_g_VX1X_unionXrepeatXoutX_timesX2X__outX_name(final Object v1Id) {
            return g.V(v1Id).union(__.repeat(__.out()).times(2), __.out()).values("name");
        }

        public Traversal get_g_V_chooseXlabel_eq_person__unionX__out_lang__out_nameX__in_labelX() {
            return g.V().choose(v -> v.label().equals("person"), __.union(__.out().values("lang"), __.out().values("name")), __.in().label());
        }

        public Traversal> get_g_V_chooseXlabel_eq_person__unionX__out_lang__out_nameX__in_labelX_groupCount() {
            return (Traversal) g.V().choose(v -> v.label().equals("person"), __.union(__.out().values("lang"), __.out().values("name")), __.in().label()).groupCount();
        }

        public Traversal> get_g_V_unionXrepeatXunionXoutXcreatedX__inXcreatedXX_timesX2X__repeatXunionXinXcreatedX__outXcreatedXX_timesX2XX_label_groupCount() {
            return (Traversal) g.V().union(
                    __.repeat(__.union(
                            __.out("created"),
                            __.in("created"))).times(2),
                    __.repeat(__.union(
                            __.in("created"),
                            __.out("created"))).times(2)).label().groupCount();
        }
    }

    public static class ComputerTest extends UnionTest {

        public ComputerTest() {
            requiresGraphComputer = true;
        }

        public Traversal get_g_V_unionXout__inX_name() {
            return g.V().union(__.out(), __.in()).values("name").submit(g.compute());
        }

        public Traversal get_g_VX1X_unionXrepeatXoutX_timesX2X__outX_name(final Object v1Id) {
            return g.V(v1Id).union(__.repeat(__.out()).times(2), __.out()).values("name").submit(g.compute());
        }

        public Traversal get_g_V_chooseXlabel_eq_person__unionX__out_lang__out_nameX__in_labelX() {
            return g.V().choose(v -> v.label().equals("person"), __.union(__.out().values("lang"), __.out().values("name")), __.in().label()).submit(g.compute());
        }

        public Traversal> get_g_V_chooseXlabel_eq_person__unionX__out_lang__out_nameX__in_labelX_groupCount() {
            return (Traversal) g.V().choose(v -> v.label().equals("person"), __.union(__.out().values("lang"), __.out().values("name")), __.in().label()).groupCount().submit(g.compute());
        }

        public Traversal> get_g_V_unionXrepeatXunionXoutXcreatedX__inXcreatedXX_timesX2X__repeatXunionXinXcreatedX__outXcreatedXX_timesX2XX_label_groupCount() {
            return (Traversal) g.V().union(
                    __.repeat(__.union(
                            __.out("created"),
                            __.in("created"))).times(2),
                    __.repeat(__.union(
                            __.in("created"),
                            __.out("created"))).times(2)).label().groupCount().submit(g.compute());
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy