
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