tmp
/
pip-install-ghxuqwgs
/numpy_78e94bf2b6094bf9a1f3d92042f9bf46
/tools
/swig
/test
/testFortran.py
#! /usr/bin/env python | |
from __future__ import division, absolute_import, print_function | |
# System imports | |
from distutils.util import get_platform | |
import os | |
import sys | |
import unittest | |
# Import NumPy | |
import numpy as np | |
major, minor = [ int(d) for d in np.__version__.split(".")[:2] ] | |
if major == 0: BadListError = TypeError | |
else: BadListError = ValueError | |
import Fortran | |
###################################################################### | |
class FortranTestCase(unittest.TestCase): | |
def __init__(self, methodName="runTests"): | |
unittest.TestCase.__init__(self, methodName) | |
self.typeStr = "double" | |
self.typeCode = "d" | |
# This test used to work before the update to avoid deprecated code. Now it | |
# doesn't work. As best I can tell, it never should have worked, so I am | |
# commenting it out. --WFS | |
# def testSecondElementContiguous(self): | |
# "Test Fortran matrix initialized from reshaped default array" | |
# print >>sys.stderr, self.typeStr, "... ", | |
# second = Fortran.__dict__[self.typeStr + "SecondElement"] | |
# matrix = np.arange(9).reshape(3, 3).astype(self.typeCode) | |
# self.assertEquals(second(matrix), 3) | |
# Test (type* IN_FARRAY2, int DIM1, int DIM2) typemap | |
def testSecondElementFortran(self): | |
"Test Fortran matrix initialized from reshaped NumPy fortranarray" | |
print(self.typeStr, "... ", end=' ', file=sys.stderr) | |
second = Fortran.__dict__[self.typeStr + "SecondElement"] | |
matrix = np.asfortranarray(np.arange(9).reshape(3, 3), | |
self.typeCode) | |
self.assertEquals(second(matrix), 3) | |
def testSecondElementObject(self): | |
"Test Fortran matrix initialized from nested list fortranarray" | |
print(self.typeStr, "... ", end=' ', file=sys.stderr) | |
second = Fortran.__dict__[self.typeStr + "SecondElement"] | |
matrix = np.asfortranarray([[0, 1, 2], [3, 4, 5], [6, 7, 8]], self.typeCode) | |
self.assertEquals(second(matrix), 3) | |
###################################################################### | |
class scharTestCase(FortranTestCase): | |
def __init__(self, methodName="runTest"): | |
FortranTestCase.__init__(self, methodName) | |
self.typeStr = "schar" | |
self.typeCode = "b" | |
###################################################################### | |
class ucharTestCase(FortranTestCase): | |
def __init__(self, methodName="runTest"): | |
FortranTestCase.__init__(self, methodName) | |
self.typeStr = "uchar" | |
self.typeCode = "B" | |
###################################################################### | |
class shortTestCase(FortranTestCase): | |
def __init__(self, methodName="runTest"): | |
FortranTestCase.__init__(self, methodName) | |
self.typeStr = "short" | |
self.typeCode = "h" | |
###################################################################### | |
class ushortTestCase(FortranTestCase): | |
def __init__(self, methodName="runTest"): | |
FortranTestCase.__init__(self, methodName) | |
self.typeStr = "ushort" | |
self.typeCode = "H" | |
###################################################################### | |
class intTestCase(FortranTestCase): | |
def __init__(self, methodName="runTest"): | |
FortranTestCase.__init__(self, methodName) | |
self.typeStr = "int" | |
self.typeCode = "i" | |
###################################################################### | |
class uintTestCase(FortranTestCase): | |
def __init__(self, methodName="runTest"): | |
FortranTestCase.__init__(self, methodName) | |
self.typeStr = "uint" | |
self.typeCode = "I" | |
###################################################################### | |
class longTestCase(FortranTestCase): | |
def __init__(self, methodName="runTest"): | |
FortranTestCase.__init__(self, methodName) | |
self.typeStr = "long" | |
self.typeCode = "l" | |
###################################################################### | |
class ulongTestCase(FortranTestCase): | |
def __init__(self, methodName="runTest"): | |
FortranTestCase.__init__(self, methodName) | |
self.typeStr = "ulong" | |
self.typeCode = "L" | |
###################################################################### | |
class longLongTestCase(FortranTestCase): | |
def __init__(self, methodName="runTest"): | |
FortranTestCase.__init__(self, methodName) | |
self.typeStr = "longLong" | |
self.typeCode = "q" | |
###################################################################### | |
class ulongLongTestCase(FortranTestCase): | |
def __init__(self, methodName="runTest"): | |
FortranTestCase.__init__(self, methodName) | |
self.typeStr = "ulongLong" | |
self.typeCode = "Q" | |
###################################################################### | |
class floatTestCase(FortranTestCase): | |
def __init__(self, methodName="runTest"): | |
FortranTestCase.__init__(self, methodName) | |
self.typeStr = "float" | |
self.typeCode = "f" | |
###################################################################### | |
class doubleTestCase(FortranTestCase): | |
def __init__(self, methodName="runTest"): | |
FortranTestCase.__init__(self, methodName) | |
self.typeStr = "double" | |
self.typeCode = "d" | |
###################################################################### | |
if __name__ == "__main__": | |
# Build the test suite | |
suite = unittest.TestSuite() | |
suite.addTest(unittest.makeSuite( scharTestCase)) | |
suite.addTest(unittest.makeSuite( ucharTestCase)) | |
suite.addTest(unittest.makeSuite( shortTestCase)) | |
suite.addTest(unittest.makeSuite( ushortTestCase)) | |
suite.addTest(unittest.makeSuite( intTestCase)) | |
suite.addTest(unittest.makeSuite( uintTestCase)) | |
suite.addTest(unittest.makeSuite( longTestCase)) | |
suite.addTest(unittest.makeSuite( ulongTestCase)) | |
suite.addTest(unittest.makeSuite( longLongTestCase)) | |
suite.addTest(unittest.makeSuite(ulongLongTestCase)) | |
suite.addTest(unittest.makeSuite( floatTestCase)) | |
suite.addTest(unittest.makeSuite( doubleTestCase)) | |
# Execute the test suite | |
print("Testing 2D Functions of Module Matrix") | |
print("NumPy version", np.__version__) | |
print() | |
result = unittest.TextTestRunner(verbosity=2).run(suite) | |
sys.exit(len(result.errors) + len(result.failures)) | |