Resolves #59: OKAAAAAAY THIS IS A BIG ONE: SO READ VERY CAREFULLY
--Don't just skim this and approve it, really interrogate the code here, I've built the jar several times and have pretty comprehensively tested it, and there's another set of integration tests that tests the system from end to end (as I'll discus) which all pass.
Changes are in the order that they appear in files
1) CLI REFACTORING
The Cli's job now is only for parsing arguments. The main() method in Ainur.java calls cli, retrieves all the options and then passes them to reading, writing and algorithm call, which are now placed in the Ainur.java class.
2) Pruners and lower bound heuristics are now in their own sub packages within heuristics package called heuristics.pruner and heuristics.lowerbound.
3) Issue of output file being placed differently with process location now definitely fixed, slightly changed the way input/output names are interpreted. For comprehensive thoughts on this see commit message 87ec852.
4) Milestone1Cli and Milestone2Cli are now merged into main Cli. Main Cli is no longer abstract.
5) Node now has toString() overload for debugging purposes (my own really)
6) DotScheduleWriter.java is fully commented
7) CliIT.java ;) is a new class that tests the system from end to end. It works by calling Ainur.java (it needs to stay in the default package in order to do this, don't worry it's still located in the test directory though) with arguments you'd typically see on the command line. It's by no means complete (no testing or error messages thrown) but it's really useful to see if the system is working as a whole. The tests work by reading in the output file that was just output by the tests and running it through the new isValid() method which will be discussed. This test output file is then deleted.
8) isValid() method in validator is now overloaded to alternatively take a string in output file format (i.e. what's in the .dot output file) to check if that's valid. Necessary for new integration test suite. There are of course new unit tests for this new functionality 👍.
9) AlgorithmIntegrationTests.java renamed to DFSAlgorithmIT.java. Tets now focus on input/output of the algorithm. They make use of the standard isValid() method that takes a graph. This suite tests ALL test data we have with the given answers, so it's pretty useful for ensuring algorithm stability! Takes a little while to run though.
Resolves #59: OKAAAAAAY THIS IS A BIG ONE: SO READ VERY CAREFULLY
--Don't just skim this and approve it, really interrogate the code here, I've built the jar several times and have pretty comprehensively tested it, and there's another set of integration tests that tests the system from end to end (as I'll discus) which all pass.
Changes are in the order that they appear in files
1) CLI REFACTORING The Cli's job now is only for parsing arguments. The main() method in Ainur.java calls cli, retrieves all the options and then passes them to reading, writing and algorithm call, which are now placed in the Ainur.java class.
2) Pruners and lower bound heuristics are now in their own sub packages within heuristics package called heuristics.pruner and heuristics.lowerbound.
3) Issue of output file being placed differently with process location now definitely fixed, slightly changed the way input/output names are interpreted. For comprehensive thoughts on this see commit message 87ec852.
4) Milestone1Cli and Milestone2Cli are now merged into main Cli. Main Cli is no longer abstract.
5) Node now has toString() overload for debugging purposes (my own really)
6) DotScheduleWriter.java is fully commented
7) CliIT.java ;) is a new class that tests the system from end to end. It works by calling Ainur.java (it needs to stay in the default package in order to do this, don't worry it's still located in the test directory though) with arguments you'd typically see on the command line. It's by no means complete (no testing or error messages thrown) but it's really useful to see if the system is working as a whole. The tests work by reading in the output file that was just output by the tests and running it through the new isValid() method which will be discussed. This test output file is then deleted.
8) isValid() method in validator is now overloaded to alternatively take a string in output file format (i.e. what's in the .dot output file) to check if that's valid. Necessary for new integration test suite. There are of course new unit tests for this new functionality 👍.
9) AlgorithmIntegrationTests.java renamed to DFSAlgorithmIT.java. Tets now focus on input/output of the algorithm. They make use of the standard isValid() method that takes a graph. This suite tests ALL test data we have with the given answers, so it's pretty useful for ensuring algorithm stability! Takes a little while to run though.
10) Implemented tests for dotScheduleWriter.java