diff --git a/data-structures/src/main/java/com/baeldung/circularbuffer/CircularBuffer.java b/data-structures/src/main/java/com/baeldung/circularbuffer/CircularBuffer.java index 6f60621bc8..271fc5f376 100644 --- a/data-structures/src/main/java/com/baeldung/circularbuffer/CircularBuffer.java +++ b/data-structures/src/main/java/com/baeldung/circularbuffer/CircularBuffer.java @@ -11,7 +11,7 @@ public class CircularBuffer { @SuppressWarnings("unchecked") public CircularBuffer(int capacity) { - this.capacity = (capacity < 1 ? DEFAULT_CAPACITY : capacity); + this.capacity = (capacity < 1) ? DEFAULT_CAPACITY : capacity; this.data = (E[]) new Object[capacity]; this.readSequence = 0; @@ -20,7 +20,7 @@ public class CircularBuffer { public boolean offer(E element) { - if (!isFull()) { + if (isNotFull()) { int nextWriteSeq = writeSequence + 1; data[nextWriteSeq % capacity] = element; @@ -34,7 +34,7 @@ public class CircularBuffer { public E poll() { - if (!isEmpty()) { + if (isNotEmpty()) { E nextValue = data[readSequence % capacity]; readSequence += 1; @@ -62,4 +62,14 @@ public class CircularBuffer { return size() >= capacity; } + + private boolean isNotEmpty() { + + return !isEmpty(); + } + + private boolean isNotFull() { + + return !isFull(); + } } diff --git a/data-structures/src/test/java/com/baeldung/circularbuffer/CircularBufferUnitTest.java b/data-structures/src/test/java/com/baeldung/circularbuffer/CircularBufferUnitTest.java index 801a46b45c..4b8e8646f3 100644 --- a/data-structures/src/test/java/com/baeldung/circularbuffer/CircularBufferUnitTest.java +++ b/data-structures/src/test/java/com/baeldung/circularbuffer/CircularBufferUnitTest.java @@ -10,14 +10,30 @@ import org.junit.jupiter.api.Test; public class CircularBufferUnitTest { private final String[] shapes = { "Circle", "Triangle", "Rectangle", "Square", "Rhombus", "Trapezoid", "Pentagon", "Pentagram", "Hexagon", "Hexagram" }; + private final int defaultCapacity = shapes.length; @Test - public void givenCircularBuffer_whenAnElementIsAddedAndRemoved_thenBufferIsEmpty() { + public void givenCircularBuffer_whenAnElementIsEnqueued_thenSizeIsOne() { + CircularBuffer buffer = new CircularBuffer<>(defaultCapacity); - int capacity = 2; - CircularBuffer buffer = new CircularBuffer<>(capacity); + assertTrue(buffer.offer("Square")); + assertEquals(1, buffer.size()); + } - assertEquals(capacity, buffer.capacity()); + @Test + public void givenCircularBuffer_whenAnElementIsDequeued_thenElementMatchesEnqueuedElement() { + CircularBuffer buffer = new CircularBuffer<>(defaultCapacity); + + buffer.offer("Triangle"); + + String shape = buffer.poll(); + assertEquals("Triangle", shape); + } + + @Test + public void givenCircularBuffer_whenAnElementIsEnqueuedAndDeququed_thenBufferIsEmpty() { + + CircularBuffer buffer = new CircularBuffer<>(defaultCapacity); buffer.offer("Rectangle"); @@ -30,7 +46,7 @@ public class CircularBufferUnitTest { } @Test - public void givenCircularBuffer_whenFilledToCapacity_thenNoMoreElementsCanBeAdded() { + public void givenCircularBuffer_whenFilledToCapacity_thenNoMoreElementsCanBeEnqueued() { int capacity = shapes.length; CircularBuffer buffer = new CircularBuffer<>(capacity);