Fixed CLI to allow for full testing by using State Machines for everything, test for editing passes now

This commit is contained in:
2026-01-06 19:35:52 +01:00
parent 85446bc230
commit a390509f87
24 changed files with 436 additions and 251 deletions

View File

@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<testsuite name="hhn.temp.project.BadCasesTest" tests="8" skipped="0" failures="0" errors="0" timestamp="2026-01-04T15:32:20.146Z" hostname="KEVIN-THINKPAD" time="0.035">
<testsuite name="hhn.temp.project.BadCasesTest" tests="8" skipped="0" failures="0" errors="0" timestamp="2026-01-06T18:34:44.742Z" hostname="KEVIN-THINKPAD" time="0.026">
<properties/>
<testcase name="Assert List isn't empty after adding a task" classname="hhn.temp.project.BadCasesTest" time="0.004"/>
<testcase name="Assert List isn't empty after adding a task" classname="hhn.temp.project.BadCasesTest" time="0.002"/>
<testcase name="Assert non-existent commands are recognized as such" classname="hhn.temp.project.BadCasesTest" time="0.001"/>
<testcase name="Assert that Remove Task is programmed defensively" classname="hhn.temp.project.BadCasesTest" time="0.002"/>
<testcase name="Assert that Remove Task is programmed defensively" classname="hhn.temp.project.BadCasesTest" time="0.001"/>
<testcase name="Assert that removing a non-existent worker throws an Exception" classname="hhn.temp.project.BadCasesTest" time="0.002"/>
<testcase name="Assert Add Task is programmed defensively" classname="hhn.temp.project.BadCasesTest" time="0.002"/>
<testcase name="Assert only existing tasks can be edited" classname="hhn.temp.project.BadCasesTest" time="0.004"/>
<testcase name="Assert only existing tasks can be edited" classname="hhn.temp.project.BadCasesTest" time="0.003"/>
<testcase name="Assert that un-/finishing a Task only works with valid parameters" classname="hhn.temp.project.BadCasesTest" time="0.003"/>
<testcase name="Assert that added tasks can't be Null" classname="hhn.temp.project.BadCasesTest" time="0.003"/>
<testcase name="Assert that added tasks can't be Null" classname="hhn.temp.project.BadCasesTest" time="0.002"/>
<system-out><![CDATA[Unknown command. Type 'help' for available commands.
]]></system-out>
<system-err><![CDATA[]]></system-err>

View File

