package hhn.temp.project; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; public class BadCasesTest { AssignmentManager manager; @BeforeEach public void setup() { manager = new AssignmentManager(); } @Test @DisplayName("Assert that added tasks can't be Null") public void assertNewTasksAreNotNull() { int workerId = manager.createWorker("Alfred"); assertThrows(IllegalArgumentException.class, () -> manager.addTask(workerId, null, null)); manager.removeWorker(workerId); } @Test @DisplayName("Assert List isn't empty after adding a task") public void assertListNowEmptyAfterAdd() { int workerId = manager.createWorker("Alfred"); int taskId = manager.addTask(workerId, "Run", "Jog 10 Miles"); assertFalse(manager.getTaskMap().isEmpty()); manager.removeWorker(workerId); manager.removeTask(taskId); } @Test @DisplayName("Assert only existing tasks can be edited") public void assertEditOnlyExistingTasks() { int workerId = manager.createWorker("Alfred"); assertThrows(IllegalArgumentException.class, () -> manager.editTask(workerId, 99969, "I", "am Illegal")); assertThrows(IllegalArgumentException.class, () -> manager.editTask(22200, 99969, "I", "am Illegal")); manager.removeWorker(workerId); } @Test @DisplayName("Assert Add Task is programmed defensively") public void assertAddTaskOnlyAcceptsValidParameters() { int workerId = manager.createWorker("Alfred"); assertThrows(IllegalArgumentException.class, () -> manager.addTask( 20203,"I", "am Illegal")); assertThrows(IllegalArgumentException.class, () -> manager.addTask( workerId,null, null)); manager.removeWorker(workerId); } @Test @DisplayName("Assert that Remove Task is programmed defensively") public void assertRemoveTaskOnlyAcceptsValidParameters() { assertThrows(IllegalArgumentException.class, () -> manager.removeTask(20320)); } @Test @DisplayName("Assert that un-/finishing a Task only works with valid parameters") public void assertTaskStateChangesOnlyAcceptsValidParameters() { assertThrows(IllegalArgumentException.class, () -> manager.finishTask(20405, 21034)); assertThrows(IllegalArgumentException.class, () -> manager.unfinishTask(20405, 21034)); } @Test @DisplayName("Assert that removing a non-existent worker throws an Exception") public void assertRemovingNonExistentWorkerFails() { assertThrows(IllegalArgumentException.class, () -> manager.removeWorker(34054)); } @Test @DisplayName("Assert non-existent commands are recognized as such") public void assertInvalidCommandsDontCrash() { int workerId = manager.createWorker("Alfred"); int taskId = manager.addTask(workerId, "Run", "Jog 10 Miles"); try { manager.getUserCommands().handleInput("baum"); } catch (Exception e) { fail("Should not crash just because a command is invalid"); } manager.removeWorker(workerId); manager.removeTask(taskId); } }