You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sl...@apache.org on 2014/12/09 21:02:38 UTC

cassandra git commit: Fix Accumulator.isEmpty method

Repository: cassandra
Updated Branches:
  refs/heads/trunk 9510eb0f3 -> 178d7b6f8


Fix Accumulator.isEmpty method

patch by slebresne; reviewed by benedict for CASSANDRA-7873


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/178d7b6f
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/178d7b6f
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/178d7b6f

Branch: refs/heads/trunk
Commit: 178d7b6f8837e8f5cdd5f9c4661f3a3c3a0c4c0a
Parents: 9510eb0
Author: Sylvain Lebresne <sy...@datastax.com>
Authored: Tue Dec 9 20:08:38 2014 +0100
Committer: Sylvain Lebresne <sy...@datastax.com>
Committed: Tue Dec 9 20:08:38 2014 +0100

----------------------------------------------------------------------
 .../cassandra/utils/concurrent/Accumulator.java |   2 +-
 .../utils/concurrent/AccumulatorTest.java       | 106 +++++++++++++++++++
 2 files changed, 107 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/178d7b6f/src/java/org/apache/cassandra/utils/concurrent/Accumulator.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/concurrent/Accumulator.java b/src/java/org/apache/cassandra/utils/concurrent/Accumulator.java
index 3b5e5c9..baecb34 100644
--- a/src/java/org/apache/cassandra/utils/concurrent/Accumulator.java
+++ b/src/java/org/apache/cassandra/utils/concurrent/Accumulator.java
@@ -89,7 +89,7 @@ public class Accumulator<E> implements Iterable<E>
 
     public boolean isEmpty()
     {
-        return presentCount != 0;
+        return presentCount == 0;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/cassandra/blob/178d7b6f/test/unit/org/apache/cassandra/utils/concurrent/AccumulatorTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/utils/concurrent/AccumulatorTest.java b/test/unit/org/apache/cassandra/utils/concurrent/AccumulatorTest.java
new file mode 100644
index 0000000..2842374
--- /dev/null
+++ b/test/unit/org/apache/cassandra/utils/concurrent/AccumulatorTest.java
@@ -0,0 +1,106 @@
+/*
+* 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.cassandra.utils.concurrent;
+
+import java.util.Iterator;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+public class AccumulatorTest
+{
+    @Test
+    public void testAddMoreThanCapacity()
+    {
+        Accumulator<Integer> accu = new Accumulator(4);
+
+        accu.add(1);
+        accu.add(2);
+        accu.add(3);
+        accu.add(4);
+
+        try
+        {
+            accu.add(5);
+            fail();
+        }
+        catch (IllegalStateException e)
+        {
+            // Expected
+        }
+    }
+
+    @Test
+    public void testIsEmptyAndSize()
+    {
+        Accumulator<Integer> accu = new Accumulator(4);
+
+        assertTrue(accu.isEmpty());
+        assertEquals(0, accu.size());
+
+        accu.add(1);
+        accu.add(2);
+
+        assertTrue(!accu.isEmpty());
+        assertEquals(2, accu.size());
+
+        accu.add(3);
+        accu.add(4);
+
+        assertTrue(!accu.isEmpty());
+        assertEquals(4, accu.size());
+    }
+
+    @Test
+    public void testGetAndIterator()
+    {
+        Accumulator<String> accu = new Accumulator(4);
+
+        accu.add("3");
+        accu.add("2");
+        accu.add("4");
+
+        assertEquals("3", accu.get(0));
+        assertEquals("2", accu.get(1));
+        assertEquals("4", accu.get(2));
+
+        try
+        {
+            assertEquals(null, accu.get(3));
+            fail();
+        }
+        catch (IndexOutOfBoundsException e)
+        {
+            // Expected
+        }
+
+        accu.add("0");
+
+        assertEquals("0", accu.get(3));
+
+        Iterator<String> iter = accu.iterator();
+
+        assertEquals("3", iter.next());
+        assertEquals("2", iter.next());
+        assertEquals("4", iter.next());
+        assertEquals("0", iter.next());
+        assertFalse(iter.hasNext());
+    }
+}