With this small project now about to be finished, I want to describe the way in which I tested the program, before moving on to newer projects (something more in the game-creation way instead of analyzing game outputs…).
One obvious way of testing if the tool is even remotely doing what it is supposed to do is by loading a save game in the game and testing out some combinations that the tool calculated. Another way is to do the test more automated: get a list of possible fusions, and test all of them against the fusion algorithms in the tool. There are some choices to get such data. One is the fusion list by Tony Ye. Unfortunately, that list contains a lot of errors, for example, it lists a lot of fusions which are impossible, very visibly where Persona which require triangle spread fusions are created with normal spread according to the list. A better choice appears to be eserikto’s list of fusions.
What I did was create a small class which can parse this list and which provides all combinations of Persona found in this list to a unit test. I then feed these combinations into my own fusion algorithms and check if the results differ. The effect was quite good, as I found several spots where my fusion logic didn’t match that of the game. In other cases, I found out that eserikto’s list also contains some errors, for example, several combinations which, according to the list, should result in Alilat, actually result in Skadi. Also, the same-arcana fusions required some fiddling until they resulted in the same Persona the game expects. The recent finding how save games can be modified also proved very useful to create target Persona with arbitrary levels for checking the results.
Overall, I’m now quite confident that the tool will correctly predict the fusions. The insight I gained from this part of the project is that I should really go more into the direction of test-driven development, as writing that unit test showed a lot of small errors I hadn’t cought earlier.