1# Copyright David Abrahams 2004. Distributed under the Boost
2# Software License, Version 1.0. (See accompanying
3# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
4
5false = 0;
6true = 1;
7
8import doctest, numeric_tests
9def _count_failures(test_modules = (numeric_tests,)):
10    failures = 0
11    for m in test_modules:
12        failures += doctest.testmod(m)[0]
13    return failures
14
15def _run(args = None):
16    import sys, numarray_tests, numeric_tests
17
18    if args is not None:
19        sys.argv = args
20
21    # See which of the numeric modules are installed
22    has_numeric = 0
23    try: import Numeric
24    except ImportError: pass
25    else:
26        has_numeric = 1
27        m = Numeric
28
29    has_numarray = 0
30    try: import numarray
31    except ImportError: pass
32    else:
33        has_numarray = 1
34        m = numarray
35
36    # Bail if neither one is installed
37    if not (has_numeric or has_numarray):
38        return 0
39
40    # test the info routine outside the doctest. See numpy.cpp for an
41    # explanation
42    import numpy_ext
43    if (has_numarray):
44        numpy_ext.info(m.array((1,2,3)))
45
46    failures = 0
47
48    #
49    # Run tests 4 different ways if both modules are installed, just
50    # to show that set_module_and_type() is working properly
51    #
52
53    # run all the tests with default module search
54    print 'testing default extension module:', \
55          numpy_ext.get_module_name() or '[numeric support not installed]'
56
57    failures += _count_failures()
58
59    # test against Numeric if installed
60    if has_numeric:
61        print 'testing Numeric module explicitly'
62        numpy_ext.set_module_and_type('Numeric', 'ArrayType')
63
64        failures += _count_failures()
65
66    if has_numarray:
67        print 'testing numarray module explicitly'
68        numpy_ext.set_module_and_type('numarray', 'NDArray')
69        # Add the _numarray_tests to the list of things to test in
70        # this case.
71        failures += _count_failures((numarray_tests, numeric_tests))
72
73    # see that we can go back to the default
74    numpy_ext.set_module_and_type('', '')
75    print 'testing default module again:', \
76          numpy_ext.get_module_name() or '[numeric support not installed]'
77
78    failures += _count_failures()
79
80    return failures
81
82if __name__ == '__main__':
83    print "running..."
84    import sys
85    status = _run()
86    if (status == 0): print "Done."
87    sys.exit(status)
88