ScannerImplementation #5

Merged
KevinSchoenmayer merged 11 commits from ScannerImplementation into main 2026-01-06 21:24:37 +01:00
4 changed files with 57 additions and 6 deletions
Showing only changes of commit 2af4f4b7a4 - Show all commits

View File

@@ -26,11 +26,14 @@ public class AssignmentManager {
workerMap.put(workerIdCounter, worker);
return workerIdCounter;
}
public void removeWorker(int workerId) {
workerMap.remove(workerId);
}
public int addTask(int workerId, String name, String description) {
if (!workerMap.containsKey(workerId) || name == null || description == null) {
throw new IllegalArgumentException("WorkerId must exist and name or description can't be null");
}
Task task = new Task(++taskIdCounter, workerId, name, description, this);
Task task = new Task(++taskIdCounter, workerId, name, description);
taskMap.put(taskIdCounter, task);
return taskIdCounter;
}

View File

@@ -5,10 +5,8 @@ public class Task {
String description;
int taskId;
int workerId;
AssignmentManager manager;
TaskState state;
public Task(int taskId, int workerId, String name, String description, AssignmentManager manager) {
this.manager = manager;
public Task(int taskId, int workerId, String name, String description) {
this.name = name;
this.description = description;
this.taskId = taskId;

View File

@@ -52,4 +52,20 @@ public class BadCasesTest {
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");
}
}
}

View File

@@ -113,7 +113,41 @@ public class GoodCasesTest {
int taskId = manager.addTask(workerId, "Run", "Jog 10 Miles");
manager.getUserCommands().handleInput("selectTask");
assertDoesNotThrow(() -> manager.getUserCommands().handleInput(taskId));
assertDoesNotThrow(() -> manager.getUserCommands().handleInput("finishTask"));
assertDoesNotThrow(() -> manager.getUserCommands().handleInput("finish"));
assertDoesNotThrow(() -> manager.getUserCommands().handleInput("unfinish"));
assertDoesNotThrow(() -> manager.getUserCommands().handleInput("remove"));
assertDoesNotThrow(() -> manager.getUserCommands().handleInput("back"));
assertDoesNotThrow(() -> manager.getUserCommands().handleInput("edit"));
}
@Test
@DisplayName("Check that editing is possible through UI")
public void assertEditingTasksIsPossibleThroughUi() {
int workerId = manager.createWorker("Alfred");
int taskId = manager.addTask(workerId, "Run", "Jog 10 Miles");
manager.getUserCommands().handleInput("selectTask");
manager.getUserCommands().handleInput(taskId);
manager.getUserCommands().handleInput("edit");
assertDoesNotThrow(() -> manager.getUserCommands().handleInput("Walk;Walk 3 Miles"));
assertEquals("Walk", manager.getTask(taskId).getName());
assertEquals("Walk 3 Miles", manager.getTask(taskId).getDescription());
assertDoesNotThrow(() -> manager.getUserCommands().handleInput("back"));
}
@Test
@DisplayName("Assert that removing Workers is possible through the UI")
public void assertRemovingWorkersIsPossibleThroughUI() {
int workerId = manager.createWorker("Alfred");
int workerId2 = manager.createWorker("Balfred");
manager.getUserCommands().handleInput("listWorkers");
manager.getUserCommands().handleInput(workerId);
assertDoesNotThrow(() -> manager.getUserCommands().handleInput("remove"));
manager.getUserCommands().handleInput(workerId2);
assertDoesNotThrow(() -> manager.getUserCommands().handleInput("back"));
}
@Test
@DisplayName("Assert that removing a worker removes the worker from the worker list")
public void assertRemoveWorkerActuallyRemoves() {
int workerId = manager.createWorker("Alfred");
manager.removeWorker(workerId);
assertThrows(IllegalArgumentException.class, () -> manager.workerMap.containsKey(workerId));
}
}