Repository: tinkerpop Updated Branches: refs/heads/TINKERPOP-1130 49964b2a3 -> eb37965b2 (forced update)
Make ElementHelper.areEqual(Property, Object) handle nulls so that it can be used correctly in equals() methods of Property impls. Added test methods for additional equality "scenarios" in ElementHelper. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/c76d3660 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/c76d3660 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/c76d3660 Branch: refs/heads/TINKERPOP-1130 Commit: c76d36600a9a3bdc77e8a2667aefe575a8f492cd Parents: 34d9e58 Author: Lukas Krejci <[email protected]> Authored: Thu Dec 22 01:03:53 2016 +0100 Committer: Lukas Krejci <[email protected]> Committed: Thu Dec 22 01:03:53 2016 +0100 ---------------------------------------------------------------------- .../gremlin/structure/util/ElementHelper.java | 6 +- .../structure/util/ElementHelperTest.java | 73 ++++++++++++++++---- 2 files changed, 61 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c76d3660/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/ElementHelper.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/ElementHelper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/ElementHelper.java index d42bdee..7f06912 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/ElementHelper.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/ElementHelper.java @@ -467,10 +467,8 @@ public final class ElementHelper { * @return true if equal and false otherwise */ public static boolean areEqual(final Property a, final Object b) { - if (null == a) - throw Graph.Exceptions.argumentCanNotBeNull("a"); - if (null == b) - throw Graph.Exceptions.argumentCanNotBeNull("b"); + if (null == b || null == a) + return false; if (a == b) return true; http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c76d3660/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/util/ElementHelperTest.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/util/ElementHelperTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/util/ElementHelperTest.java index e8ec27c..1af7174 100644 --- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/util/ElementHelperTest.java +++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/util/ElementHelperTest.java @@ -262,6 +262,23 @@ public class ElementHelperTest { } @Test + public void shouldDetermineElementsAreNotEqualWhenBothNull() { + assertFalse(ElementHelper.areEqual((Element) null, null)); + } + + @Test + public void shouldDetermineElementsAreNotEqualBecauseFirstArgumentIsNull() { + Element v = mock(Element.class); + assertFalse(ElementHelper.areEqual((Element) null, v)); + } + + @Test + public void shouldDetermineElementsAreNotEqualBecauseSecondArgumentIsNull() { + Element v = mock(Element.class); + assertFalse(ElementHelper.areEqual(v, null)); + } + + @Test public void shouldDetermineEdgesAreEqual() { final Element mockEdgeA = mock(Edge.class); final Element mockEdgeB = mock(Edge.class); @@ -280,24 +297,19 @@ public class ElementHelperTest { } @Test - public void shouldFailPropertyAreEqualTestBecauseFirstArgumentIsNull() { - try { - ElementHelper.areEqual((Property) null, "some object"); - fail("Should throw exception since the first argument is null"); - } catch (IllegalArgumentException iae) { - assertEquals(Graph.Exceptions.argumentCanNotBeNull("a").getMessage(), iae.getMessage()); - } + public void shouldDeterminePropertiesAreNotEqualBecauseBothAreNull() { + assertFalse(ElementHelper.areEqual((Property) null, null)); + } + + @Test + public void shouldDeterminePropertiesAreNotEqualBecauseFirstArgumentIsNull() { + assertFalse(ElementHelper.areEqual((Property) null, "some object")); } @Test - public void shouldFailPropertyAreEqualTestBecauseSecondArgumentIsNull() { + public void shouldDeterminePropertiesAreNotEqualTestBecauseSecondArgumentIsNull() { final Property mockProperty = mock(Property.class); - try { - ElementHelper.areEqual(mockProperty, null); - fail("Should throw exception since the second argument is null"); - } catch (IllegalArgumentException iae) { - assertEquals(Graph.Exceptions.argumentCanNotBeNull("b").getMessage(), iae.getMessage()); - } + assertFalse(ElementHelper.areEqual(mockProperty, null)); } @Test @@ -409,6 +421,39 @@ public class ElementHelperTest { } @Test + public void shouldDetermineAbsentPropertiesEqual() { + Property<?> p1 = mock(Property.class); + Property<?> p2 = mock(Property.class); + + when(p1.isPresent()).thenReturn(false); + when(p2.isPresent()).thenReturn(false); + + assertTrue(ElementHelper.areEqual(p1, p2)); + } + + @Test + public void shouldDetermineAbsentPropertyNotEqualToPresent() { + Property<?> p1 = mock(Property.class); + Property<?> p2 = mock(Property.class); + + when(p1.isPresent()).thenReturn(false); + when(p2.isPresent()).thenReturn(true); + + assertFalse(ElementHelper.areEqual(p1, p2)); + } + + @Test + public void shouldDeterminePresentPropertyNotEqualToAbsent() { + Property<?> p1 = mock(Property.class); + Property<?> p2 = mock(Property.class); + + when(p1.isPresent()).thenReturn(true); + when(p2.isPresent()).thenReturn(false); + + assertFalse(ElementHelper.areEqual(p1, p2)); + } + + @Test public void shouldExtractKeys() { final Set<String> keys = ElementHelper.getKeys("test1", "something", "test2", "something else"); assertTrue(keys.contains("test1"));
