http://www.perlmonks.org?node_id=641508


in reply to Unit testing of C source code

I would approach the problem by creating an external C program that does little more than wrap your API. It would take the parameters from the command line or STDIN, call the API function and output the result(s) to STDOUT.

If you have this program, make sure that it can be built automatically.

Then, testing the API is very simple - you compile the program and then run tests using Test::Simple or Test::Base that call the external program and verify its output against the known output.

This approach is the easiest approach because you don't need to learn new tools besides the Perl test tools. If you have time/resources to learn new tools, wrapping the library using Inline::C or XS and then calling it directly from Perl would give you faster tests and more interactivity with the library - for example if that library has a concept of "handles", you might need this.