Google Test proved fairly easy to setup and start using through compiling some of the examples that are either provided on its GitHub or found by searching the web. The real challenge would be creating unit tests for the C++ variant of the FPE. After some thought it was decided that if these where going to be provided then some restructuring of the program was needed.
The two initial areas that unit tests would be written for are the command line option processing and task action functionality. Both of these where initially situated in the main file but where factored out into separate files removing any global shared data in the same pass.
In the case of the command line processing it involved creating function procCmdLine which takes argv as input, processes the command line arguments using the boost parameter library and outputs a structure that represents the command line. Creating a set of unit tests for this function just involves setting up argv with suitable commands, testing for supported error conditions and the state of the output structure (ParamArgData). At present there are a total of 10 unit tests for this area.
As the task action functions are passed into the task class constructor and called from it; a different approach was adopted. Here an extra parameter was added to the constructor that contains a void pointer for function data passed onto the action function when it is called. The unit tests for three currently available functions work by setting up the file name parameters/ function data and observing any error conditions like asserts/exceptions and also any observable behavior; i.e. if you have set up a file to be copied that it actually is.
The area is still a work in progress (there are currently 22 unit tests) and more are expected to be added and will be outlined in a future post along with what is decided to be done with the core Task class of the FPE.