test(01-01): add failing WriteBuffer unit tests
- Test offer/offerBatch/drain/isFull/size/capacity/remainingCapacity - Tests fail because WriteBuffer class does not exist yet (TDD RED) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
package com.cameleer3.server.core.ingestion;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class WriteBufferTest {
|
||||
|
||||
private WriteBuffer<String> buffer;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
buffer = new WriteBuffer<>(10);
|
||||
}
|
||||
|
||||
@Test
|
||||
void offerSucceedsUntilCapacity() {
|
||||
for (int i = 0; i < 10; i++) {
|
||||
assertTrue(buffer.offer("item-" + i), "offer should succeed for item " + i);
|
||||
}
|
||||
assertEquals(10, buffer.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
void offerReturnsFalseWhenFull() {
|
||||
for (int i = 0; i < 10; i++) {
|
||||
buffer.offer("item-" + i);
|
||||
}
|
||||
assertFalse(buffer.offer("overflow"), "offer should return false when buffer is full");
|
||||
}
|
||||
|
||||
@Test
|
||||
void offerBatchSucceedsWhenCapacitySufficient() {
|
||||
List<String> batch = List.of("a", "b", "c");
|
||||
assertTrue(buffer.offerBatch(batch));
|
||||
assertEquals(3, buffer.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
void offerBatchReturnsFalseWithoutPartialInsertWhenOverflow() {
|
||||
for (int i = 0; i < 8; i++) {
|
||||
buffer.offer("item-" + i);
|
||||
}
|
||||
// Buffer has 2 remaining, batch of 3 should fail entirely
|
||||
List<String> batch = List.of("a", "b", "c");
|
||||
assertFalse(buffer.offerBatch(batch));
|
||||
assertEquals(8, buffer.size(), "no items should have been added on failed batch");
|
||||
}
|
||||
|
||||
@Test
|
||||
void drainReturnsItemsAndRemovesThem() {
|
||||
buffer.offer("a");
|
||||
buffer.offer("b");
|
||||
buffer.offer("c");
|
||||
|
||||
List<String> drained = buffer.drain(2);
|
||||
assertEquals(2, drained.size());
|
||||
assertEquals(1, buffer.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
void drainWithEmptyQueueReturnsEmptyList() {
|
||||
List<String> drained = buffer.drain(5);
|
||||
assertTrue(drained.isEmpty());
|
||||
}
|
||||
|
||||
@Test
|
||||
void isFullReturnsTrueAtCapacity() {
|
||||
assertFalse(buffer.isFull());
|
||||
for (int i = 0; i < 10; i++) {
|
||||
buffer.offer("item-" + i);
|
||||
}
|
||||
assertTrue(buffer.isFull());
|
||||
}
|
||||
|
||||
@Test
|
||||
void sizeTracksCurrentDepth() {
|
||||
assertEquals(0, buffer.size());
|
||||
buffer.offer("a");
|
||||
assertEquals(1, buffer.size());
|
||||
buffer.drain(1);
|
||||
assertEquals(0, buffer.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
void capacityReturnsConfiguredCapacity() {
|
||||
assertEquals(10, buffer.capacity());
|
||||
}
|
||||
|
||||
@Test
|
||||
void remainingCapacityDecreasesWithOffers() {
|
||||
assertEquals(10, buffer.remainingCapacity());
|
||||
buffer.offer("a");
|
||||
assertEquals(9, buffer.remainingCapacity());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user