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"));

Reply via email to