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

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

package com.tinkerpop.gremlin.process.graph.step.sideEffect;

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

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

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


/**
 * @author Marko A. Rodriguez (http://markorodriguez.com)
 * @author Stephen Mallette (http://stephen.genoprime.com)
 */
public abstract class SideEffectTest extends AbstractGremlinTest {
    public abstract Traversal get_g_v1_sideEffectXstore_aX_valueXnameX(final Object v1Id);

    public abstract Traversal get_g_v1_out_sideEffectXincr_cX_valueXnameX(final Object v1Id);

    public abstract Traversal get_g_v1_out_sideEffectXX_valueXnameX(final Object v1Id);

    @Test
    @LoadGraphWith(CLASSIC)
    public void g_v1_sideEffectXstore_aX_valueXnameX() {
        final Traversal traversal = get_g_v1_sideEffectXstore_aX_valueXnameX(convertToVertexId("marko"));
        printTraversalForm(traversal);
        assertEquals(traversal.next(), "marko");
        assertFalse(traversal.hasNext());
        assertEquals(convertToVertexId("marko"), traversal.memory().>get("a").get().get(0).id());
    }

    @Test
    @LoadGraphWith(CLASSIC)
    public void g_v1_out_sideEffectXincr_cX_valueXnameX() {
        final Traversal traversal = get_g_v1_out_sideEffectXincr_cX_valueXnameX(convertToVertexId("marko"));
        printTraversalForm(traversal);
        assert_g_v1_out_sideEffectXincr_cX_valueXnameX(traversal);
        assertEquals(new Integer(3), traversal.memory().>get("c").get().get(0));
    }

    private void assert_g_v1_out_sideEffectXincr_cX_valueXnameX(final Iterator traversal) {
        final List names = new ArrayList<>();
        while (traversal.hasNext()) {
            names.add(traversal.next());
        }
        assertEquals(3, names.size());
        assertTrue(names.contains("josh"));
        assertTrue(names.contains("lop"));
        assertTrue(names.contains("vadas"));
    }

    @Test
    @LoadGraphWith(CLASSIC)
    public void g_v1_out_sideEffectXX_valueXnameX() {
        final Traversal traversal = get_g_v1_out_sideEffectXX_valueXnameX(convertToVertexId("marko"));
        printTraversalForm(traversal);
        assert_g_v1_out_sideEffectXincr_cX_valueXnameX(traversal);
    }

    public static class JavaSideEffectTest extends SideEffectTest {
        public Traversal get_g_v1_sideEffectXstore_aX_valueXnameX(final Object v1Id) {
            final List a = new ArrayList<>();
            return g.v(v1Id).with("a", a).sideEffect(traverser -> {
                a.clear();
                a.add(traverser.get());
            }).value("name");
        }

        public Traversal get_g_v1_out_sideEffectXincr_cX_valueXnameX(final Object v1Id) {
            final List c = new ArrayList<>();
            c.add(0);
            return g.v(v1Id).with("c", c).out().sideEffect(traverser -> {
                Integer temp = c.get(0);
                c.clear();
                c.add(temp + 1);
            }).value("name");
        }

        public Traversal get_g_v1_out_sideEffectXX_valueXnameX(final Object v1Id) {
            return g.v(v1Id).out().sideEffect(traverser -> {
            }).value("name");
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy