TestFile has been rewritten to have isolated Initialize and Cleanup, where the database table is cleared after each one
Removed code which was specifying primary keys for inserted records, which works the first time, but Sqlite will ignore it and pick a different ID if you try to enter the same record again later. This is confusing behaviour and isn't realistic prod behaviour anyway. The TestUtil.EqualsIgnore method comes in handy here.
Removed the iterating insertions, which is wasteful and wasn't exposing meaningful cases.
Using minimal bespoke fixtures, which apart from being mildly fun, allow a tight focus on corner cases, reduce the chance of false positives from inbred test data, and make debugging really easy.
Extracted TestIWad from TestGameFile and rewrote it in the same way
Changed DbDataSourceAdapter to expose DataAccess publicly, and hide ConnectionString and DatabaseAdapter, which is a solid encapsulation win and simplifies cleanup code & TestInit.
Rewrote TestGameFile and TestLoadFiles in the same way
Fixed latent bug: parameters were swapped in DbDataSourceAdapter.UpdateGameFiles
Fixed latent bug: accessing member variable instead of method argument in FileLoadHandler.GetIWadFilesFromGameFile
Sorry to bother you @nstlaurent, would you mind taking a look? I'm going to have a bunch of free time coming my way shortly, and I need fast, deterministic tests to get started
Alrighty! That was a piece of work.
DbDataSourceAdapter.UpdateGameFiles
FileLoadHandler.GetIWadFilesFromGameFile