Compare commits
4 Commits
bb71c7e329
...
85446bc230
| Author | SHA1 | Date | |
|---|---|---|---|
| 85446bc230 | |||
| f0da7b0f9a | |||
| c85d55ce7d | |||
| a875f24e83 |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -41,7 +41,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="infoBox" id="duration">
|
<div class="infoBox" id="duration">
|
||||||
<div class="counter">0.048s</div>
|
<div class="counter">0.021s</div>
|
||||||
<p>duration</p>
|
<p>duration</p>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
@@ -63,6 +63,9 @@
|
|||||||
<li>
|
<li>
|
||||||
<a href="#">Tests</a>
|
<a href="#">Tests</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#">Standard output</a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="tab">
|
<div class="tab">
|
||||||
<h2>Tests</h2>
|
<h2>Tests</h2>
|
||||||
@@ -78,13 +81,13 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td class="success">Assert Add Task is programmed defensively</td>
|
<td class="success">Assert Add Task is programmed defensively</td>
|
||||||
<td class="success">assertAddTaskOnlyAcceptsValidParameters()</td>
|
<td class="success">assertAddTaskOnlyAcceptsValidParameters()</td>
|
||||||
<td class="success">0.003s</td>
|
<td class="success">0.002s</td>
|
||||||
<td class="success">passed</td>
|
<td class="success">passed</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="success">Assert only existing tasks can be edited</td>
|
<td class="success">Assert only existing tasks can be edited</td>
|
||||||
<td class="success">assertEditOnlyExistingTasks()</td>
|
<td class="success">assertEditOnlyExistingTasks()</td>
|
||||||
<td class="success">0.002s</td>
|
<td class="success">0.004s</td>
|
||||||
<td class="success">passed</td>
|
<td class="success">passed</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -96,19 +99,19 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td class="success">Assert List isn't empty after adding a task</td>
|
<td class="success">Assert List isn't empty after adding a task</td>
|
||||||
<td class="success">assertListNowEmptyAfterAdd()</td>
|
<td class="success">assertListNowEmptyAfterAdd()</td>
|
||||||
<td class="success">0.034s</td>
|
<td class="success">0.004s</td>
|
||||||
<td class="success">passed</td>
|
<td class="success">passed</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="success">Assert that added tasks can't be Null</td>
|
<td class="success">Assert that added tasks can't be Null</td>
|
||||||
<td class="success">assertNewTasksAreNotNull()</td>
|
<td class="success">assertNewTasksAreNotNull()</td>
|
||||||
<td class="success">0.001s</td>
|
<td class="success">0.003s</td>
|
||||||
<td class="success">passed</td>
|
<td class="success">passed</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="success">Assert that Remove Task is programmed defensively</td>
|
<td class="success">Assert that Remove Task is programmed defensively</td>
|
||||||
<td class="success">assertRemoveTaskOnlyAcceptsValidParameters()</td>
|
<td class="success">assertRemoveTaskOnlyAcceptsValidParameters()</td>
|
||||||
<td class="success">0.003s</td>
|
<td class="success">0.002s</td>
|
||||||
<td class="success">passed</td>
|
<td class="success">passed</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -120,11 +123,18 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td class="success">Assert that un-/finishing a Task only works with valid parameters</td>
|
<td class="success">Assert that un-/finishing a Task only works with valid parameters</td>
|
||||||
<td class="success">assertTaskStateChangesOnlyAcceptsValidParameters()</td>
|
<td class="success">assertTaskStateChangesOnlyAcceptsValidParameters()</td>
|
||||||
<td class="success">0.002s</td>
|
<td class="success">0.003s</td>
|
||||||
<td class="success">passed</td>
|
<td class="success">passed</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="tab">
|
||||||
|
<h2>Standard output</h2>
|
||||||
|
<span class="code">
|
||||||
|
<pre>Unknown command. Type 'help' for available commands.
|
||||||
|
</pre>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="footer">
|
<div id="footer">
|
||||||
<p>
|
<p>
|
||||||
@@ -133,7 +143,7 @@
|
|||||||
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
|
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
|
||||||
</label>
|
</label>
|
||||||
</div>Generated by
|
</div>Generated by
|
||||||
<a href="https://www.gradle.org">Gradle 8.14</a> at 03.12.2025, 21:21:26</p>
|
<a href="https://www.gradle.org">Gradle 8.14</a> at 04.01.2026, 16:32:20</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="infoBox" id="duration">
|
<div class="infoBox" id="duration">
|
||||||
<div class="counter">0.029s</div>
|
<div class="counter">0.051s</div>
|
||||||
<p>duration</p>
|
<p>duration</p>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
@@ -66,6 +66,9 @@
|
|||||||
<li>
|
<li>
|
||||||
<a href="#">Tests</a>
|
<a href="#">Tests</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#">Standard output</a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="tab">
|
<div class="tab">
|
||||||
<h2>Failed tests</h2>
|
<h2>Failed tests</h2>
|
||||||
@@ -118,43 +121,43 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td class="success">Check that every required surface command actually works</td>
|
<td class="success">Check that every required surface command actually works</td>
|
||||||
<td class="success">assertCommandsAreRecognized()</td>
|
<td class="success">assertCommandsAreRecognized()</td>
|
||||||
<td class="success">0.003s</td>
|
<td class="success">0.004s</td>
|
||||||
<td class="success">passed</td>
|
<td class="success">passed</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="success">Assert deleted Tasks no longer show up in the List</td>
|
<td class="success">Assert deleted Tasks no longer show up in the List</td>
|
||||||
<td class="success">assertDeletedTasksDisappear()</td>
|
<td class="success">assertDeletedTasksDisappear()</td>
|
||||||
<td class="success">0.002s</td>
|
<td class="success">0.001s</td>
|
||||||
<td class="success">passed</td>
|
<td class="success">passed</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="failures">Check that editing is possible through UI</td>
|
<td class="failures">Check that editing is possible through UI</td>
|
||||||
<td class="failures">assertEditingTasksIsPossibleThroughUi()</td>
|
<td class="failures">assertEditingTasksIsPossibleThroughUi()</td>
|
||||||
<td class="failures">0.005s</td>
|
<td class="failures">0.008s</td>
|
||||||
<td class="failures">failed</td>
|
<td class="failures">failed</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="success">Assert existing Tasks can be edited</td>
|
<td class="success">Assert existing Tasks can be edited</td>
|
||||||
<td class="success">assertExistingTasksCanBeEdited()</td>
|
<td class="success">assertExistingTasksCanBeEdited()</td>
|
||||||
<td class="success">0.001s</td>
|
<td class="success">0.003s</td>
|
||||||
<td class="success">passed</td>
|
<td class="success">passed</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="success">Check that every task command works</td>
|
<td class="success">Check that every task command works</td>
|
||||||
<td class="success">assertFinishingTasksIsPossibleThroughUi()</td>
|
<td class="success">assertFinishingTasksIsPossibleThroughUi()</td>
|
||||||
<td class="success">0.004s</td>
|
<td class="success">0.005s</td>
|
||||||
<td class="success">passed</td>
|
<td class="success">passed</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="success">Check Getters</td>
|
<td class="success">Check Getters</td>
|
||||||
<td class="success">assertGettersWorkCorrectly()</td>
|
<td class="success">assertGettersWorkCorrectly()</td>
|
||||||
<td class="success">0.003s</td>
|
<td class="success">0.014s</td>
|
||||||
<td class="success">passed</td>
|
<td class="success">passed</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="failures">Assert that removing a worker removes the worker from the worker list</td>
|
<td class="failures">Assert that removing a worker removes the worker from the worker list</td>
|
||||||
<td class="failures">assertRemoveWorkerActuallyRemoves()</td>
|
<td class="failures">assertRemoveWorkerActuallyRemoves()</td>
|
||||||
<td class="failures">0.004s</td>
|
<td class="failures">0.005s</td>
|
||||||
<td class="failures">failed</td>
|
<td class="failures">failed</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -166,13 +169,13 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td class="success">Assert that the Scanner is actually started when AM calls start</td>
|
<td class="success">Assert that the Scanner is actually started when AM calls start</td>
|
||||||
<td class="success">assertScannerExists()</td>
|
<td class="success">assertScannerExists()</td>
|
||||||
<td class="success">0.001s</td>
|
<td class="success">0.002s</td>
|
||||||
<td class="success">passed</td>
|
<td class="success">passed</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="success">Assert that Task State is actually changed when submitted as finished</td>
|
<td class="success">Assert that Task State is actually changed when submitted as finished</td>
|
||||||
<td class="success">assertTaskStateChanges()</td>
|
<td class="success">assertTaskStateChanges()</td>
|
||||||
<td class="success">0.002s</td>
|
<td class="success">0.004s</td>
|
||||||
<td class="success">passed</td>
|
<td class="success">passed</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -190,11 +193,49 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td class="success">Assert that Worker can remove Task</td>
|
<td class="success">Assert that Worker can remove Task</td>
|
||||||
<td class="success">assertWorkerCanRemoveOwnTask()</td>
|
<td class="success">assertWorkerCanRemoveOwnTask()</td>
|
||||||
<td class="success">0s</td>
|
<td class="success">0.001s</td>
|
||||||
<td class="success">passed</td>
|
<td class="success">passed</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="tab">
|
||||||
|
<h2>Standard output</h2>
|
||||||
|
<span class="code">
|
||||||
|
<pre>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
|
||||||
|
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
|
||||||
|
Worker removed
|
||||||
|
Unknown command. Type 'help' for available commands.
|
||||||
|
Unknown command. Type 'help' for available commands.
|
||||||
|
</pre>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="footer">
|
<div id="footer">
|
||||||
<p>
|
<p>
|
||||||
@@ -203,7 +244,7 @@
|
|||||||
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
|
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
|
||||||
</label>
|
</label>
|
||||||
</div>Generated by
|
</div>Generated by
|
||||||
<a href="https://www.gradle.org">Gradle 8.14</a> at 03.12.2025, 21:21:26</p>
|
<a href="https://www.gradle.org">Gradle 8.14</a> at 04.01.2026, 16:32:20</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="infoBox" id="failures">
|
<div class="infoBox" id="failures">
|
||||||
<div class="counter">3</div>
|
<div class="counter">5</div>
|
||||||
<p>failures</p>
|
<p>failures</p>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="infoBox" id="duration">
|
<div class="infoBox" id="duration">
|
||||||
<div class="counter">0.890s</div>
|
<div class="counter">1.810s</div>
|
||||||
<p>duration</p>
|
<p>duration</p>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="infoBox failures" id="successRate">
|
<div class="infoBox failures" id="successRate">
|
||||||
<div class="percent">88%</div>
|
<div class="percent">80%</div>
|
||||||
<p>successful</p>
|
<p>successful</p>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
@@ -71,8 +71,16 @@
|
|||||||
<h2>Failed tests</h2>
|
<h2>Failed tests</h2>
|
||||||
<ul class="linkList">
|
<ul class="linkList">
|
||||||
<li>
|
<li>
|
||||||
<a href="classes/hhn.temp.project.DatabaseBadCasesTest.html">DatabaseBadCasesTest</a>.
|
<a href="classes/hhn.temp.project.DatabaseGoodCasesTest.html">DatabaseGoodCasesTest</a>.
|
||||||
<a href="classes/hhn.temp.project.DatabaseBadCasesTest.html#assertConnectionFailed()">Assert connection failed</a>
|
<a href="classes/hhn.temp.project.DatabaseGoodCasesTest.html#assertConnectToDatabase()">Assert connecting to database</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="classes/hhn.temp.project.DatabaseGoodCasesTest.html">DatabaseGoodCasesTest</a>.
|
||||||
|
<a href="classes/hhn.temp.project.DatabaseGoodCasesTest.html#assertGetTestClass()">Assert that the TestClass could be inserted into the database</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="classes/hhn.temp.project.DatabaseGoodCasesTest.html">DatabaseGoodCasesTest</a>.
|
||||||
|
<a href="classes/hhn.temp.project.DatabaseGoodCasesTest.html#assertInsertTestClass()">Assert that the TestClass could be inserted into the database</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="classes/hhn.temp.project.GoodCasesTest.html">GoodCasesTest</a>.
|
<a href="classes/hhn.temp.project.GoodCasesTest.html">GoodCasesTest</a>.
|
||||||
@@ -103,10 +111,10 @@
|
|||||||
<a href="packages/hhn.temp.project.html">hhn.temp.project</a>
|
<a href="packages/hhn.temp.project.html">hhn.temp.project</a>
|
||||||
</td>
|
</td>
|
||||||
<td>25</td>
|
<td>25</td>
|
||||||
<td>3</td>
|
<td>5</td>
|
||||||
<td>0</td>
|
<td>0</td>
|
||||||
<td>0.890s</td>
|
<td>1.810s</td>
|
||||||
<td class="failures">88%</td>
|
<td class="failures">80%</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
@@ -132,28 +140,28 @@
|
|||||||
<td>8</td>
|
<td>8</td>
|
||||||
<td>0</td>
|
<td>0</td>
|
||||||
<td>0</td>
|
<td>0</td>
|
||||||
<td>0.048s</td>
|
<td>0.021s</td>
|
||||||
|
<td class="success">100%</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="success">
|
||||||
|
<a href="classes/hhn.temp.project.DatabaseBadCasesTest.html">hhn.temp.project.DatabaseBadCasesTest</a>
|
||||||
|
</td>
|
||||||
|
<td>1</td>
|
||||||
|
<td>0</td>
|
||||||
|
<td>0</td>
|
||||||
|
<td>0.027s</td>
|
||||||
<td class="success">100%</td>
|
<td class="success">100%</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="failures">
|
<td class="failures">
|
||||||
<a href="classes/hhn.temp.project.DatabaseBadCasesTest.html">hhn.temp.project.DatabaseBadCasesTest</a>
|
|
||||||
</td>
|
|
||||||
<td>1</td>
|
|
||||||
<td>1</td>
|
|
||||||
<td>0</td>
|
|
||||||
<td>0.608s</td>
|
|
||||||
<td class="failures">0%</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="success">
|
|
||||||
<a href="classes/hhn.temp.project.DatabaseGoodCasesTest.html">hhn.temp.project.DatabaseGoodCasesTest</a>
|
<a href="classes/hhn.temp.project.DatabaseGoodCasesTest.html">hhn.temp.project.DatabaseGoodCasesTest</a>
|
||||||
</td>
|
</td>
|
||||||
<td>3</td>
|
<td>3</td>
|
||||||
|
<td>3</td>
|
||||||
<td>0</td>
|
<td>0</td>
|
||||||
<td>0</td>
|
<td>1.711s</td>
|
||||||
<td>0.205s</td>
|
<td class="failures">0%</td>
|
||||||
<td class="success">100%</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="failures">
|
<td class="failures">
|
||||||
@@ -162,7 +170,7 @@
|
|||||||
<td>13</td>
|
<td>13</td>
|
||||||
<td>2</td>
|
<td>2</td>
|
||||||
<td>0</td>
|
<td>0</td>
|
||||||
<td>0.029s</td>
|
<td>0.051s</td>
|
||||||
<td class="failures">84%</td>
|
<td class="failures">84%</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
@@ -176,7 +184,7 @@
|
|||||||
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
|
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
|
||||||
</label>
|
</label>
|
||||||
</div>Generated by
|
</div>Generated by
|
||||||
<a href="https://www.gradle.org">Gradle 8.14</a> at 03.12.2025, 21:21:26</p>
|
<a href="https://www.gradle.org">Gradle 8.14</a> at 04.01.2026, 16:32:20</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="infoBox" id="failures">
|
<div class="infoBox" id="failures">
|
||||||
<div class="counter">3</div>
|
<div class="counter">5</div>
|
||||||
<p>failures</p>
|
<p>failures</p>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="infoBox" id="duration">
|
<div class="infoBox" id="duration">
|
||||||
<div class="counter">0.890s</div>
|
<div class="counter">1.810s</div>
|
||||||
<p>duration</p>
|
<p>duration</p>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
@@ -50,7 +50,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="infoBox failures" id="successRate">
|
<div class="infoBox failures" id="successRate">
|
||||||
<div class="percent">88%</div>
|
<div class="percent">80%</div>
|
||||||
<p>successful</p>
|
<p>successful</p>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
@@ -70,8 +70,16 @@
|
|||||||
<h2>Failed tests</h2>
|
<h2>Failed tests</h2>
|
||||||
<ul class="linkList">
|
<ul class="linkList">
|
||||||
<li>
|
<li>
|
||||||
<a href="../classes/hhn.temp.project.DatabaseBadCasesTest.html">DatabaseBadCasesTest</a>.
|
<a href="../classes/hhn.temp.project.DatabaseGoodCasesTest.html">DatabaseGoodCasesTest</a>.
|
||||||
<a href="../classes/hhn.temp.project.DatabaseBadCasesTest.html#assertConnectionFailed()">Assert connection failed</a>
|
<a href="../classes/hhn.temp.project.DatabaseGoodCasesTest.html#assertConnectToDatabase()">Assert connecting to database</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="../classes/hhn.temp.project.DatabaseGoodCasesTest.html">DatabaseGoodCasesTest</a>.
|
||||||
|
<a href="../classes/hhn.temp.project.DatabaseGoodCasesTest.html#assertGetTestClass()">Assert that the TestClass could be inserted into the database</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="../classes/hhn.temp.project.DatabaseGoodCasesTest.html">DatabaseGoodCasesTest</a>.
|
||||||
|
<a href="../classes/hhn.temp.project.DatabaseGoodCasesTest.html#assertInsertTestClass()">Assert that the TestClass could be inserted into the database</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="../classes/hhn.temp.project.GoodCasesTest.html">GoodCasesTest</a>.
|
<a href="../classes/hhn.temp.project.GoodCasesTest.html">GoodCasesTest</a>.
|
||||||
@@ -103,28 +111,28 @@
|
|||||||
<td>8</td>
|
<td>8</td>
|
||||||
<td>0</td>
|
<td>0</td>
|
||||||
<td>0</td>
|
<td>0</td>
|
||||||
<td>0.048s</td>
|
<td>0.021s</td>
|
||||||
|
<td class="success">100%</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="success">
|
||||||
|
<a href="../classes/hhn.temp.project.DatabaseBadCasesTest.html">DatabaseBadCasesTest</a>
|
||||||
|
</td>
|
||||||
|
<td>1</td>
|
||||||
|
<td>0</td>
|
||||||
|
<td>0</td>
|
||||||
|
<td>0.027s</td>
|
||||||
<td class="success">100%</td>
|
<td class="success">100%</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="failures">
|
<td class="failures">
|
||||||
<a href="../classes/hhn.temp.project.DatabaseBadCasesTest.html">DatabaseBadCasesTest</a>
|
|
||||||
</td>
|
|
||||||
<td>1</td>
|
|
||||||
<td>1</td>
|
|
||||||
<td>0</td>
|
|
||||||
<td>0.608s</td>
|
|
||||||
<td class="failures">0%</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="success">
|
|
||||||
<a href="../classes/hhn.temp.project.DatabaseGoodCasesTest.html">DatabaseGoodCasesTest</a>
|
<a href="../classes/hhn.temp.project.DatabaseGoodCasesTest.html">DatabaseGoodCasesTest</a>
|
||||||
</td>
|
</td>
|
||||||
<td>3</td>
|
<td>3</td>
|
||||||
|
<td>3</td>
|
||||||
<td>0</td>
|
<td>0</td>
|
||||||
<td>0</td>
|
<td>1.711s</td>
|
||||||
<td>0.205s</td>
|
<td class="failures">0%</td>
|
||||||
<td class="success">100%</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="failures">
|
<td class="failures">
|
||||||
@@ -133,7 +141,7 @@
|
|||||||
<td>13</td>
|
<td>13</td>
|
||||||
<td>2</td>
|
<td>2</td>
|
||||||
<td>0</td>
|
<td>0</td>
|
||||||
<td>0.029s</td>
|
<td>0.051s</td>
|
||||||
<td class="failures">84%</td>
|
<td class="failures">84%</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
@@ -146,7 +154,7 @@
|
|||||||
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
|
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
|
||||||
</label>
|
</label>
|
||||||
</div>Generated by
|
</div>Generated by
|
||||||
<a href="https://www.gradle.org">Gradle 8.14</a> at 03.12.2025, 21:21:26</p>
|
<a href="https://www.gradle.org">Gradle 8.14</a> at 04.01.2026, 16:32:20</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -1,14 +1,15 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<testsuite name="hhn.temp.project.BadCasesTest" tests="8" skipped="0" failures="0" errors="0" timestamp="2025-12-03T20:21:25.805Z" hostname="KEVIN-THINKPAD" time="0.059">
|
<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">
|
||||||
<properties/>
|
<properties/>
|
||||||
<testcase name="Assert List isn't empty after adding a task" classname="hhn.temp.project.BadCasesTest" time="0.034"/>
|
<testcase name="Assert List isn't empty after adding a task" classname="hhn.temp.project.BadCasesTest" time="0.004"/>
|
||||||
<testcase name="Assert non-existent commands are recognized as such" classname="hhn.temp.project.BadCasesTest" time="0.001"/>
|
<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.003"/>
|
<testcase name="Assert that Remove Task is programmed defensively" classname="hhn.temp.project.BadCasesTest" time="0.002"/>
|
||||||
<testcase name="Assert that removing a non-existent worker throws an Exception" classname="hhn.temp.project.BadCasesTest" time="0.002"/>
|
<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.003"/>
|
<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.002"/>
|
<testcase name="Assert only existing tasks can be edited" classname="hhn.temp.project.BadCasesTest" time="0.004"/>
|
||||||
<testcase name="Assert that un-/finishing a Task only works with valid parameters" classname="hhn.temp.project.BadCasesTest" time="0.002"/>
|
<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.001"/>
|
<testcase name="Assert that added tasks can't be Null" classname="hhn.temp.project.BadCasesTest" time="0.003"/>
|
||||||
<system-out><![CDATA[]]></system-out>
|
<system-out><![CDATA[Unknown command. Type 'help' for available commands.
|
||||||
|
]]></system-out>
|
||||||
<system-err><![CDATA[]]></system-err>
|
<system-err><![CDATA[]]></system-err>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<testsuite name="hhn.temp.project.GoodCasesTest" tests="13" skipped="0" failures="2" errors="0" timestamp="2025-12-03T20:21:26.480Z" hostname="KEVIN-THINKPAD" time="0.043">
|
<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">
|
||||||
<properties/>
|
<properties/>
|
||||||
<testcase name="Check Getters" classname="hhn.temp.project.GoodCasesTest" time="0.003"/>
|
<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.005">
|
<testcase name="Check that editing is possible through UI" classname="hhn.temp.project.GoodCasesTest" time="0.008">
|
||||||
<failure message="org.opentest4j.AssertionFailedError: expected: <Walk> but was: <Run>" type="org.opentest4j.AssertionFailedError">org.opentest4j.AssertionFailedError: expected: <Walk> but was: <Run>
|
<failure message="org.opentest4j.AssertionFailedError: expected: <Walk> but was: <Run>" type="org.opentest4j.AssertionFailedError">org.opentest4j.AssertionFailedError: expected: <Walk> but was: <Run>
|
||||||
at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
|
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.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
|
||||||
@@ -16,14 +16,14 @@
|
|||||||
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>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase name="Check that every required surface command actually works" classname="hhn.temp.project.GoodCasesTest" time="0.003"/>
|
<testcase name="Check that every required surface command actually works" classname="hhn.temp.project.GoodCasesTest" time="0.004"/>
|
||||||
<testcase name="Assert that added Tasks are added to the List" classname="hhn.temp.project.GoodCasesTest" time="0.001"/>
|
<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.0"/>
|
<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.004"/>
|
<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 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 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.001"/>
|
<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.004">
|
<testcase name="Assert that removing a worker removes the worker from the worker list" classname="hhn.temp.project.GoodCasesTest" time="0.005">
|
||||||
<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.
|
<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.AssertionFailureBuilder.build(AssertionFailureBuilder.java:152)
|
||||||
at app//org.junit.jupiter.api.AssertThrows.assertThrows(AssertThrows.java:73)
|
at app//org.junit.jupiter.api.AssertThrows.assertThrows(AssertThrows.java:73)
|
||||||
@@ -35,9 +35,41 @@
|
|||||||
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>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<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 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.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 deleted Tasks no longer show up in the List" 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[]]></system-out>
|
<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
|
||||||
|
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
|
||||||
|
Worker removed
|
||||||
|
Unknown command. Type 'help' for available commands.
|
||||||
|
Unknown command. Type 'help' for available commands.
|
||||||
|
]]></system-out>
|
||||||
<system-err><![CDATA[]]></system-err>
|
<system-err><![CDATA[]]></system-err>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -6,20 +6,23 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class AssignmentManager {
|
public class AssignmentManager {
|
||||||
Map<Integer, Worker> workerMap;
|
private Map<Integer, Worker> workerMap;
|
||||||
Map<Integer, Task> taskMap;
|
private Map<Integer, Task> taskMap;
|
||||||
int workerIdCounter;
|
private int workerIdCounter;
|
||||||
int taskIdCounter;
|
private int taskIdCounter;
|
||||||
UserCommands userInterface;
|
private UserCommands userInterface;
|
||||||
|
|
||||||
public AssignmentManager() {
|
public AssignmentManager() {
|
||||||
workerMap = new HashMap<>();
|
workerMap = new HashMap<>();
|
||||||
taskMap = new HashMap<>();
|
taskMap = new HashMap<>();
|
||||||
int workerIdCounter = 1000;
|
int workerIdCounter = 1000;
|
||||||
int taskIdCounter = 0;
|
int taskIdCounter = 0;
|
||||||
userInterface = new UserCommands();
|
userInterface = new UserCommands(this);
|
||||||
userInterface.start();
|
|
||||||
}
|
}
|
||||||
|
public Map<Integer, Task> getTaskMap() {
|
||||||
|
return taskMap;
|
||||||
|
}
|
||||||
|
public Map<Integer, Worker> getWorkerMap() {return workerMap;}
|
||||||
|
|
||||||
public int createWorker(String name) {
|
public int createWorker(String name) {
|
||||||
Worker worker = new Worker(name, ++workerIdCounter);
|
Worker worker = new Worker(name, ++workerIdCounter);
|
||||||
@@ -46,9 +49,6 @@ public class AssignmentManager {
|
|||||||
}
|
}
|
||||||
return taskMap.get(taskId);
|
return taskMap.get(taskId);
|
||||||
}
|
}
|
||||||
public Map<Integer, Task> getTaskMap() {
|
|
||||||
return taskMap;
|
|
||||||
}
|
|
||||||
public void editTask(int workerId, int taskId, String name, String description) {
|
public void editTask(int workerId, int taskId, String name, String description) {
|
||||||
if (!workerMap.containsKey(workerId) || !taskMap.containsKey(taskId)) {
|
if (!workerMap.containsKey(workerId) || !taskMap.containsKey(taskId)) {
|
||||||
throw new IllegalArgumentException("Task Id or Worker Id does not exist");
|
throw new IllegalArgumentException("Task Id or Worker Id does not exist");
|
||||||
@@ -81,4 +81,12 @@ public class AssignmentManager {
|
|||||||
return userInterface;
|
return userInterface;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void startCLI() {
|
||||||
|
userInterface.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void stopCLI() {
|
||||||
|
userInterface.stop();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
package hhn.temp.project;
|
package hhn.temp.project;
|
||||||
|
|
||||||
public class Task {
|
public class Task {
|
||||||
String name;
|
private String name;
|
||||||
String description;
|
private String description;
|
||||||
int taskId;
|
private int taskId;
|
||||||
int workerId;
|
private int workerId;
|
||||||
TaskState state;
|
private TaskState state;
|
||||||
public Task(int taskId, int workerId, String name, String description) {
|
public Task(int taskId, int workerId, String name, String description) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.description = description;
|
this.description = description;
|
||||||
|
|||||||
@@ -1,24 +1,249 @@
|
|||||||
package hhn.temp.project;
|
package hhn.temp.project;
|
||||||
|
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
|
||||||
|
public class UserCommands implements Runnable {
|
||||||
|
private Scanner scanner;
|
||||||
|
private AssignmentManager manager;
|
||||||
|
private boolean inTaskSelection = false;
|
||||||
|
private boolean inWorkerSelection = false;
|
||||||
|
private Integer selectedTaskId = null;
|
||||||
|
private Integer selectedWorkerId = null;
|
||||||
|
private AtomicBoolean running = new AtomicBoolean(false);
|
||||||
|
private Thread cliThread;
|
||||||
|
|
||||||
|
private enum InputState {
|
||||||
|
MAIN_MENU,
|
||||||
|
TASK_SELECTED,
|
||||||
|
WORKER_SELECTED,
|
||||||
|
AWAITING_EDIT_INPUT,
|
||||||
|
AWAITING_CREATE_TASK_WORKER,
|
||||||
|
AWAITING_CREATE_TASK_NAME,
|
||||||
|
AWAITING_CREATE_TASK_DESC,
|
||||||
|
AWAITING_CREATE_WORKER_NAME
|
||||||
|
}
|
||||||
|
|
||||||
|
private InputState currentState = InputState.MAIN_MENU;
|
||||||
|
private Integer tempWorkerId = null;
|
||||||
|
private String tempTaskName = null;
|
||||||
|
|
||||||
|
public UserCommands(AssignmentManager manager) {
|
||||||
|
this.manager = manager;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
scanner = new Scanner(System.in);
|
||||||
|
running.set(true);
|
||||||
|
|
||||||
|
while (running.get()) {
|
||||||
|
printPrompt();
|
||||||
|
String input = scanner.nextLine().trim();
|
||||||
|
|
||||||
|
if ("exit".equalsIgnoreCase(input)) {
|
||||||
|
stop();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
handleInput(input);
|
||||||
|
}
|
||||||
|
scanner.close();
|
||||||
|
}
|
||||||
|
|
||||||
public class UserCommands {
|
|
||||||
Scanner scanner;
|
|
||||||
public void start() {
|
public void start() {
|
||||||
boolean close = false;
|
if (cliThread == null || !cliThread.isAlive()) {
|
||||||
// scanner = new Scanner(System.in);
|
cliThread = new Thread(this, "CLI-Thread");
|
||||||
// while (!close) {
|
cliThread.start();
|
||||||
// System.out.println("Type '?' or 'help' for a list of commands");
|
}
|
||||||
// System.out.println("Please enter a command:");
|
|
||||||
// String input = scanner.nextLine();
|
|
||||||
// handleInput(input);
|
|
||||||
// }
|
|
||||||
// scanner.close();
|
|
||||||
}
|
}
|
||||||
public void handleInput(String input) {
|
|
||||||
|
|
||||||
|
public void stop() {
|
||||||
|
running.set(false);
|
||||||
|
if (cliThread != null) {
|
||||||
|
cliThread.interrupt();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void printPrompt() {
|
||||||
|
if (!running.get()) return;
|
||||||
|
|
||||||
|
if (inTaskSelection && selectedTaskId != null) {
|
||||||
|
System.out.println("Task " + selectedTaskId + " selected. Commands: finish, unfinish, remove, edit, back");
|
||||||
|
} else if (inWorkerSelection && selectedWorkerId != null) {
|
||||||
|
System.out.println("Worker " + selectedWorkerId + " selected. Commands: remove, back");
|
||||||
|
} else {
|
||||||
|
System.out.println("Type '?' or 'help' for a list of commands");
|
||||||
|
}
|
||||||
|
System.out.print("> ");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void handleInput(String input) {
|
||||||
|
if (input == null || input.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ("?".equals(input) || "help".equalsIgnoreCase(input)) {
|
||||||
|
showHelp();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (inTaskSelection) {
|
||||||
|
handleTaskSelectionInput(input);
|
||||||
|
} else if (inWorkerSelection) {
|
||||||
|
handleWorkerSelectionInput(input);
|
||||||
|
} else {
|
||||||
|
handleMainMenuInput(input);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println("Error: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showHelp() {
|
||||||
|
if (inTaskSelection && selectedTaskId != null) {
|
||||||
|
System.out.println("Task commands:");
|
||||||
|
System.out.println(" finish - Mark task as finished");
|
||||||
|
System.out.println(" unfinish - Mark task as unfinished");
|
||||||
|
System.out.println(" remove - Remove this task");
|
||||||
|
System.out.println(" edit - Edit task (prompts for name;description)");
|
||||||
|
System.out.println(" back - Return to main menu");
|
||||||
|
} else if (inWorkerSelection && selectedWorkerId != null) {
|
||||||
|
System.out.println("Worker commands:");
|
||||||
|
System.out.println(" remove - Remove this worker");
|
||||||
|
System.out.println(" back - Return to main menu");
|
||||||
|
} else {
|
||||||
|
System.out.println("Available commands:");
|
||||||
|
System.out.println(" createWorker - Create a new worker");
|
||||||
|
System.out.println(" createTask - Create a new task");
|
||||||
|
System.out.println(" selectTask - Select a task to work with");
|
||||||
|
System.out.println(" listWorkers - List all workers");
|
||||||
|
System.out.println(" help/? - Show this help");
|
||||||
|
System.out.println(" exit - Exit the program");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleMainMenuInput(String input) {
|
||||||
|
switch (input.toLowerCase()) {
|
||||||
|
case "createworker":
|
||||||
|
System.out.print("Enter worker name: ");
|
||||||
|
String workerName = scanner.nextLine().trim();
|
||||||
|
int workerId = manager.createWorker(workerName);
|
||||||
|
System.out.println("Created worker with ID: " + workerId);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "createtask":
|
||||||
|
System.out.print("Enter worker ID: ");
|
||||||
|
int workerIdForTask = Integer.parseInt(scanner.nextLine().trim());
|
||||||
|
System.out.print("Enter task name: ");
|
||||||
|
String taskName = scanner.nextLine().trim();
|
||||||
|
System.out.print("Enter task description: ");
|
||||||
|
String taskDesc = scanner.nextLine().trim();
|
||||||
|
int taskId = manager.addTask(workerIdForTask, taskName, taskDesc);
|
||||||
|
System.out.println("Created task with ID: " + taskId);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "selecttask":
|
||||||
|
inTaskSelection = true;
|
||||||
|
System.out.print("Enter task ID: ");
|
||||||
|
String taskIdInput = scanner.nextLine().trim();
|
||||||
|
selectedTaskId = Integer.parseInt(taskIdInput);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "listworkers":
|
||||||
|
inWorkerSelection = true;
|
||||||
|
System.out.print("Enter worker ID: ");
|
||||||
|
String workerIdInput = scanner.nextLine().trim();
|
||||||
|
selectedWorkerId = Integer.parseInt(workerIdInput);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
System.out.println("Unknown command. Type 'help' for available commands.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleTaskSelectionInput(String input) {
|
||||||
|
switch (input.toLowerCase()) {
|
||||||
|
case "finish":
|
||||||
|
manager.finishTask(manager.getTask(selectedTaskId).getWorkerId(), selectedTaskId);
|
||||||
|
System.out.println("Task marked as finished");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "unfinish":
|
||||||
|
manager.unfinishTask(manager.getTask(selectedTaskId).getWorkerId(), selectedTaskId);
|
||||||
|
System.out.println("Task marked as unfinished");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "remove":
|
||||||
|
manager.removeTask(selectedTaskId);
|
||||||
|
System.out.println("Task removed");
|
||||||
|
resetSelection();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "edit":
|
||||||
|
System.out.print("Enter new name;description: ");
|
||||||
|
String editInput = scanner.nextLine().trim();
|
||||||
|
String[] parts = editInput.split(";", 2);
|
||||||
|
if (parts.length == 2) {
|
||||||
|
manager.editTask(manager.getTask(selectedTaskId).getWorkerId(),selectedTaskId,parts[0],parts[1]);
|
||||||
|
System.out.println("Task edited");
|
||||||
|
} else {
|
||||||
|
System.out.println("Invalid format. Use: name;description");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "back":
|
||||||
|
resetSelection();
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
try {
|
||||||
|
selectedTaskId = Integer.parseInt(input);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
System.out.println("Unknown command. Type 'help' for available commands.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleWorkerSelectionInput(String input) {
|
||||||
|
switch (input.toLowerCase()) {
|
||||||
|
case "remove":
|
||||||
|
manager.removeWorker(selectedWorkerId);
|
||||||
|
System.out.println("Worker removed");
|
||||||
|
resetSelection();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "back":
|
||||||
|
resetSelection();
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
try {
|
||||||
|
selectedWorkerId = Integer.parseInt(input);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
System.out.println("Unknown command. Type 'help' for available commands.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void resetSelection() {
|
||||||
|
inTaskSelection = false;
|
||||||
|
inWorkerSelection = false;
|
||||||
|
selectedTaskId = null;
|
||||||
|
selectedWorkerId = null;
|
||||||
|
}
|
||||||
|
|
||||||
public Scanner getScanner() {
|
public Scanner getScanner() {
|
||||||
return scanner;
|
return scanner;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// For testing - allows setting scanner
|
||||||
|
public void setScanner(Scanner scanner) {
|
||||||
|
this.scanner = scanner;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isRunning() {
|
||||||
|
return running.get();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package hhn.temp.project;
|
package hhn.temp.project;
|
||||||
|
|
||||||
public class Worker {
|
public class Worker {
|
||||||
String name;
|
private String name;
|
||||||
int workerId;
|
private int workerId;
|
||||||
public Worker(String name, int workerId) {
|
public Worker(String name, int workerId) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.workerId = workerId;
|
this.workerId = workerId;
|
||||||
|
|||||||
@@ -69,9 +69,9 @@ public class GoodCasesTest {
|
|||||||
public void assertGettersWorkCorrectly() {
|
public void assertGettersWorkCorrectly() {
|
||||||
int workerId = manager.createWorker("Alfred");
|
int workerId = manager.createWorker("Alfred");
|
||||||
int taskId = manager.addTask(workerId, "Run", "Jog 10 Miles");
|
int taskId = manager.addTask(workerId, "Run", "Jog 10 Miles");
|
||||||
assertEquals("Alfred", manager.workerMap.get(workerId).getName());
|
assertEquals("Alfred", manager.getWorkerMap().get(workerId).getName());
|
||||||
//This one may be somewhat nonsensical, but it ensures the getId works so one may iterate over the workerMap
|
//This one may be somewhat nonsensical, but it ensures the getId works so one may iterate over the workerMap
|
||||||
assertEquals(manager.workerMap.get(workerId).getId(), workerId);
|
assertEquals(manager.getWorkerMap().get(workerId).getId(), workerId);
|
||||||
assertEquals(manager.getTask(taskId).getTaskId(), taskId);
|
assertEquals(manager.getTask(taskId).getTaskId(), taskId);
|
||||||
assertEquals(manager.getTask(taskId).getWorkerId(), workerId);
|
assertEquals(manager.getTask(taskId).getWorkerId(), workerId);
|
||||||
|
|
||||||
@@ -150,6 +150,6 @@ public class GoodCasesTest {
|
|||||||
public void assertRemoveWorkerActuallyRemoves() {
|
public void assertRemoveWorkerActuallyRemoves() {
|
||||||
int workerId = manager.createWorker("Alfred");
|
int workerId = manager.createWorker("Alfred");
|
||||||
manager.removeWorker(workerId);
|
manager.removeWorker(workerId);
|
||||||
assertThrows(IllegalArgumentException.class, () -> manager.workerMap.containsKey(workerId));
|
assertThrows(IllegalArgumentException.class, () -> manager.getWorkerMap().containsKey(workerId));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user