package tw.com.unit; import org.junit.Before; import org.junit.Test; import tw.com.SetsDeltaIndex; import tw.com.entity.DeletionPending; import tw.com.entity.DeletionsPending; import tw.com.entity.StackNameAndId; import tw.com.exceptions.CannotFindVpcException; import java.util.LinkedList; import java.util.List; import static org.junit.Assert.*; public class TestDeletionsPending implements SetsDeltaIndex { private DeletionsPending pending; private Integer setDelta; @Before public void beforeEachTestRuns() { pending = new DeletionsPending(); pending.add(2, new StackNameAndId("nameA", "112")); pending.add(1, new StackNameAndId("nameB", "113")); pending.add(3, new StackNameAndId("nameC", "114")); setDelta = -100; } @Test public void shouldIterateOverPendingsInCorrectOrder() { LinkedList<Integer> results = new LinkedList<>(); for(DeletionPending item : pending) { results.add(item.getDelta()); } assertEquals(3, results.size()); assertEquals(3, (int)results.get(0)); assertEquals(2, (int)results.get(1)); assertEquals(1, (int)results.get(2)); } @Test public void shouldMarkItemsAsDeleted() { pending.markIdAsDeleted("114"); List<String> result = pending.getNamesOfDeleted(); assertEquals(1, result.size()); assertEquals("nameC", result.get(0)); assertTrue(pending.hasMore()); pending.markIdAsDeleted("112"); result = pending.getNamesOfDeleted(); assertEquals(2, result.size()); assertEquals("nameA", result.get(1)); assertTrue(pending.hasMore()); pending.markIdAsDeleted("113"); result = pending.getNamesOfDeleted(); assertEquals(3, result.size()); assertEquals("nameB", result.get(2)); assertFalse(pending.hasMore()); } @Test public void shouldUpdateDeltaIndexCorrectly() throws CannotFindVpcException { pending.markIdAsDeleted("114"); pending.markIdAsDeleted("112"); pending.updateDeltaIndex(this); assertEquals(new Integer(1), setDelta); } @Override public void setDeltaIndex(Integer setDelta) throws CannotFindVpcException { this.setDelta = setDelta; } }