I'm a software/ML/other types of engineer. If you're curious about my background, take a look at classes I've taken during my Bachelors of Science and Masters of Science. Below is a contents page of my repositories, loosely grouped by area:
Write JUnit Test-cases to verify if:
-A file is written to the right location.
-That file contains the correct input.
-Exceptions are thrown and caught appropriately.
Write an input to verify that each exception is thrown when it is meant to be. (E.g too small board). Also make sure it doesn't throw anything when a correct board is inputted (make this a board with a lot of pieces on it).
Use Arrays.deepEquals() to do this. Also make sure to respectively update:
-the Test cases in GameEngine.java and LegalMoveChecker.java.
-The SuperKo method in LegalMoveChecker.java
Create an algorithm that ensures that the board state which the GameEngine constructor takes in, is not illegal. A board state is illegal if there are either black and white groups that have no liberties on the board.
It might be of interest to know why a move is illegal from either UI. To enable this, write an exception that is thrown by checkMove(), passed on by the GameEngine and caught by the UI. It should then display the msg variable of the exception as it sees fit.
Write JUnit testcases to:
-Test both methods of readBoard.java to see whether the correct paths are used.
-Verify whether the board data read in is what is returned.
-Verify that if a BoardFormatException is thrown, a default board is returned.
Write JUnit testcases to:
-Test both methods of writeBoard.java. Verify whether a board is written to the given directories or file names.
-Verify the Board is written correctly and whether it adheres to the appropriate format.
-Also check whether inputting a board with bad data (e.g. not 0, 1, 2) generates a BoardFormatException.
This test-case should evaluates its performance in the worst case scenario.
A decent worst-case should be:
-A game on a large board with at least 50 previous moves.
Recall that this class will need to check EVERY move the AI tries, so even the slightest performance analysis and improvement is helpful.
Write JUnit tests to:
-Verify whether the method correctly formats lines from an ArrayList to a String.
-Whether it correctly handles a non-existent file.
This hashing algorithm should have a fairly low collision rate. It is valuable though, as it improve performance on the LegalMoveChecker and especially all game tree AIs.
Note from author: I will probably heavily refactor the if-statement abomination.
Write test cases to check if:
-The given input is interpreted correctly.
-The appropriate exceptions are thrown when the input is incorrect.
Write test-cases to:
-Verify that moves are made to the right coordinates on the board.
-The method returns correctly as to whether the move succeeded.
Write JUnit testcases to:
Verify the functionality of the clone() method. This is whether or not it successfully creates a complete a separate, identical copy of the original.
Write test cases to check if:
-The given input is interpreted correctly.
-Exceptions are thrown when the input is incorrect or when there is nothing to log.
Write test cases to check if:
-The given input is interpreted correctly.
-Exceptions are thrown when the input is incorrect or there is no Board to save.
Download the package branch, then run "ant resolve" to resolve dependencies.
Then, in Eclipse, use the build file to create a new project:
(File>New>Other...>Java Project From Existing Ant Buildfile)
Choose the ant buildfile from our project, then select the "javac" task found in target "compile" and click finish.
The project should now be in Eclipse without any bugs.
Write Test-cases to:
-Verify if the method correctly reverts to a previous move and returns true.
-Returns false (and does not crash horribly) if there is either no board or no prior moves to undo.