@@ -1,29 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<testsuite name="hhn.temp.project.GoodCasesTest" tests="13" skipped="0" failures="2" errors="0" timestamp="2026-01-04T15:32:20.071Z" hostname="KEVIN-THINKPAD" time="0.067">
<testsuite name="hhn.temp.project.GoodCasesTest" tests="13" skipped="0" failures="1" errors="0" timestamp="2026-01-06T18:34:44.633Z" hostname="KEVIN-THINKPAD" time="0.105">
<properties/>
<testcase name="Check Getters" classname="hhn.temp.project.GoodCasesTest" time="0.014"/>
<testcase name="Check that editing is possible through UI" classname="hhn.temp.project.GoodCasesTest" time="0.008">
<failure message="org.opentest4j.AssertionFailedError: expected: &lt;Walk&gt; but was: &lt;Run&gt;" type="org.opentest4j.AssertionFailedError">org.opentest4j.AssertionFailedError: expected: &lt;Walk&gt; but was: &lt;Run&gt;
at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1141)
at app//hhn.temp.project.GoodCasesTest.assertEditingTasksIsPossibleThroughUi(GoodCasesTest.java:133)
at java.base@17.0.2/java.lang.reflect.Method.invoke(Method.java:568)
at java.base@17.0.2/java.util.ArrayList.forEach(ArrayList.java:1511)
at java.base@17.0.2/java.util.ArrayList.forEach(ArrayList.java:1511)
</failure>
</testcase>
<testcase name="Check that every required surface command actually works" classname="hhn.temp.project.GoodCasesTest" time="0.004"/>
<testcase name="Check Getters" classname="hhn.temp.project.GoodCasesTest" time="0.019"/>
<testcase name="Check that editing is possible through UI" classname="hhn.temp.project.GoodCasesTest" time="0.014"/>
<testcase name="Check that every required surface command actually works" classname="hhn.temp.project.GoodCasesTest" time="0.017"/>
<testcase name="Assert that added Tasks are added to the List" classname="hhn.temp.project.GoodCasesTest" time="0.001"/>
<testcase name="Assert that Worker can remove Task" classname="hhn.temp.project.GoodCasesTest" time="0.001"/>
<testcase name="Check that every task command works" classname="hhn.temp.project.GoodCasesTest" time="0.005"/>
<testcase name="Assert that a Worker can add a Task" classname="hhn.temp.project.GoodCasesTest" time="0.001"/>
<testcase name="Assert that removing Workers is possible through the UI" classname="hhn.temp.project.GoodCasesTest" time="0.002"/>
<testcase name="Assert existing Tasks can be edited" classname="hhn.temp.project.GoodCasesTest" time="0.003"/>
<testcase name="Assert that removing a worker removes the worker from the worker list" classname="hhn.temp.project.GoodCasesTest" time="0.005">
<testcase name="Check that every task command works" classname="hhn.temp.project.GoodCasesTest" time="0.008"/>
<testcase name="Assert that a Worker can add a Task" classname="hhn.temp.project.GoodCasesTest" time="0.003"/>
<testcase name="Assert that removing Workers is possible through the UI" classname="hhn.temp.project.GoodCasesTest" time="0.005"/>
<testcase name="Assert existing Tasks can be edited" classname="hhn.temp.project.GoodCasesTest" time="0.001"/>
<testcase name="Assert that removing a worker removes the worker from the worker list" classname="hhn.temp.project.GoodCasesTest" time="0.012">
<failure message="org.opentest4j.AssertionFailedError: Expected java.lang.IllegalArgumentException to be thrown, but nothing was thrown." type="org.opentest4j.AssertionFailedError">org.opentest4j.AssertionFailedError: Expected java.lang.IllegalArgumentException to be thrown, but nothing was thrown.
at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:152)
at app//org.junit.jupiter.api.AssertThrows.assertThrows(AssertThrows.java:73)
@@ -35,38 +22,77 @@
at java.base@17.0.2/java.util.ArrayList.forEach(ArrayList.java:1511)
</failure>
</testcase>
<testcase name="Assert that the Scanner is actually started when AM calls start" classname="hhn.temp.project.GoodCasesTest" time="0.002"/>
<testcase name="Assert that Task State is actually changed when submitted as finished" classname="hhn.temp.project.GoodCasesTest" time="0.004"/>
<testcase name="Assert that the Scanner is actually started when AM calls start" classname="hhn.temp.project.GoodCasesTest" time="0.001"/>
<testcase name="Assert that Task State is actually changed when submitted as finished" classname="hhn.temp.project.GoodCasesTest" time="0.002"/>
<testcase name="Assert deleted Tasks no longer show up in the List" classname="hhn.temp.project.GoodCasesTest" time="0.001"/>
<system-out><![CDATA[Enter task ID: Error: Cannot invoke "java.util.Scanner.nextLine()" because "this.scanner" is null
Enter new name;description: Error: Cannot invoke "java.util.Scanner.nextLine()" because "this.scanner" is null
Unknown command. Type 'help' for available commands.
Available commands:
createWorker - Create a new worker
createTask - Create a new task
selectTask - Select a task to work with
listWorkers - List all workers
help/? - Show this help
exit - Exit the program
Available commands:
createWorker - Create a new worker
createTask - Create a new task
selectTask - Select a task to work with
listWorkers - List all workers
help/? - Show this help
exit - Exit the program
Enter worker name: Error: Cannot invoke "java.util.Scanner.nextLine()" because "this.scanner" is null
Enter worker ID: Error: Cannot invoke "java.util.Scanner.nextLine()" because "this.scanner" is null
Enter task ID: Error: Cannot invoke "java.util.Scanner.nextLine()" because "this.scanner" is null
Unknown command. Type 'help' for available commands.
Unknown command. Type 'help' for available commands.
Enter task ID: Error: Cannot invoke "java.util.Scanner.nextLine()" because "this.scanner" is null
<system-out><![CDATA[Enter task ID:
Task 1 (Run) selected
Commands: finish, unfinish, remove, edit, back
Enter new name;description:
Task edited
=== Available Commands ===
General:
help, ? - Show this help
exit - Exit the program
listworkers - List all workers and select one
selecttask - Select a task by ID
createtask - Create a new task
createworker - Create a new worker
listtasks - List all tasks
listunfinished - List unfinished tasks
listfinished - List finished tasks
When a task is selected:
finish - Mark task as finished
unfinish - Mark task as unfinished
remove - Remove the task
edit - Edit task name and description
back - Return to main menu
When a worker is selected:
remove - Remove the worker
back - Return to main menu
=== Available Commands ===
General:
help, ? - Show this help
exit - Exit the program
listworkers - List all workers and select one
selecttask - Select a task by ID
createtask - Create a new task
createworker - Create a new worker
listtasks - List all tasks
listunfinished - List unfinished tasks
listfinished - List finished tasks
When a task is selected:
finish - Mark task as finished
unfinish - Mark task as unfinished
remove - Remove the task
edit - Edit task name and description
back - Return to main menu
When a worker is selected:
remove - Remove the worker
back - Return to main menu
Enter worker name:
Created worker with ID: 1
Enter task ID:
Invalid input. Please enter a task ID or 'back':
Invalid input. Please enter a task ID or 'back':
Enter task ID:
Task 1 (Run) selected
Commands: finish, unfinish, remove, edit, back
Task marked as finished
Task marked as unfinished
Task removed
Unknown command. Type 'help' for available commands.
Unknown command. Type 'help' for available commands.
Enter worker ID: Error: Cannot invoke "java.util.Scanner.nextLine()" because "this.scanner" is null
Available workers:
1: Alfred
2: Balfred
Enter worker ID to select (or 'back'):
Worker 1 (Alfred) selected
Commands: remove, back
Worker removed
Unknown command. Type 'help' for available commands.
Unknown command. Type 'help' for available commands.