package com.cwa.ladder; import java.util.Arrays; import static org.junit.Assert.*; import org.junit.Test; public class LadderTest { @Test public void addUserIntoLadder() { Ladder ladder = new Ladder(1); assertEquals(1, ladder.addUser(1001)); assertEquals(2, ladder.addUser(2222)); assertEquals(3, ladder.addUser(1024)); assertEquals(3, ladder.getUidList().size()); assertEquals(-1, ladder.addUser(2222)); assertEquals(3, ladder.getUidList().size()); assertEquals(Arrays.asList(1001, 2222, 1024), ladder.getUidList()); } @Test public void removeUserFromLadder() { Ladder ladder = new Ladder(1); ladder.setUidList(Arrays.asList(1, 2, 3, 4)); assertFalse(ladder.removeUser(100)); assertEquals(Arrays.asList(1, 2, 3, 4), ladder.getUidList()); assertTrue(ladder.removeUser(1)); assertEquals(Arrays.asList(2, 3, 4), ladder.getUidList()); assertTrue(ladder.removeUser(3)); assertEquals(Arrays.asList(2, 4), ladder.getUidList()); assertTrue(ladder.removeUser(4)); assertEquals(Arrays.asList(2), ladder.getUidList()); assertTrue(ladder.removeUser(2)); assertTrue(ladder.getUidList().isEmpty()); assertFalse(ladder.removeUser(2)); } @Test public void getUserStep() { Ladder ladder = new Ladder(1); ladder.setUidList(Arrays.asList(1, 2, 3, 4, 5)); assertEquals(1, ladder.getStep(1)); assertEquals(2, ladder.getStep(2)); assertEquals(3, ladder.getStep(3)); assertEquals(4, ladder.getStep(4)); assertEquals(5, ladder.getStep(5)); assertEquals(-1, ladder.getStep(6)); assertEquals(-1, ladder.getStep(100)); } @Test public void swapUsersInLadder() { Ladder ladder = new Ladder(1); ladder.setUidList(Arrays.asList(1, 2, 3, 4, 5)); assertFalse(ladder.swapUsers(100, 1)); assertFalse(ladder.swapUsers(4, 25)); assertFalse(ladder.swapUsers(0, 6)); assertEquals(Arrays.asList(1, 2, 3, 4, 5), ladder.getUidList()); assertTrue(ladder.swapUsers(1, 2)); assertEquals(Arrays.asList(2, 1, 3, 4, 5), ladder.getUidList()); assertTrue(ladder.swapUsers(1, 4)); assertEquals(Arrays.asList(2, 4, 3, 1, 5), ladder.getUidList()); assertTrue(ladder.swapUsers(5, 1)); assertEquals(Arrays.asList(2, 4, 3, 5, 1), ladder.getUidList()); } @Test public void ladderCapacity() { Ladder smallLadder = new Ladder(3, 5); smallLadder.addUser(1); smallLadder.addUser(2); smallLadder.addUser(3); smallLadder.addUser(4); smallLadder.addUser(5); try { smallLadder.addUser(6); } catch (RuntimeException expected) { assertEquals("ladder 3 is full.", expected.getMessage()); } } }