Added unit tests for Order and improved javadoc CTR
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/59545254 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/59545254 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/59545254 Branch: refs/heads/TINKERPOP-1836 Commit: 59545254930c502c8acfe470dd919f36c87cf78c Parents: 789e575 Author: Stephen Mallette <[email protected]> Authored: Thu Apr 26 08:42:13 2018 -0400 Committer: Stephen Mallette <[email protected]> Committed: Thu Apr 26 08:42:13 2018 -0400 ---------------------------------------------------------------------- .../gremlin/process/traversal/Order.java | 29 ++++++-- .../gremlin/process/traversal/OrderTest.java | 76 ++++++++++++++++++++ 2 files changed, 100 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/59545254/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Order.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Order.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Order.java index 7c3475a..3710396 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Order.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Order.java @@ -23,10 +23,18 @@ import java.util.Map; import java.util.Random; /** + * Provides {@code Comparator} instances for ordering traversers. + * * @author Marko A. Rodriguez (http://markorodriguez.com) + * @author Stephen Mallette (http://stephen.genoprime.com) */ public enum Order implements Comparator<Object> { + /** + * Order in ascending fashion + * + * @since 3.0.0-incubating + */ incr { @Override public int compare(final Object first, final Object second) { @@ -39,7 +47,14 @@ public enum Order implements Comparator<Object> { public Order reversed() { return decr; } - }, decr { + }, + + /** + * Order in descending fashion. + * + * @since 3.0.0-incubating + */ + decr { @Override public int compare(final Object first, final Object second) { return first instanceof Number && second instanceof Number @@ -53,7 +68,8 @@ public enum Order implements Comparator<Object> { } }, /** - * @deprecated Use {@link org.apache.tinkerpop.gremlin.structure.Column#keys}; + * @since 3.0.0-incubating + * @deprecated As of release 3.1.1-incubating, replaced by {@link org.apache.tinkerpop.gremlin.structure.Column#keys}. */ @Deprecated keyIncr { @@ -68,7 +84,8 @@ public enum Order implements Comparator<Object> { } }, /** - * @deprecated Use {@link org.apache.tinkerpop.gremlin.structure.Column#values}; + * @since 3.0.0-incubating + * @deprecated As of release 3.1.1-incubating, replaced by {@link org.apache.tinkerpop.gremlin.structure.Column#values}. */ @Deprecated valueIncr { @@ -83,7 +100,8 @@ public enum Order implements Comparator<Object> { } }, /** - * @deprecated Use {@link org.apache.tinkerpop.gremlin.structure.Column#keys}; + * @since 3.0.0-incubating + * @deprecated As of release 3.1.1-incubating, replaced by {@link org.apache.tinkerpop.gremlin.structure.Column#keys}. */ @Deprecated keyDecr { @@ -98,7 +116,8 @@ public enum Order implements Comparator<Object> { } }, /** - * @deprecated Use {@link org.apache.tinkerpop.gremlin.structure.Column#values}; + * @since 3.0.0-incubating + * @deprecated As of release 3.1.1-incubating, replaced by {@link org.apache.tinkerpop.gremlin.structure.Column#values}. */ @Deprecated valueDecr { http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/59545254/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OrderTest.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OrderTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OrderTest.java new file mode 100644 index 0000000..01d93ea --- /dev/null +++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OrderTest.java @@ -0,0 +1,76 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tinkerpop.gremlin.process.traversal; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import static org.junit.Assert.assertEquals; + +/** + * @author Stephen Mallette (http://stephen.genoprime.com) + */ +@RunWith(Parameterized.class) +public class OrderTest { + + private static final SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy"); + + @Parameterized.Parameters(name = "{0}.test({1},{2})") + public static Iterable<Object[]> data() throws ParseException { + return new ArrayList<>(Arrays.asList(new Object[][]{ + {Order.incr, Arrays.asList("b", "a", "c", "d"), Arrays.asList("a", "b", "c", "d")}, + {Order.decr, Arrays.asList("b", "a", "c", "d"), Arrays.asList("d", "c", "b", "a")}, + {Order.incr, Arrays.asList(formatter.parse("1-Jan-2018"), formatter.parse("1-Jan-2020"), formatter.parse("1-Jan-2008")), + Arrays.asList(formatter.parse("1-Jan-2008"), formatter.parse("1-Jan-2018"), formatter.parse("1-Jan-2020"))}, + {Order.decr, Arrays.asList(formatter.parse("1-Jan-2018"), formatter.parse("1-Jan-2020"), formatter.parse("1-Jan-2008")), + Arrays.asList(formatter.parse("1-Jan-2020"), formatter.parse("1-Jan-2018"), formatter.parse("1-Jan-2008"))}, + {Order.decr, Arrays.asList(100L, 1L, -1L, 0L), Arrays.asList(100L, 1L, 0L, -1L)}, + {Order.incr, Arrays.asList(100.1f, 1.1f, -1.1f, 0.1f), Arrays.asList(-1.1f, 0.1f, 1.1f, 100.1f)}, + {Order.decr, Arrays.asList(100.1f, 1.1f, -1.1f, 0.1f), Arrays.asList(100.1f, 1.1f, 0.1f, -1.1f)}, + {Order.incr, Arrays.asList(100.1d, 1.1d, -1.1d, 0.1d), Arrays.asList(-1.1d, 0.1d, 1.1d, 100.1d)}, + {Order.decr, Arrays.asList(100.1d, 1.1d, -1.1d, 0.1d), Arrays.asList(100.1d, 1.1d, 0.1d, -1.1d)}, + {Order.incr, Arrays.asList(100L, 1L, -1L, 0L), Arrays.asList(-1L, 0L, 1L, 100L)}, + {Order.decr, Arrays.asList(100L, 1L, -1L, 0L), Arrays.asList(100L, 1L, 0L, -1L)}, + {Order.incr, Arrays.asList(100, 1, -1, 0), Arrays.asList(-1, 0, 1, 100)}, + {Order.decr, Arrays.asList(100, 1, -1, 0), Arrays.asList(100, 1, 0, -1)}})); + } + + @Parameterized.Parameter(value = 0) + public Order order; + + @Parameterized.Parameter(value = 1) + public Object toBeOrdered; + + @Parameterized.Parameter(value = 2) + public Object expectedOrder; + + @Test + public void shouldOrder() { + Collections.sort((List) toBeOrdered, order); + assertEquals(expectedOrder, toBeOrdered); + } +}
