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

com.tinkerpop.gremlin.process.graph.step.map.OrderTest Maven / Gradle / Ivy

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

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

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

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

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

    public abstract Traversal get_g_V_name_order();

    public abstract Traversal get_g_V_name_order_byXabX();

    public abstract Traversal get_g_V_name_order_byXa1_b1X_byXb2_a2X();

    public abstract Traversal get_g_V_order_byXname_incrX_name();

    public abstract Traversal get_g_V_order_byXnameX_name();

    public abstract Traversal get_g_V_outE_order_byXweight_decrX_weight();

    public abstract Traversal get_g_V_order_byXname_a1_b1X_byXname_b2_a2X_name();

    @Test
    @LoadGraphWith(MODERN)
    public void g_V_name_order() {
        final Traversal traversal = get_g_V_name_order();
        printTraversalForm(traversal);
        final List names = traversal.toList();
        assertEquals(names.size(), 6);
        assertEquals("josh", names.get(0));
        assertEquals("lop", names.get(1));
        assertEquals("marko", names.get(2));
        assertEquals("peter", names.get(3));
        assertEquals("ripple", names.get(4));
        assertEquals("vadas", names.get(5));
    }

    @Test
    @LoadGraphWith(MODERN)
    public void g_V_name_orderXabX() {
        final Traversal traversal = get_g_V_name_order_byXabX();
        printTraversalForm(traversal);
        final List names = StreamFactory.stream(traversal).collect(Collectors.toList());
        assertEquals(names.size(), 6);
        assertEquals("josh", names.get(5));
        assertEquals("lop", names.get(4));
        assertEquals("marko", names.get(3));
        assertEquals("peter", names.get(2));
        assertEquals("ripple", names.get(1));
        assertEquals("vadas", names.get(0));
    }

    @Test
    @LoadGraphWith(MODERN)
    public void g_V_name_orderXa1_b1__a2_b2X() {
        final Traversal traversal = get_g_V_name_order_byXa1_b1X_byXb2_a2X();
        printTraversalForm(traversal);
        final List names = StreamFactory.stream(traversal).collect(Collectors.toList());
        assertEquals(names.size(), 6);
        assertEquals("marko", names.get(0));
        assertEquals("vadas", names.get(1));
        assertEquals("peter", names.get(2));
        assertEquals("ripple", names.get(3));
        assertEquals("josh", names.get(4));
        assertEquals("lop", names.get(5));
    }

    @Test
    @LoadGraphWith(MODERN)
    public void g_V_orderByXname_incrX_name() {
        Arrays.asList(get_g_V_order_byXname_incrX_name(), get_g_V_order_byXnameX_name()).forEach(traversal -> {
            printTraversalForm(traversal);
            final List names = StreamFactory.stream(traversal).collect(Collectors.toList());
            assertEquals(names.size(), 6);
            assertEquals("josh", names.get(0));
            assertEquals("lop", names.get(1));
            assertEquals("marko", names.get(2));
            assertEquals("peter", names.get(3));
            assertEquals("ripple", names.get(4));
            assertEquals("vadas", names.get(5));
        });
    }

    @Test
    @LoadGraphWith(MODERN)
    public void g_V_outE_orderXweight_decrX_weight() {
        final Traversal traversal = get_g_V_outE_order_byXweight_decrX_weight();
        printTraversalForm(traversal);
        final List weights = StreamFactory.stream(traversal).collect(Collectors.toList());
        assertEquals(6, weights.size());
        assertEquals(Double.valueOf(1.0d), weights.get(0));
        assertEquals(Double.valueOf(1.0d), weights.get(1));
        assertEquals(Double.valueOf(0.5d), weights.get(2));
        assertEquals(Double.valueOf(0.4d), weights.get(3));
        assertEquals(Double.valueOf(0.4d), weights.get(4));
        assertEquals(Double.valueOf(0.2d), weights.get(5));

    }

    @Test
    @LoadGraphWith(MODERN)
    public void g_V_orderByXname_decr__a2_b2X_name() {
        final Traversal traversal = get_g_V_order_byXname_a1_b1X_byXname_b2_a2X_name();
        printTraversalForm(traversal);
        final List names = StreamFactory.stream(traversal).collect(Collectors.toList());
        assertEquals(names.size(), 6);
        assertEquals("marko", names.get(0));
        assertEquals("vadas", names.get(1));
        assertEquals("peter", names.get(2));
        assertEquals("ripple", names.get(3));
        assertEquals("josh", names.get(4));
        assertEquals("lop", names.get(5));
    }


    public static class StandardTest extends OrderTest {

        @Override
        public Traversal get_g_V_name_order() {
            return g.V().values("name").order();
        }

        @Override
        public Traversal get_g_V_name_order_byXabX() {
            return g.V().values("name").order().by((a, b) -> b.compareTo(a));
        }

        @Override
        public Traversal get_g_V_name_order_byXa1_b1X_byXb2_a2X() {
            return g.V().values("name").order().by((a, b) -> a.substring(1, 2).compareTo(b.substring(1, 2))).by((a, b) -> b.substring(2, 3).compareTo(a.substring(2, 3)));
        }

        @Override
        public Traversal get_g_V_order_byXname_incrX_name() {
            return g.V().order().by("name", Order.incr).values("name");
        }

        @Override
        public Traversal get_g_V_order_byXnameX_name() {
            return g.V().order().by("name", Order.incr).values("name");
        }

        @Override
        public Traversal get_g_V_outE_order_byXweight_decrX_weight() {
            return g.V().outE().order().by("weight", Order.decr).values("weight");
        }

        @Override
        public Traversal get_g_V_order_byXname_a1_b1X_byXname_b2_a2X_name() {
            return g.V().order().
                    by("name", (a, b) -> a.substring(1, 2).compareTo(b.substring(1, 2))).
                    by("name", (a, b) -> b.substring(2, 3).compareTo(a.substring(2, 3))).values("name");
        }

    }

    public static class ComputerTest extends OrderTest {

        public ComputerTest() {
            requiresGraphComputer = true;
        }

        @Override
        public Traversal get_g_V_name_order() {
            return g.V().values("name").order().submit(g.compute());
        }

        @Override
        public Traversal get_g_V_name_order_byXabX() {
            return g.V().values("name").order().by((a, b) -> b.compareTo(a)).submit(g.compute());
        }

        @Override
        public Traversal get_g_V_name_order_byXa1_b1X_byXb2_a2X() {
            return g.V().values("name")
                    .order()
                    .by((a, b) -> a.substring(1, 2).compareTo(b.substring(1, 2)))
                    .by((a, b) -> b.substring(2, 3).compareTo(a.substring(2, 3))).submit(g.compute());
        }

        @Override
        public Traversal get_g_V_order_byXname_incrX_name() {
            return g.V().order().by("name", Order.incr).values("name");
        }

        @Override
        public Traversal get_g_V_order_byXnameX_name() {
            return g.V().order().by("name", Order.incr).values("name");
        }

        @Override
        public Traversal get_g_V_outE_order_byXweight_decrX_weight() {
            return g.V().outE().order().by("weight", Order.decr).values("weight");
        }

        @Override
        public Traversal get_g_V_order_byXname_a1_b1X_byXname_b2_a2X_name() {
            return g.V().order().
                    by("name", (a, b) -> a.substring(1, 2).compareTo(b.substring(1, 2))).
                    by("name", (a, b) -> b.substring(2, 3).compareTo(a.substring(2, 3))).values("name");
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy