Here we present a table of test results generated automatically by a
nightly script. The script comprehensively tests compilation and
execution of MTL on all currently supported platforms. Although MTL
itself is reasonable in size, there are a combinatorial number of data
structures that can be constructed from MTL components, as well as a
combinatorial number of algorithm / data structure combinations.
We test as many of these combinations as we can. Presently, there
are well over 350,000 separate tests invoked as part
of the test suite.
About the Tests
The following components are included in the testing process.
- Element types
- complex<double>, double
- Rectangular storage
- array<linked_list>, array< compressed<> >, array<sparse_pair>, array<tree>, array< dense<> >, dense<>, compressed<>
- Banded shapes
- symmetric<lower>, symmetric<upper>, diagonal<>, triangle<lower>, triangle<unit_lower>, triangle<upper>, triangle<unit_upper>, banded<>
- Banded storage
- packed<>, array< dense<> >, banded<>, banded_view<>
The test script tests all combinations of the above rectangular
storage types, orientation, and element types as well as all
combinations of banded shapes, banded storage, orientations, and
For each matrix type, the script builds a test program that tests
all of the MTL algorithms that are applicable to that
type (approximately 50 test routines for each data type). The test
program also tests for proper operation of all class member functions
and member data.
Each test program is compiled with the flags for maximum language
pickiness enabled for each corresponding compiler - with one
exception. The Microsoft compiler does not have maximum pickiness
enabled because it emits numerous warnings from code in its own header
Currently, these test results may be somewhat less than nightly. We
are currently fighting with AFS
(such a blessing, such a curse) to get it to cooperate properly with
cron. In the meantime, the tests are being run by hand.