You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2016/06/02 10:27:22 UTC

[3/4] jena git commit: SetUtils.symmetricDifference

SetUtils.symmetricDifference

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/4918d7fa
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/4918d7fa
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/4918d7fa

Branch: refs/heads/master
Commit: 4918d7fa6ee5361351e04ed5c6ca168dbd09af7f
Parents: e0d6fd7
Author: Andy Seaborne <an...@apache.org>
Authored: Thu Jun 2 10:00:07 2016 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu Jun 2 10:00:07 2016 +0100

----------------------------------------------------------------------
 .../org/apache/jena/atlas/lib/SetUtils.java     | 15 ++++++
 .../org/apache/jena/atlas/lib/TestSetUtils.java | 48 ++++++++++++++++----
 2 files changed, 53 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/4918d7fa/jena-base/src/main/java/org/apache/jena/atlas/lib/SetUtils.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/SetUtils.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/SetUtils.java
index bcf825b..57db41e 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/SetUtils.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/SetUtils.java
@@ -48,6 +48,21 @@ public class SetUtils
         return s3 ;
     }
 
+    /** union difference intersection */ 
+    public static <T> Set<T> symmetricDifference(Set<? extends T> s1, Set<? extends T> s2)
+    {
+        Set<T> s3 = new HashSet<>() ;
+        s1.forEach(x -> { 
+            if ( ! s2.contains(x) )
+                s3.add(x) ;
+        }) ;
+        s2.forEach(x -> { 
+            if ( ! s1.contains(x) )
+                s3.add(x) ;
+        }) ;
+        return s3 ;
+    }
+
     /** Return is s1 \ s2 */
 
     public static <T> Set<T> difference(Set<? extends T> s1, Set<? extends T> s2)

http://git-wip-us.apache.org/repos/asf/jena/blob/4918d7fa/jena-base/src/test/java/org/apache/jena/atlas/lib/TestSetUtils.java
----------------------------------------------------------------------
diff --git a/jena-base/src/test/java/org/apache/jena/atlas/lib/TestSetUtils.java b/jena-base/src/test/java/org/apache/jena/atlas/lib/TestSetUtils.java
index 92c1b0d..689fb0f 100644
--- a/jena-base/src/test/java/org/apache/jena/atlas/lib/TestSetUtils.java
+++ b/jena-base/src/test/java/org/apache/jena/atlas/lib/TestSetUtils.java
@@ -36,7 +36,7 @@ public class TestSetUtils extends BaseTest
         test(x,1,2,3) ;
     }
 
-    @Test public void set02() 
+    @Test public void set_intersection_1() 
     {
         Set<Integer> x1 = set(1,2,3) ;
         Set<Integer> x2 = set(1,2,3) ;
@@ -46,7 +46,7 @@ public class TestSetUtils extends BaseTest
         test(x3, 1,2,3) ;
     }
 
-    @Test public void set03() 
+    @Test public void set_intersection_2() 
     {
         Set<Integer> x1 = set(1,2,3) ;
         Set<Integer> x2 = set(2,9) ;
@@ -56,7 +56,7 @@ public class TestSetUtils extends BaseTest
         test(x3, 2) ;
     }
 
-    @Test public void set04() 
+    @Test public void set_intersection_3() 
     {
         Set<Integer> x1 = set(1,2,3) ;
         Set<Integer> x2 = set(6,7,8) ;
@@ -66,7 +66,7 @@ public class TestSetUtils extends BaseTest
         test(x3) ;
     }
 
-    @Test public void set05() 
+    @Test public void set_union_1() 
     {
         Set<Integer> x1 = set(1,2,3) ;
         Set<Integer> x2 = set(1,2,3) ;
@@ -76,7 +76,7 @@ public class TestSetUtils extends BaseTest
         test(x3, 1,2,3) ;
     }
 
-    @Test public void set06() 
+    @Test public void set_union_2() 
     {
         Set<Integer> x1 = set(1,2,3) ;
         Set<Integer> x2 = set(2,9) ;
@@ -86,7 +86,7 @@ public class TestSetUtils extends BaseTest
         test(x3, 1,2,3,9) ;
     }
 
-    @Test public void set07() 
+    @Test public void set_union_3() 
     {
         Set<Integer> x1 = set(1,2,3) ;
         Set<Integer> x2 = set() ;
@@ -96,7 +96,7 @@ public class TestSetUtils extends BaseTest
         test(x3,1,2,3) ;
     }
 
-    @Test public void set08() 
+    @Test public void set_difference_1() 
     {
         Set<Integer> x1 = set(1,2,3) ;
         Set<Integer> x2 = set() ;
@@ -106,7 +106,7 @@ public class TestSetUtils extends BaseTest
         test(x3) ;
     }
 
-    @Test public void set09() 
+    @Test public void set_difference_2() 
     {
         Set<Integer> x1 = set(1,2,3) ;
         Set<Integer> x2 = set(3) ;
@@ -116,7 +116,7 @@ public class TestSetUtils extends BaseTest
         test(x3) ;
     }
 
-    @Test public void set10() 
+    @Test public void set_difference_3() 
     {
         Set<Integer> x1 = set(1,2,3) ;
         Set<Integer> x2 = set(4,5,6) ;
@@ -126,7 +126,7 @@ public class TestSetUtils extends BaseTest
         test(x3,4,5,6) ;
     }
     
-    @Test public void set11() 
+    @Test public void set_disjoint_1() 
     {
         Set<Integer> x1 = set(1,2,3) ;
         Set<Integer> x2 = set(5,6) ;
@@ -136,6 +136,34 @@ public class TestSetUtils extends BaseTest
         assertFalse(SetUtils.disjoint(x1, x1)) ;
     }
 
+    @Test public void set_symmetric_differnce_1() {
+        Set<Integer> x1 = set(1,2,3) ;
+        Set<Integer> x2 = set(4,3) ;
+        Set<Integer> expected = set(4,1,2) ;
+        assertEquals(expected, SetUtils.symmetricDifference(x1, x2)) ;
+    }
+    
+    @Test public void set_symmetric_differnce_2() {
+        Set<Integer> x1 = set(1,2,3) ;
+        Set<Integer> x2 = set(9,8) ;
+        Set<Integer> expected = SetUtils.union(x1, x2) ;
+        assertEquals(expected, SetUtils.symmetricDifference(x1, x2)) ;
+    }
+
+    @Test public void set_symmetric_differnce_3() {
+        Set<Integer> x1 = set(1,2,3) ;
+        Set<Integer> x2 = set(2,3,1) ;
+        Set<Integer> expected = set() ;
+        assertEquals(expected, SetUtils.symmetricDifference(x1, x2)) ;
+    }
+    
+    @Test public void set_symmetric_differnce_4() {
+        Set<Integer> x1 = set(1,2,3) ;
+        Set<Integer> x2 = set() ;
+        Set<Integer> expected = set(1,2,3) ;
+        assertEquals(expected, SetUtils.symmetricDifference(x1, x2)) ;
+        assertEquals(expected, SetUtils.symmetricDifference(x2, x1)) ;
+    }
     // --------
     
     private static Set<Integer> set(int... values)