mamgal - a program for creating static image galleries Copyright 2007, 2008 Marcin Owsiany See the README file for license information Some information about tests ============================ Quick HOWTO ----------- Simply run the following in the top source directory: perl Makefile.PL make test Dependencies ------------ Apart from the test modules (Test::More, Test::Exception and so on), the Image::ExifTool library is required. Even though the program itself supports running with either Image::ExifTool as well as Image::Info, it would be to complex to support both backend libraties for unit tests. Therefore the latter library is only supported on a "best-effort" basis. Purpose ------- The tests have a dual purpose. I use them as part of test-driven development, so they basically define the code architecture. They also serve as a regression test suite. Kinds of tests -------------- We have: - unit tests: testing classes individually, in separation from each other. Any necessary instances of other classes should be mocked. - integration tests: testing larger test cases involving interactions of objects of different classes Organization ------------ Although test ordering itself should not matter, it does make sense to run the unit tests before integration tests. The reason is that if some change breaks both kinds of tests, seeing the unit tests failure at the beginning will make it easier to find the cause (integration tests are usually more complicated). Additionally, having the biggest integration test execute as last, makes it easy to visually inspect the program behaviour in a relatively interesting use case. Therefore we have a naming convention which makes the unit tests run before all other tests. Also, integration tests which use less classes should be put before those which use more classes, if possible. Ordering is possible because the perl testing framework runs them in filename alphabetical order. Notes ----- Things to keep in mind when changing/adding tests: - they should succeed in any timezone and any locale: you can check that by running for example: LANG=C TZ=GMT make test LANG=pl_PL.UTF-8 TZ=America/Los_Angeles make test before that make sure your system supports the locale you are testing with (try "LANG=pl_PL.UTF-8 locale")