I'm wanting to do some more work on the LilyPond exporter, but I'm finding it hard to get my head around the volume of code involved in the methods of interest (namely, LilyPondExporter::write() and LilyPondExporter::writeBar()). I'm tempted to break some chunks of code out into separate methods and, if warranted, separate classes. To keep the source tree easily navigable, I'd like to introduce another directory layer under src->document->io, with a new directory for each file format (e.g., Csound, Hydrogen, LilyPond), and move the source code for the loaders/exporters into those directories.
Would everyone be amenable to the refactorings and additional directory layer?
Secondly, I'd like to get some automated unit tests in place for the work I want to do. I've looked over a number of C++ unit testing frameworks, and get the impression that Boost::Test and googletest are the current best-of-breed, but I haven't employed either of them (or any other, for that matter). I did look at Google's chromium source code to see how they structure their tests, figuring that would be a good example. I have a few questions I would like to pose before pursuing it further:
1. Can anyone recommend one test framework over another? Is there something that's already being used by other contributors?
2. Is there any opposition to having the unit test code in the source tree? I noticed there's a top-level "test" directory that appears to have a few hand-built tests; I'd like to propose mirroring the "src" directory structure and using a naming convention to make it clear which tests are built for which classes.