From cf5046820050a6a4752420b85a59a9e0eda77d70 Mon Sep 17 00:00:00 2001
From: Nikita <abracham.mitchell@gmail.com>
Date: Sat, 4 Jan 2014 10:56:14 +0400
Subject: [PATCH] RedissonSet tests added

---
 src/main/java/org/redisson/RedissonSet.java   |  1 +
 .../java/org/redisson/BaseRedissonTest.java   | 16 +++++++
 .../java/org/redisson/RedissonListTest.java   | 25 +++++++----
 .../java/org/redisson/RedissonSetTest.java    | 45 +++++++++++++++++++
 src/test/java/org/redisson/TestObject.java    | 25 +++++++++++
 5 files changed, 103 insertions(+), 9 deletions(-)
 create mode 100644 src/test/java/org/redisson/BaseRedissonTest.java
 create mode 100644 src/test/java/org/redisson/RedissonSetTest.java
 create mode 100644 src/test/java/org/redisson/TestObject.java

diff --git a/src/main/java/org/redisson/RedissonSet.java b/src/main/java/org/redisson/RedissonSet.java
index 819d2d024..b38a857b1 100644
--- a/src/main/java/org/redisson/RedissonSet.java
+++ b/src/main/java/org/redisson/RedissonSet.java
@@ -50,6 +50,7 @@ public class RedissonSet<V> implements Set<V> {
 
     @Override
     public Iterator<V> iterator() {
+        // TODO use SSCAN in case of usage Redis 2.8
         return (Iterator<V>) connection.smembers(name).iterator();
     }
 
diff --git a/src/test/java/org/redisson/BaseRedissonTest.java b/src/test/java/org/redisson/BaseRedissonTest.java
new file mode 100644
index 000000000..a6a8cbbd0
--- /dev/null
+++ b/src/test/java/org/redisson/BaseRedissonTest.java
@@ -0,0 +1,16 @@
+package org.redisson;
+
+import java.util.Collection;
+
+import org.junit.Assert;
+
+public abstract class BaseRedissonTest {
+
+    protected void clear(Collection<?> collection, Redisson redisson) {
+        collection.clear();
+        Assert.assertEquals(0, collection.size());
+
+        redisson.shutdown();
+    }
+
+}
diff --git a/src/test/java/org/redisson/RedissonListTest.java b/src/test/java/org/redisson/RedissonListTest.java
index 6eb3aca17..e79223628 100644
--- a/src/test/java/org/redisson/RedissonListTest.java
+++ b/src/test/java/org/redisson/RedissonListTest.java
@@ -12,7 +12,7 @@ import org.hamcrest.Matchers;
 import org.junit.Assert;
 import org.junit.Test;
 
-public class RedissonListTest {
+public class RedissonListTest extends BaseRedissonTest {
 
     @Test(expected = IllegalStateException.class)
     public void testListIteratorSetListFail() {
@@ -684,6 +684,21 @@ public class RedissonListTest {
         clear(list, redisson);
     }
 
+    @Test
+    public void testDuplicates() {
+        Redisson redisson = Redisson.create();
+        List<TestObject> list = redisson.getList("list");
+
+        list.add(new TestObject("1", "2"));
+        list.add(new TestObject("1", "2"));
+        list.add(new TestObject("2", "3"));
+        list.add(new TestObject("3", "4"));
+        list.add(new TestObject("5", "6"));
+
+        Assert.assertEquals(5, list.size());
+
+        clear(list, redisson);
+    }
 
     @Test
     public void testSize() {
@@ -707,12 +722,4 @@ public class RedissonListTest {
         clear(list, redisson);
     }
 
-    private void clear(Collection<?> list, Redisson redisson) {
-        list.clear();
-        Assert.assertEquals(0, list.size());
-
-        redisson.shutdown();
-    }
-
-
 }
diff --git a/src/test/java/org/redisson/RedissonSetTest.java b/src/test/java/org/redisson/RedissonSetTest.java
new file mode 100644
index 000000000..730146807
--- /dev/null
+++ b/src/test/java/org/redisson/RedissonSetTest.java
@@ -0,0 +1,45 @@
+package org.redisson;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class RedissonSetTest extends BaseRedissonTest {
+
+    @Test
+    public void testDuplicates() {
+        Redisson redisson = Redisson.create();
+        Set<TestObject> set = redisson.getSet("list");
+
+        set.add(new TestObject("1", "2"));
+        set.add(new TestObject("1", "2"));
+        set.add(new TestObject("2", "3"));
+        set.add(new TestObject("3", "4"));
+        set.add(new TestObject("5", "6"));
+
+        Assert.assertEquals(4, set.size());
+
+        clear(set, redisson);
+    }
+
+    @Test
+    public void testSize() {
+        Redisson redisson = Redisson.create();
+        Set<Integer> set = redisson.getSet("set");
+        set.add(1);
+        set.add(2);
+        set.add(3);
+        set.add(3);
+        set.add(4);
+        set.add(5);
+        set.add(5);
+
+        Assert.assertEquals(5, set.size());
+
+        clear(set, redisson);
+    }
+
+}
diff --git a/src/test/java/org/redisson/TestObject.java b/src/test/java/org/redisson/TestObject.java
new file mode 100644
index 000000000..627f1a62e
--- /dev/null
+++ b/src/test/java/org/redisson/TestObject.java
@@ -0,0 +1,25 @@
+package org.redisson;
+
+public class TestObject {
+
+    private String name;
+    private String value;
+
+    public TestObject() {
+    }
+
+    public TestObject(String name, String value) {
+        super();
+        this.name = name;
+        this.value = value;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+}