summaryrefslogtreecommitdiff
path: root/numpy/f2py/lib/parser/test_Fortran2003.py
diff options
context:
space:
mode:
authorPearu Peterson <pearu.peterson@gmail.com>2006-11-03 21:57:11 +0000
committerPearu Peterson <pearu.peterson@gmail.com>2006-11-03 21:57:11 +0000
commited184cde3c12fc43049951a60434df296e5725f3 (patch)
treefd2dfbac256e8ddad45b6ffd6f95f57dd053c6a6 /numpy/f2py/lib/parser/test_Fortran2003.py
parentdf18ca848af515b961d50167646404e0d8db5eb8 (diff)
downloadnumpy-ed184cde3c12fc43049951a60434df296e5725f3.tar.gz
F2PY G3: continued F2003 parser implementation and unittesting.
Diffstat (limited to 'numpy/f2py/lib/parser/test_Fortran2003.py')
-rw-r--r--numpy/f2py/lib/parser/test_Fortran2003.py1925
1 files changed, 1858 insertions, 67 deletions
diff --git a/numpy/f2py/lib/parser/test_Fortran2003.py b/numpy/f2py/lib/parser/test_Fortran2003.py
index e8bd0859c..43bee8d4e 100644
--- a/numpy/f2py/lib/parser/test_Fortran2003.py
+++ b/numpy/f2py/lib/parser/test_Fortran2003.py
@@ -3,7 +3,11 @@ from numpy.testing import *
from Fortran2003 import *
from api import get_reader
-class test_Program(NumpyTestCase):
+###############################################################################
+############################### SECTION 2 ####################################
+###############################################################################
+
+class test_Program(NumpyTestCase): # R201
def check_simple(self):
reader = get_reader('''\
@@ -14,22 +18,821 @@ class test_Program(NumpyTestCase):
''')
cls = Program
a = cls(reader)
- print a
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a), 'SUBROUTINE foo\nEND SUBROUTINE foo\nSUBROUTINE bar\nEND SUBROUTINE bar')
-class test_Declaration_Type_Spec(NumpyTestCase):
+class test_Specification_Part(NumpyTestCase): # R204
def check_simple(self):
- cls = Declaration_Type_Spec
+ from api import get_reader
+ reader = get_reader('''\
+ integer a''')
+ cls = Specification_Part
+ a = cls(reader)
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'INTEGER :: a')
+ assert_equal(repr(a), "Specification_Part(Type_Declaration_Stmt(Intrinsic_Type_Spec('INTEGER', None), None, Entity_Decl(Name('a'), None, None, None)))")
+
+###############################################################################
+############################### SECTION 3 ####################################
+###############################################################################
+
+class test_Name(NumpyTestCase): # R304
+
+ def check_name(self):
+ a = Name('a')
+ assert isinstance(a,Name),`a`
+ a = Name('a2')
+ assert isinstance(a,Name),`a`
+ a = Designator('a')
+ assert isinstance(a,Name),`a`
+ a = Constant('a')
+ assert isinstance(a,Name),`a`
+ a = Expr('a')
+ assert isinstance(a,Name),`a`
+
+###############################################################################
+############################### SECTION 4 ####################################
+###############################################################################
+
+class test_Type_Param_Value(NumpyTestCase): # 402
+
+ def check_type_param_value(self):
+ cls = Type_Param_Value
+ a = cls('*')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'*')
+ assert_equal(repr(a),"Type_Param_Value('*')")
+
+ a = cls(':')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),':')
+
+ a = cls('1+2')
+ assert isinstance(a,Level_2_Expr),`a`
+ assert_equal(str(a),'1 + 2')
+
+class test_Intrinsic_Type_Spec(NumpyTestCase): # R403
+
+ def check_intrinsic_type_spec(self):
+ cls = Intrinsic_Type_Spec
+ a = cls('INTEGER')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'INTEGER')
+ assert_equal(repr(a), "Intrinsic_Type_Spec('INTEGER', None)")
+
a = cls('Integer*2')
- assert isinstance(a, Intrinsic_Type_Spec),`a`
- assert_equal(str(a), 'INTEGER*2')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'INTEGER*2')
+
+ a = cls('real*2')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'REAL*2')
+
+ a = cls('logical*2')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'LOGICAL*2')
+
+ a = cls('complex*2')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'COMPLEX*2')
+
+ a = cls('character*2')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'CHARACTER*2')
+
+ a = cls('double complex')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'DOUBLE COMPLEX')
+
+ a = cls('double precision')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'DOUBLE PRECISION')
+
+class test_Kind_Selector(NumpyTestCase): # R404
+
+ def check_kind_selector(self):
+ cls = Kind_Selector
+ a = cls('(1)')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'(KIND = 1)')
+ assert_equal(repr(a),"Kind_Selector('(', Int_Literal_Constant('1', None), ')')")
+
+ a = cls('(kind=1+2)')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'(KIND = 1 + 2)')
+
+ a = cls('* 1')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'*1')
+
+class test_Signed_Int_Literal_Constant(NumpyTestCase): # R405
+
+ def check_int_literal_constant(self):
+ cls = Signed_Int_Literal_Constant
+ a = cls('1')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'1')
+ assert_equal(repr(a),"%s('1', None)" % (cls.__name__))
+
+ a = cls('+ 21_2')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'+ 21_2')
+ assert_equal(repr(a),"%s('+ 21', '2')" % (cls.__name__))
+
+ a = cls('-21_SHORT')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'-21_SHORT')
+
+ a = cls('21_short')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'21_short')
+
+ a = cls('+1976354279568241_8')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'+1976354279568241_8')
+
+class test_Int_Literal_Constant(NumpyTestCase): # R406
+
+ def check_int_literal_constant(self):
+ cls = Int_Literal_Constant
+ a = cls('1')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'1')
+ assert_equal(repr(a),"%s('1', None)" % (cls.__name__))
+
+ a = cls('21_2')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'21_2')
+ assert_equal(repr(a),"%s('21', '2')" % (cls.__name__))
+
+ a = cls('21_SHORT')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'21_SHORT')
+
+ a = cls('21_short')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'21_short')
+
+ a = cls('1976354279568241_8')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'1976354279568241_8')
+
+class test_Binary_Constant(NumpyTestCase): # R412
+
+ def check_boz_literal_constant(self):
+ cls = Boz_Literal_Constant
+ bcls = Binary_Constant
+ a = cls('B"01"')
+ assert isinstance(a,bcls),`a`
+ assert_equal(str(a),'B"01"')
+ assert_equal(repr(a),"%s('B\"01\"')" % (bcls.__name__))
+
+class test_Octal_Constant(NumpyTestCase): # R413
+
+ def check_boz_literal_constant(self):
+ cls = Boz_Literal_Constant
+ ocls = Octal_Constant
+ a = cls('O"017"')
+ assert isinstance(a,ocls),`a`
+ assert_equal(str(a),'O"017"')
+ assert_equal(repr(a),"%s('O\"017\"')" % (ocls.__name__))
+
+class test_Hex_Constant(NumpyTestCase): # R414
+
+ def check_boz_literal_constant(self):
+ cls = Boz_Literal_Constant
+ zcls = Hex_Constant
+ a = cls('Z"01A"')
+ assert isinstance(a,zcls),`a`
+ assert_equal(str(a),'Z"01A"')
+ assert_equal(repr(a),"%s('Z\"01A\"')" % (zcls.__name__))
+
+class test_Signed_Real_Literal_Constant(NumpyTestCase): # R416
+
+ def check_signed_real_literal_constant(self):
+ cls = Signed_Real_Literal_Constant
+ a = cls('12.78')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'12.78')
+ assert_equal(repr(a),"%s('12.78', None)" % (cls.__name__))
+
+ a = cls('+12.78_8')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'+12.78_8')
+ assert_equal(repr(a),"%s('+12.78', '8')" % (cls.__name__))
+
+ a = cls('- 12.')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'- 12.')
+
+ a = cls('1.6E3')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'1.6E3')
+
+ a = cls('+1.6E3_8')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'+1.6E3_8')
+
+ a = cls('1.6D3')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'1.6D3')
+
+ a = cls('-1.6E-3')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'-1.6E-3')
+ a = cls('1.6E+3')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'1.6E+3')
+
+ a = cls('3E4')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'3E4')
+
+ a = cls('.123')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'.123')
+
+ a = cls('+1.6E-3')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'+1.6E-3')
+
+ a = cls('10.9E7_QUAD')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'10.9E7_QUAD')
+
+ a = cls('-10.9e-17_quad')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'-10.9E-17_quad')
+
+class test_Real_Literal_Constant(NumpyTestCase): # R417
+
+ def check_real_literal_constant(self):
+ cls = Real_Literal_Constant
+ a = cls('12.78')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'12.78')
+ assert_equal(repr(a),"%s('12.78', None)" % (cls.__name__))
+
+ a = cls('12.78_8')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'12.78_8')
+ assert_equal(repr(a),"%s('12.78', '8')" % (cls.__name__))
+
+ a = cls('12.')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'12.')
+
+ a = cls('1.6E3')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'1.6E3')
+
+ a = cls('1.6E3_8')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'1.6E3_8')
+
+ a = cls('1.6D3')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'1.6D3')
+
+ a = cls('1.6E-3')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'1.6E-3')
+ a = cls('1.6E+3')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'1.6E+3')
+
+ a = cls('3E4')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'3E4')
+
+ a = cls('.123')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'.123')
+
+ a = cls('1.6E-3')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'1.6E-3')
+
+ a = cls('10.9E7_QUAD')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'10.9E7_QUAD')
+
+ a = cls('10.9e-17_quad')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'10.9E-17_quad')
+
+ a = cls('0.0D+0')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'0.0D+0')
- a = cls('type(foo)')
+class test_Char_Selector(NumpyTestCase): # R424
+
+ def check_char_selector(self):
+ cls = Char_Selector
+ a = cls('(len=2, kind=8)')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'(LEN = 2, KIND = 8)')
+ assert_equal(repr(a),"Char_Selector(Int_Literal_Constant('2', None), Int_Literal_Constant('8', None))")
+
+
+ a = cls('(2, kind=8)')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'(LEN = 2, KIND = 8)')
+
+ a = cls('(2, 8)')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'(LEN = 2, KIND = 8)')
+
+ a = cls('(kind=8)')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'(KIND = 8)')
+
+ a = cls('(kind=8,len=2)')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'(LEN = 2, KIND = 8)')
+
+class test_Complex_Literal_Constant(NumpyTestCase): # R421
+
+ def check_complex_literal_constant(self):
+ cls = Complex_Literal_Constant
+ a = cls('(1.0, -1.0)')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'(1.0, -1.0)')
+ assert_equal(repr(a),"Complex_Literal_Constant(Signed_Real_Literal_Constant('1.0', None), Signed_Real_Literal_Constant('-1.0', None))")
+
+ a = cls('(3,3.1E6)')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'(3, 3.1E6)')
+
+ a = cls('(4.0_4, 3.6E7_8)')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'(4.0_4, 3.6E7_8)')
+
+ a = cls('( 0., PI)')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'(0., PI)')
+
+
+class test_Type_Name(NumpyTestCase): # C424
+
+ def check_simple(self):
+ cls = Type_Name
+ a = cls('a')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a')
+ assert_equal(repr(a),"Type_Name('a')")
+
+ self.assertRaises(NoMatchError,cls,'integer')
+ self.assertRaises(NoMatchError,cls,'doubleprecision')
+
+class test_Length_Selector(NumpyTestCase): # R425
+
+ def check_length_selector(self):
+ cls = Length_Selector
+ a = cls('( len = *)')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'(LEN = *)')
+ assert_equal(repr(a),"Length_Selector('(', Type_Param_Value('*'), ')')")
+
+ a = cls('*2,')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'*2')
+
+class test_Char_Length(NumpyTestCase): # R426
+
+ def check_char_length(self):
+ cls = Char_Length
+ a = cls('(1)')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'(1)')
+ assert_equal(repr(a),"Char_Length('(', Int_Literal_Constant('1', None), ')')")
+
+ a = cls('1')
+ assert isinstance(a,Int_Literal_Constant),`a`
+ assert_equal(str(a),'1')
+
+ a = cls('(*)')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'(*)')
+
+ a = cls('(:)')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'(:)')
+
+class test_Char_Literal_Constant(NumpyTestCase): # R427
+
+ def check_char_literal_constant(self):
+ cls = Char_Literal_Constant
+ a = cls('NIH_"DO"')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'NIH_"DO"')
+ assert_equal(repr(a),'Char_Literal_Constant(\'"DO"\', \'NIH\')')
+
+ a = cls("'DO'")
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),"'DO'")
+ assert_equal(repr(a),'Char_Literal_Constant("\'DO\'", None)')
+
+ a = cls("'DON''T'")
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),"'DON''T'")
+
+ a = cls('"DON\'T"')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'"DON\'T"')
+
+ a = cls('""')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'""')
+
+ a = cls("''")
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),"''")
+
+ a = cls('"hey ha(ada)\t"')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'"hey ha(ada)\t"')
+
+class test_Logical_Literal_Constant(NumpyTestCase): # R428
+
+ def check_logical_literal_constant(self):
+ cls = Logical_Literal_Constant
+ a = cls('.TRUE.')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'.TRUE.')
+ assert_equal(repr(a),"%s('.TRUE.', None)" % (cls.__name__))
+
+ a = cls('.True.')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'.TRUE.')
+
+ a = cls('.FALSE.')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'.FALSE.')
+
+ a = cls('.TRUE._HA')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'.TRUE._HA')
+
+class test_Derived_Type_Stmt(NumpyTestCase): # R430
+
+ def check_simple(self):
+ cls = Derived_Type_Stmt
+ a = cls('type a')
assert isinstance(a, cls),`a`
- assert_equal(str(a), 'TYPE(foo)')
- assert_equal(repr(a), "Declaration_Type_Spec('TYPE', Type_Name('foo'))")
+ assert_equal(str(a),'TYPE :: a')
+ assert_equal(repr(a),"Derived_Type_Stmt(None, Type_Name('a'), None)")
+
+ a = cls('type ::a(b,c)')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'TYPE :: a(b, c)')
+
+ a = cls('type, private, abstract::a(b,c)')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'TYPE, PRIVATE, ABSTRACT :: a(b, c)')
-class test_Type_Declaration_Stmt(NumpyTestCase):
+class test_Type_Name(NumpyTestCase): # C423
+
+ def check_simple(self):
+ cls = Type_Name
+ a = cls('a')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'a')
+ assert_equal(repr(a),"Type_Name('a')")
+
+class test_Type_Attr_Spec(NumpyTestCase): # R431
+
+ def check_simple(self):
+ cls = Type_Attr_Spec
+ a = cls('abstract')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'ABSTRACT')
+ assert_equal(repr(a),"Type_Attr_Spec('ABSTRACT', None)")
+
+ a = cls('bind (c )')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'BIND(C)')
+
+ a = cls('extends(a)')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'EXTENDS(a)')
+
+ a = cls('private')
+ assert isinstance(a, Access_Spec),`a`
+ assert_equal(str(a),'PRIVATE')
+
+
+class test_End_Type_Stmt(NumpyTestCase): # R433
+
+ def check_simple(self):
+ cls = End_Type_Stmt
+ a = cls('end type')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'END TYPE')
+ assert_equal(repr(a),"End_Type_Stmt('TYPE', None)")
+
+ a = cls('end type a')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'END TYPE a')
+
+class test_Sequence_Stmt(NumpyTestCase): # R434
+
+ def check_simple(self):
+ cls = Sequence_Stmt
+ a = cls('sequence')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'SEQUENCE')
+ assert_equal(repr(a),"Sequence_Stmt('SEQUENCE')")
+
+class test_Type_Param_Def_Stmt(NumpyTestCase): # R435
+
+ def check_simple(self):
+ cls = Type_Param_Def_Stmt
+ a = cls('integer ,kind :: a')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'INTEGER, KIND :: a')
+ assert_equal(repr(a),"Type_Param_Def_Stmt(None, Type_Param_Attr_Spec('KIND'), Name('a'))")
+
+ a = cls('integer*2 ,len :: a=3, b=2+c')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'INTEGER*2, LEN :: a = 3, b = 2 + c')
+
+class test_Type_Param_Decl(NumpyTestCase): # R436
+
+ def check_simple(self):
+ cls = Type_Param_Decl
+ a = cls('a=2')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'a = 2')
+ assert_equal(repr(a),"Type_Param_Decl(Name('a'), '=', Int_Literal_Constant('2', None))")
+
+ a = cls('a')
+ assert isinstance(a, Name),`a`
+ assert_equal(str(a),'a')
+
+class test_Type_Param_Attr_Spec(NumpyTestCase): # R437
+
+ def check_simple(self):
+ cls = Type_Param_Attr_Spec
+ a = cls('kind')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'KIND')
+ assert_equal(repr(a),"Type_Param_Attr_Spec('KIND')")
+
+ a = cls('len')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'LEN')
+
+class test_Component_Attr_Spec(NumpyTestCase): # R441
+
+ def check_simple(self):
+ cls = Component_Attr_Spec
+ a = cls('pointer')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'POINTER')
+ assert_equal(repr(a),"Component_Attr_Spec('POINTER')")
+
+ a = cls('allocatable')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'ALLOCATABLE')
+
+ a = cls('dimension(a)')
+ assert isinstance(a, Dimension_Component_Attr_Spec),`a`
+ assert_equal(str(a),'DIMENSION(a)')
+
+ a = cls('private')
+ assert isinstance(a, Access_Spec),`a`
+ assert_equal(str(a),'PRIVATE')
+
+class test_Component_Decl(NumpyTestCase): # R442
+
+ def check_simple(self):
+ cls = Component_Decl
+ a = cls('a(1)')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'a(1)')
+ assert_equal(repr(a),"Component_Decl(Name('a'), Explicit_Shape_Spec(None, Int_Literal_Constant('1', None)), None, None)")
+
+ a = cls('a(1)*(3)')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'a(1)*(3)')
+
+ a = cls('a(1)*(3) = 2')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'a(1)*(3) = 2')
+
+ a = cls('a(1) => NULL')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'a(1) => NULL')
+
+class test_Derived_Type_Spec(NumpyTestCase): # R455
+
+ def check_simple(self):
+ cls = Derived_Type_Spec
+ a = cls('a(b)')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a(b)')
+ assert_equal(repr(a),"Derived_Type_Spec(Type_Name('a'), Name('b'))")
+
+ a = cls('a(b,c,g=1)')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a(b, c, g = 1)')
+
+ a = cls('a')
+ assert isinstance(a,Name),`a`
+ assert_equal(str(a),'a')
+
+ a = cls('a()')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a()')
+
+class test_Type_Param_Spec(NumpyTestCase): # R456
+
+ def check_type_param_spec(self):
+ cls = Type_Param_Spec
+ a = cls('a=1')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a = 1')
+ assert_equal(repr(a),"Type_Param_Spec(Name('a'), Int_Literal_Constant('1', None))")
+
+ a = cls('k=a')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'k = a')
+
+ a = cls('k=:')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'k = :')
+
+class test_Type_Param_Spec_List(NumpyTestCase): # R456-list
+
+ def check_type_param_spec_list(self):
+ cls = Type_Param_Spec_List
+
+ a = cls('a,b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a, b')
+ assert_equal(repr(a),"Type_Param_Spec_List(',', (Name('a'), Name('b')))")
+
+ a = cls('a')
+ assert isinstance(a,Name),`a`
+
+ a = cls('k=a,c,g=1')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'k = a, c, g = 1')
+
+class test_Structure_Constructor_2(NumpyTestCase): # R457.b
+
+ def check_simple(self):
+ cls = Structure_Constructor_2
+ a = cls('k=a')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'k = a')
+ assert_equal(repr(a),"Structure_Constructor_2(Name('k'), Name('a'))")
+
+ a = cls('a')
+ assert isinstance(a,Name),`a`
+ assert_equal(str(a),'a')
+
+class test_Structure_Constructor(NumpyTestCase): # R457
+
+ def check_structure_constructor(self):
+ cls = Structure_Constructor
+ a = cls('t()')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'t()')
+ assert_equal(repr(a),"Structure_Constructor(Type_Name('t'), None)")
+
+ a = cls('t(s=1, a)')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'t(s = 1, a)')
+
+ a = cls('a=k')
+ assert isinstance(a,Structure_Constructor_2),`a`
+ assert_equal(str(a),'a = k')
+ assert_equal(repr(a),"Structure_Constructor_2(Name('a'), Name('k'))")
+
+ a = cls('a')
+ assert isinstance(a,Name),`a`
+ assert_equal(str(a),'a')
+
+class test_Component_Spec(NumpyTestCase): # R458
+
+ def check_simple(self):
+ cls = Component_Spec
+ a = cls('k=a')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'k = a')
+ assert_equal(repr(a),"Component_Spec(Name('k'), Name('a'))")
+
+ a = cls('a')
+ assert isinstance(a,Name),`a`
+ assert_equal(str(a),'a')
+
+ a = cls('a % b')
+ assert isinstance(a, Proc_Component_Ref),`a`
+ assert_equal(str(a),'a % b')
+
+ a = cls('s =a % b')
+ assert isinstance(a, Component_Spec),`a`
+ assert_equal(str(a),'s = a % b')
+
+class test_Component_Spec_List(NumpyTestCase): # R458-list
+
+ def check_simple(self):
+ cls = Component_Spec_List
+ a = cls('k=a, b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'k = a, b')
+ assert_equal(repr(a),"Component_Spec_List(',', (Component_Spec(Name('k'), Name('a')), Name('b')))")
+
+ a = cls('k=a, c')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'k = a, c')
+
+class test_Array_Constructor(NumpyTestCase): # R465
+
+ def check_simple(self):
+ cls = Array_Constructor
+ a = cls('(/a/)')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'(/a/)')
+ assert_equal(repr(a),"Array_Constructor('(/', Name('a'), '/)')")
+
+ a = cls('[a]')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'[a]')
+ assert_equal(repr(a),"Array_Constructor('[', Name('a'), ']')")
+
+ a = cls('[integer::a]')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'[INTEGER :: a]')
+
+ a = cls('[integer::a,b]')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'[INTEGER :: a, b]')
+
+class test_Ac_Spec(NumpyTestCase): # R466
+
+ def check_ac_spec(self):
+ cls = Ac_Spec
+ a = cls('integer ::')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'INTEGER ::')
+ assert_equal(repr(a),"Ac_Spec(Intrinsic_Type_Spec('INTEGER', None), None)")
+
+ a = cls('integer :: a,b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'INTEGER :: a, b')
+
+ a = cls('a,b')
+ assert isinstance(a,Ac_Value_List),`a`
+ assert_equal(str(a),'a, b')
+
+ a = cls('integer :: a, (a, b, n = 1, 5)')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'INTEGER :: a, (a, b, n = 1, 5)')
+
+class test_Ac_Value_List(NumpyTestCase): # R469-list
+
+ def check_ac_value_list(self):
+ cls = Ac_Value_List
+ a = cls('a, b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a, b')
+ assert_equal(repr(a),"Ac_Value_List(',', (Name('a'), Name('b')))")
+
+ a = cls('a')
+ assert isinstance(a,Name),`a`
+ assert_equal(str(a),'a')
+
+class test_Ac_Implied_Do(NumpyTestCase): # R470
+
+ def check_ac_implied_do(self):
+ cls = Ac_Implied_Do
+ a = cls('( a, b, n = 1, 5 )')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'(a, b, n = 1, 5)')
+ assert_equal(repr(a),"Ac_Implied_Do(Ac_Value_List(',', (Name('a'), Name('b'))), Ac_Implied_Do_Control(Name('n'), [Int_Literal_Constant('1', None), Int_Literal_Constant('5', None)]))")
+
+class test_Ac_Implied_Do_Control(NumpyTestCase): # R471
+
+ def check_ac_implied_do_control(self):
+ cls = Ac_Implied_Do_Control
+ a = cls('n = 3, 5')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'n = 3, 5')
+ assert_equal(repr(a),"Ac_Implied_Do_Control(Name('n'), [Int_Literal_Constant('3', None), Int_Literal_Constant('5', None)])")
+
+ a = cls('n = 3+1, 5, 1')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'n = 3 + 1, 5, 1')
+
+###############################################################################
+############################### SECTION 5 ####################################
+###############################################################################
+
+class test_Type_Declaration_Stmt(NumpyTestCase): # R501
def check_simple(self):
cls = Type_Declaration_Stmt
@@ -42,20 +845,31 @@ class test_Type_Declaration_Stmt(NumpyTestCase):
assert isinstance(a, cls),`a`
assert_equal(str(a), 'INTEGER, DIMENSION(2) :: a*3')
-class test_Access_Spec(NumpyTestCase):
+ a = cls('real a')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a), 'REAL :: a')
+ assert_equal(repr(a), "Type_Declaration_Stmt(Intrinsic_Type_Spec('REAL', None), None, Entity_Decl(Name('a'), None, None, None))")
- def check_simple(self):
- cls = Access_Spec
- a = cls('private')
+ a = cls('REAL A( LDA, * ), B( LDB, * )')
assert isinstance(a, cls),`a`
- assert_equal(str(a), 'PRIVATE')
- assert_equal(repr(a), "Access_Spec('PRIVATE')")
- a = cls('public')
+ a = cls('DOUBLE PRECISION ALPHA, BETA')
assert isinstance(a, cls),`a`
- assert_equal(str(a), 'PUBLIC')
-class test_Attr_Spec(NumpyTestCase):
+class test_Declaration_Type_Spec(NumpyTestCase): # R502
+
+ def check_simple(self):
+ cls = Declaration_Type_Spec
+ a = cls('Integer*2')
+ assert isinstance(a, Intrinsic_Type_Spec),`a`
+ assert_equal(str(a), 'INTEGER*2')
+
+ a = cls('type(foo)')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a), 'TYPE(foo)')
+ assert_equal(repr(a), "Declaration_Type_Spec('TYPE', Type_Name('foo'))")
+
+class test_Attr_Spec(NumpyTestCase): # R503
def check_simple(self):
cls = Attr_Spec
@@ -67,16 +881,16 @@ class test_Attr_Spec(NumpyTestCase):
assert isinstance(a, Dimension_Attr_Spec),`a`
assert_equal(str(a),'DIMENSION(a)')
-class test_Dimension_Attr_Spec(NumpyTestCase):
+class test_Dimension_Attr_Spec(NumpyTestCase): # R503.d
def check_simple(self):
cls = Dimension_Attr_Spec
a = cls('dimension(a)')
assert isinstance(a, cls),`a`
assert_equal(str(a),'DIMENSION(a)')
- assert_equal(repr(a),"Dimension_Attr_Spec('DIMENSION', Name('a'))")
+ assert_equal(repr(a),"Dimension_Attr_Spec('DIMENSION', Explicit_Shape_Spec(None, Name('a')))")
-class test_Intent_Attr_Spec(NumpyTestCase):
+class test_Intent_Attr_Spec(NumpyTestCase): # R503.f
def check_simple(self):
cls = Intent_Attr_Spec
@@ -85,7 +899,37 @@ class test_Intent_Attr_Spec(NumpyTestCase):
assert_equal(str(a),'INTENT(IN)')
assert_equal(repr(a),"Intent_Attr_Spec('INTENT', Intent_Spec('IN'))")
-class test_Language_Binding_Spec(NumpyTestCase):
+class test_Entity_Decl(NumpyTestCase): # 504
+
+ def check_simple(self):
+ cls = Entity_Decl
+ a = cls('a(1)')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'a(1)')
+ assert_equal(repr(a),"Entity_Decl(Name('a'), Explicit_Shape_Spec(None, Int_Literal_Constant('1', None)), None, None)")
+
+ a = cls('a(1)*(3)')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'a(1)*(3)')
+
+ a = cls('a(1)*(3) = 2')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'a(1)*(3) = 2')
+
+class test_Access_Spec(NumpyTestCase): # R508
+
+ def check_simple(self):
+ cls = Access_Spec
+ a = cls('private')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'PRIVATE')
+ assert_equal(repr(a),"Access_Spec('PRIVATE')")
+
+ a = cls('public')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'PUBLIC')
+
+class test_Language_Binding_Spec(NumpyTestCase): # R509
def check_simple(self):
cls = Language_Binding_Spec
@@ -98,24 +942,953 @@ class test_Language_Binding_Spec(NumpyTestCase):
assert isinstance(a, cls),`a`
assert_equal(str(a),'BIND(C, NAME = "hey")')
-class test_Entity_Decl(NumpyTestCase):
+class test_Explicit_Shape_Spec(NumpyTestCase): # R511
def check_simple(self):
- cls = Entity_Decl
- a = cls('a(1)')
+ cls = Explicit_Shape_Spec
+ a = cls('a:b')
assert isinstance(a, cls),`a`
- assert_equal(str(a),'a(1)')
- assert_equal(repr(a),"Entity_Decl(Name('a'), Int_Literal_Constant('1', None), None, None)")
+ assert_equal(str(a),'a : b')
+ assert_equal(repr(a),"Explicit_Shape_Spec(Name('a'), Name('b'))")
- a = cls('a(1)*(3)')
+ a = cls('a')
assert isinstance(a, cls),`a`
- assert_equal(str(a),'a(1)*(3)')
+ assert_equal(str(a),'a')
- a = cls('a(1)*(3) = 2')
+class test_Upper_Bound(NumpyTestCase): # R513
+
+ def check_simple(self):
+ cls = Upper_Bound
+ a = cls('a')
+ assert isinstance(a, Name),`a`
+ assert_equal(str(a),'a')
+
+ self.assertRaises(NoMatchError,cls,'*')
+
+class test_Assumed_Shape_Spec(NumpyTestCase): # R514
+
+ def check_simple(self):
+ cls = Assumed_Shape_Spec
+ a = cls(':')
assert isinstance(a, cls),`a`
- assert_equal(str(a),'a(1)*(3) = 2')
+ assert_equal(str(a),':')
+ assert_equal(repr(a),'Assumed_Shape_Spec(None, None)')
+
+ a = cls('a :')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'a :')
+
+class test_Deferred_Shape_Spec(NumpyTestCase): # R515
+
+ def check_simple(self):
+ cls = Deferred_Shape_Spec
+ a = cls(':')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),':')
+ assert_equal(repr(a),'Deferred_Shape_Spec(None, None)')
+
+
+class test_Assumed_Size_Spec(NumpyTestCase): # R516
+
+ def check_simple(self):
+ cls = Assumed_Size_Spec
+ a = cls('*')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'*')
+ assert_equal(repr(a),'Assumed_Size_Spec(None, None)')
+
+ a = cls('1:*')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'1 : *')
-class test_Prefix_Spec(NumpyTestCase):
+ a = cls('a,1:*')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'a, 1 : *')
+
+ a = cls('a:b,1:*')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'a : b, 1 : *')
+
+
+class test_Parameter_Stmt(NumpyTestCase): # R538
+
+ def check_simple(self):
+ cls = Parameter_Stmt
+ a = cls('parameter(a=1)')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'PARAMETER(a = 1)')
+ assert_equal(repr(a),"Parameter_Stmt('PARAMETER', Named_Constant_Def(Name('a'), Int_Literal_Constant('1', None)))")
+
+ a = cls('parameter(a=1, b=a+2)')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'PARAMETER(a = 1, b = a + 2)')
+
+ a = cls('PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'PARAMETER(ONE = 1.0D+0, ZERO = 0.0D+0)')
+
+class test_Named_Constant_Def(NumpyTestCase): # R539
+
+ def check_simple(self):
+ cls = Named_Constant_Def
+ a = cls('a=1')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'a = 1')
+ assert_equal(repr(a),"Named_Constant_Def(Name('a'), Int_Literal_Constant('1', None))")
+
+class test_Pointer_Decl(NumpyTestCase): # R541
+
+ def check_simple(self):
+ cls = Pointer_Decl
+ a = cls('a(:)')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'a(:)')
+ assert_equal(repr(a),"Pointer_Decl(Name('a'), Deferred_Shape_Spec(None, None))")
+
+ a = cls('a(:,:)')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'a(:, :)')
+
+class test_Implicit_Stmt(NumpyTestCase): # R549
+
+ def check_simple(self):
+ cls = Implicit_Stmt
+ a = cls('implicitnone')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'IMPLICIT NONE')
+ assert_equal(repr(a),"Implicit_Stmt('IMPLICIT NONE', None)")
+
+ a = cls('implicit real(a-d), double precision(r-t,x), type(a) (y-z)')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'IMPLICIT REAL(A - D), DOUBLE PRECISION(R - T, X), TYPE(a)(Y - Z)')
+
+class test_Implicit_Spec(NumpyTestCase): # R550
+
+ def check_simple(self):
+ cls = Implicit_Spec
+ a = cls('integer (a-z)')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'INTEGER(A - Z)')
+ assert_equal(repr(a),"Implicit_Spec(Intrinsic_Type_Spec('INTEGER', None), Letter_Spec('A', 'Z'))")
+
+ a = cls('double complex (r,d-g)')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'DOUBLE COMPLEX(R, D - G)')
+
+class test_Letter_Spec(NumpyTestCase): # R551
+
+ def check_simple(self):
+ cls = Letter_Spec
+ a = cls('a-z')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'A - Z')
+ assert_equal(repr(a),"Letter_Spec('A', 'Z')")
+
+ a = cls('d')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'D')
+
+class test_Equivalence_Stmt(NumpyTestCase): # R554
+
+ def check_simple(self):
+ cls = Equivalence_Stmt
+ a = cls('equivalence (a, b ,z)')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'EQUIVALENCE(a, b, z)')
+ assert_equal(repr(a),"Equivalence_Stmt('EQUIVALENCE', Equivalence_Set(Name('a'), Equivalence_Object_List(',', (Name('b'), Name('z')))))")
+
+ a = cls('equivalence (a, b ,z),(b,l)')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'EQUIVALENCE(a, b, z), (b, l)')
+
+class test_Common_Stmt(NumpyTestCase): # R557
+
+ def check_simple(self):
+ cls = Common_Stmt
+ a = cls('common a')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'COMMON // a')
+ assert_equal(repr(a),"Common_Stmt([(None, Name('a'))])")
+
+ a = cls('common // a,b')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'COMMON // a, b')
+
+ a = cls('common /name/ a,b')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'COMMON /name/ a, b')
+
+ a = cls('common /name/ a,b(4,5) // c, /ljuks/ g(2)')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'COMMON /name/ a, b(4, 5) // c /ljuks/ g(2)')
+
+class test_Common_Block_Object(NumpyTestCase): # R558
+
+ def check_simple(self):
+ cls = Common_Block_Object
+ a = cls('a(2)')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'a(2)')
+ assert_equal(repr(a),"Common_Block_Object(Name('a'), Explicit_Shape_Spec(None, Int_Literal_Constant('2', None)))")
+
+ a = cls('a')
+ assert isinstance(a, Name),`a`
+ assert_equal(str(a),'a')
+
+
+###############################################################################
+############################### SECTION 6 ####################################
+###############################################################################
+
+class test_Substring(NumpyTestCase): # R609
+
+ def check_simple(self):
+ cls = Substring
+ a = cls('a(:)')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'a(:)')
+ assert_equal(repr(a),"Substring(Name('a'), Substring_Range(None, None))")
+
+ a = cls('a(1:2)')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a(1 : 2)')
+ assert_equal(repr(a),"Substring(Name('a'), Substring_Range(Int_Literal_Constant('1', None), Int_Literal_Constant('2', None)))")
+
+
+class test_Substring_Range(NumpyTestCase): # R611
+
+ def check_simple(self):
+ cls = Substring_Range
+ a = cls(':')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),':')
+ assert_equal(repr(a),"Substring_Range(None, None)")
+
+ a = cls('a+1:')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'a + 1 :')
+
+ a = cls('a+1: c/foo(g)')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'a + 1 : c / foo(g)')
+
+ a = cls('a:b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a : b')
+ assert_equal(repr(a),"Substring_Range(Name('a'), Name('b'))")
+
+ a = cls('a:')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a :')
+
+ a = cls(':b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),': b')
+
+
+class test_Data_Ref(NumpyTestCase): # R612
+
+ def check_data_ref(self):
+ cls = Data_Ref
+ a = cls('a%b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a % b')
+ assert_equal(repr(a),"Data_Ref('%', (Name('a'), Name('b')))")
+
+ a = cls('a')
+ assert isinstance(a,Name),`a`
+ assert_equal(str(a),'a')
+
+class test_Part_Ref(NumpyTestCase): # R613
+
+ def check_part_ref(self):
+ cls = Part_Ref
+ a = cls('a')
+ assert isinstance(a, Name),`a`
+ assert_equal(str(a),'a')
+
+class test_Type_Param_Inquiry(NumpyTestCase): # R615
+
+ def check_simple(self):
+ cls = Type_Param_Inquiry
+ a = cls('a % b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a % b')
+ assert_equal(repr(a),"Type_Param_Inquiry(Name('a'), '%', Name('b'))")
+
+
+class test_Array_Section(NumpyTestCase): # R617
+
+ def check_array_section(self):
+ cls = Array_Section
+ a = cls('a(:)')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a(:)')
+ assert_equal(repr(a),"Array_Section(Name('a'), Substring_Range(None, None))")
+
+ a = cls('a(2:)')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a(2 :)')
+
+
+class test_Section_Subscript(NumpyTestCase): # R619
+
+ def check_simple(self):
+ cls = Section_Subscript
+
+ a = cls('1:2')
+ assert isinstance(a, Subscript_Triplet),`a`
+ assert_equal(str(a),'1 : 2')
+
+ a = cls('zzz')
+ assert isinstance(a, Name),`a`
+ assert_equal(str(a),'zzz')
+
+class test_Section_Subscript_List(NumpyTestCase): # R619-list
+
+ def check_simple(self):
+ cls = Section_Subscript_List
+ a = cls('a,2')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a, 2')
+ assert_equal(repr(a),"Section_Subscript_List(',', (Name('a'), Int_Literal_Constant('2', None)))")
+
+ a = cls('::1')
+ assert isinstance(a,Subscript_Triplet),`a`
+ assert_equal(str(a),': : 1')
+
+ a = cls('::1, 3')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),': : 1, 3')
+
+class test_Subscript_Triplet(NumpyTestCase): # R620
+
+ def check_simple(self):
+ cls = Subscript_Triplet
+ a = cls('a:b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a : b')
+ assert_equal(repr(a),"Subscript_Triplet(Name('a'), Name('b'), None)")
+
+ a = cls('a:b:1')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a : b : 1')
+
+ a = cls(':')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),':')
+
+ a = cls('::5')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),': : 5')
+
+ a = cls(':5')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),': 5')
+
+ a = cls('a+1 :')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a + 1 :')
+
+class test_Alloc_Opt(NumpyTestCase): # R624
+
+ def check_simple(self):
+ cls = Alloc_Opt
+ a = cls('stat=a')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'STAT = a')
+ assert_equal(repr(a),"Alloc_Opt('STAT', Name('a'))")
+
+class test_Nullify_Stmt(NumpyTestCase): # R633
+
+ def check_simple(self):
+ cls = Nullify_Stmt
+ a = cls('nullify (a)')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'NULLIFY(a)')
+ assert_equal(repr(a),"Nullify_Stmt('NULLIFY', Name('a'))")
+
+ a = cls('nullify (a,c)')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'NULLIFY(a, c)')
+
+###############################################################################
+############################### SECTION 7 ####################################
+###############################################################################
+
+class test_Primary(NumpyTestCase): # R701
+
+ def check_simple(self):
+ cls = Primary
+ a = cls('a')
+ assert isinstance(a,Name),`a`
+ assert_equal(str(a),'a')
+
+ a = cls('(a)')
+ assert isinstance(a,Parenthesis),`a`
+ assert_equal(str(a),'(a)')
+
+ a = cls('1')
+ assert isinstance(a,Int_Literal_Constant),`a`
+ assert_equal(str(a),'1')
+
+ a = cls('1.')
+ assert isinstance(a,Real_Literal_Constant),`a`
+ assert_equal(str(a),'1.')
+
+ a = cls('(1, n)')
+ assert isinstance(a,Complex_Literal_Constant),`a`
+ assert_equal(str(a),'(1, n)')
+
+ a = cls('.true.')
+ assert isinstance(a,Logical_Literal_Constant),`a`
+ assert_equal(str(a),'.TRUE.')
+
+ a = cls('"hey a()c"')
+ assert isinstance(a,Char_Literal_Constant),`a`
+ assert_equal(str(a),'"hey a()c"')
+
+ a = cls('b"0101"')
+ assert isinstance(a,Binary_Constant),`a`
+ assert_equal(str(a),'B"0101"')
+
+ a = cls('o"0107"')
+ assert isinstance(a,Octal_Constant),`a`
+ assert_equal(str(a),'O"0107"')
+
+ a = cls('z"a107"')
+ assert isinstance(a,Hex_Constant),`a`
+ assert_equal(str(a),'Z"A107"')
+
+ a = cls('a % b')
+ assert isinstance(a,Data_Ref),`a`
+ assert_equal(str(a),'a % b')
+
+ a = cls('a(:)')
+ assert isinstance(a,Array_Section),`a`
+ assert_equal(str(a),'a(:)')
+
+ a = cls('0.0E-1')
+ assert isinstance(a,Real_Literal_Constant),`a`
+ assert_equal(str(a),'0.0E-1')
+
+class test_Parenthesis(NumpyTestCase): # R701.h
+
+ def check_simple(self):
+ cls = Parenthesis
+ a = cls('(a)')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'(a)')
+ assert_equal(repr(a),"Parenthesis('(', Name('a'), ')')")
+
+ a = cls('(a+1)')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'(a + 1)')
+
+ a = cls('((a))')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'((a))')
+
+ a = cls('(a+(a+c))')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'(a + (a + c))')
+
+class test_Level_1_Expr(NumpyTestCase): # R702
+
+ def check_simple(self):
+ cls = Level_1_Expr
+ a = cls('.hey. a')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'.HEY. a')
+ assert_equal(repr(a),"Level_1_Expr('.HEY.', Name('a'))")
+
+ self.assertRaises(NoMatchError,cls,'.not. a')
+
+class test_Mult_Operand(NumpyTestCase): # R704
+
+ def check_simple(self):
+ cls = Mult_Operand
+ a = cls('a**b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a ** b')
+ assert_equal(repr(a),"Mult_Operand(Name('a'), '**', Name('b'))")
+
+ a = cls('a**2')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a ** 2')
+
+ a = cls('(a+b)**2')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'(a + b) ** 2')
+
+ a = cls('0.0E-1')
+ assert isinstance(a,Real_Literal_Constant),`a`
+ assert_equal(str(a),'0.0E-1')
+
+class test_Add_Operand(NumpyTestCase): # R705
+
+ def check_simple(self):
+ cls = Add_Operand
+ a = cls('a*b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a * b')
+ assert_equal(repr(a),"Add_Operand(Name('a'), '*', Name('b'))")
+
+ a = cls('a/b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a / b')
+
+ a = cls('a**b')
+ assert isinstance(a,Mult_Operand),`a`
+ assert_equal(str(a),'a ** b')
+
+ a = cls('0.0E-1')
+ assert isinstance(a,Real_Literal_Constant),`a`
+ assert_equal(str(a),'0.0E-1')
+
+class test_Level_2_Expr(NumpyTestCase): # R706
+
+ def check_simple(self):
+ cls = Level_2_Expr
+ a = cls('a+b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a + b')
+ assert_equal(repr(a),"Level_2_Expr(Name('a'), '+', Name('b'))")
+
+ a = cls('a-b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a - b')
+
+ a = cls('a+b+c')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a + b + c')
+
+ a = cls('+a')
+ assert isinstance(a,Level_2_Unary_Expr),`a`
+ assert_equal(str(a),'+ a')
+
+ a = cls('+1')
+ assert isinstance(a,Level_2_Unary_Expr),`a`
+ assert_equal(str(a),'+ 1')
+
+ a = cls('+a+b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'+ a + b')
+
+ a = cls('0.0E-1')
+ assert isinstance(a,Real_Literal_Constant),`a`
+ assert_equal(str(a),'0.0E-1')
+
+
+class test_Level_2_Unary_Expr(NumpyTestCase):
+
+ def check_simple(self):
+ cls = Level_2_Unary_Expr
+ a = cls('+a')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'+ a')
+ assert_equal(repr(a),"Level_2_Unary_Expr('+', Name('a'))")
+
+ a = cls('-a')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'- a')
+
+ a = cls('+1')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'+ 1')
+
+ a = cls('0.0E-1')
+ assert isinstance(a,Real_Literal_Constant),`a`
+ assert_equal(str(a),'0.0E-1')
+
+
+class test_Level_3_Expr(NumpyTestCase): # R710
+
+ def check_simple(self):
+ cls = Level_3_Expr
+ a = cls('a//b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a // b')
+ assert_equal(repr(a),"Level_3_Expr(Name('a'), '//', Name('b'))")
+
+ a = cls('"a"//"b"')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'"a" // "b"')
+
+class test_Level_4_Expr(NumpyTestCase): # R712
+
+ def check_simple(self):
+ cls = Level_4_Expr
+ a = cls('a.eq.b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a .EQ. b')
+ assert_equal(repr(a),"Level_4_Expr(Name('a'), '.EQ.', Name('b'))")
+
+ a = cls('a.ne.b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a .NE. b')
+
+ a = cls('a.lt.b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a .LT. b')
+
+ a = cls('a.gt.b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a .GT. b')
+
+ a = cls('a.ge.b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a .GE. b')
+
+ a = cls('a==b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a == b')
+
+ a = cls('a/=b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a /= b')
+
+ a = cls('a<b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a < b')
+
+ a = cls('a<=b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a <= b')
+
+ a = cls('a>=b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a >= b')
+
+ a = cls('a>b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a > b')
+
+class test_And_Operand(NumpyTestCase): # R714
+
+ def check_simple(self):
+ cls = And_Operand
+ a = cls('.not.a')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'.NOT. a')
+ assert_equal(repr(a),"And_Operand('.NOT.', Name('a'))")
+
+class test_Or_Operand(NumpyTestCase): # R715
+
+ def check_simple(self):
+ cls = Or_Operand
+ a = cls('a.and.b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a .AND. b')
+ assert_equal(repr(a),"Or_Operand(Name('a'), '.AND.', Name('b'))")
+
+
+class test_Equiv_Operand(NumpyTestCase): # R716
+
+ def check_simple(self):
+ cls = Equiv_Operand
+ a = cls('a.or.b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a .OR. b')
+ assert_equal(repr(a),"Equiv_Operand(Name('a'), '.OR.', Name('b'))")
+
+
+class test_Level_5_Expr(NumpyTestCase): # R717
+
+ def check_simple(self):
+ cls = Level_5_Expr
+ a = cls('a.eqv.b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a .EQV. b')
+ assert_equal(repr(a),"Level_5_Expr(Name('a'), '.EQV.', Name('b'))")
+
+ a = cls('a.neqv.b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a .NEQV. b')
+
+ a = cls('a.eq.b')
+ assert isinstance(a,Level_4_Expr),`a`
+ assert_equal(str(a),'a .EQ. b')
+
+class test_Expr(NumpyTestCase): # R722
+
+ def check_simple(self):
+ cls = Expr
+ a = cls('a .op. b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a .OP. b')
+ assert_equal(repr(a),"Expr(Name('a'), '.OP.', Name('b'))")
+
+ a = cls('a')
+ assert isinstance(a,Name),`a`
+ assert_equal(str(a),'a')
+
+ a = cls('3.e2')
+ assert isinstance(a,Real_Literal_Constant),`a`
+
+ a = cls('0.0E-1')
+ assert isinstance(a,Real_Literal_Constant),`a`
+ assert_equal(str(a),'0.0E-1')
+
+ self.assertRaises(NoMatchError,Scalar_Int_Expr,'a,b')
+
+class test_Assignment_Stmt(NumpyTestCase): # R734
+
+ def check_simple(self):
+ cls = Assignment_Stmt
+ a = cls('a = b')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'a = b')
+ assert_equal(repr(a),"Assignment_Stmt(Name('a'), '=', Name('b'))")
+
+ a = cls('a(3:4) = b+c')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'a(3 : 4) = b + c')
+
+ a = cls('a%c = b+c')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'a % c = b + c')
+
+class test_Proc_Component_Ref(NumpyTestCase): # R741
+
+ def check_proc_component_ref(self):
+ cls = Proc_Component_Ref
+ a = cls('a % b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a % b')
+ assert_equal(repr(a),"Proc_Component_Ref(Name('a'), '%', Name('b'))")
+
+###############################################################################
+############################### SECTION 8 ####################################
+###############################################################################
+
+class test_Continue_Stmt(NumpyTestCase): # R848
+
+ def check_simple(self):
+ cls = Continue_Stmt
+ a = cls('continue')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'CONTINUE')
+ assert_equal(repr(a),"Continue_Stmt('CONTINUE')")
+
+###############################################################################
+############################### SECTION 9 ####################################
+###############################################################################
+
+class test_Io_Unit(NumpyTestCase): # R901
+
+ def check_simple(self):
+ cls = Io_Unit
+ a = cls('*')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'*')
+
+ a = cls('a')
+ assert isinstance(a, Name),`a`
+ assert_equal(str(a),'a')
+
+class test_Write_Stmt(NumpyTestCase): # R911
+
+ def check_simple(self):
+ cls = Write_Stmt
+ a = cls('write (123)"hey"')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'WRITE(UNIT = 123) "hey"')
+ assert_equal(repr(a),'Write_Stmt(Io_Control_Spec_List(\',\', (Io_Control_Spec(\'UNIT\', Int_Literal_Constant(\'123\', None)),)), Char_Literal_Constant(\'"hey"\', None))')
+
+class test_Print_Stmt(NumpyTestCase): # R912
+
+ def check_simple(self):
+ cls = Print_Stmt
+ a = cls('print 123')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'PRINT 123')
+ assert_equal(repr(a),"Print_Stmt(Label('123'), None)")
+
+ a = cls('print *,"a=",a')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'PRINT *, "a=", a')
+
+class test_Io_Control_Spec(NumpyTestCase): # R913
+
+ def check_simple(self):
+ cls = Io_Control_Spec
+ a = cls('end=123')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'END = 123')
+ assert_equal(repr(a),"Io_Control_Spec('END', Label('123'))")
+
+class test_Io_Control_Spec_List(NumpyTestCase): # R913-list
+
+ def check_simple(self):
+ cls = Io_Control_Spec_List
+ a = cls('end=123')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'END = 123')
+ assert_equal(repr(a),"Io_Control_Spec_List(',', (Io_Control_Spec('END', Label('123')),))")
+
+ a = cls('123')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'UNIT = 123')
+
+ a = cls('123,*')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'UNIT = 123, FMT = *')
+
+ a = cls('123,fmt=a')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'UNIT = 123, FMT = a')
+
+ if 0:
+ # see todo note in Io_Control_Spec_List
+ a = cls('123,a')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'UNIT = 123, NML = a')
+
+class test_Format(NumpyTestCase): # R914
+
+ def check_simple(self):
+ cls = Format
+ a = cls('*')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'*')
+ assert_equal(repr(a),"Format('*')")
+
+ a = cls('a')
+ assert isinstance(a, Name),`a`
+ assert_equal(str(a),'a')
+
+ a = cls('123')
+ assert isinstance(a, Label),`a`
+ assert_equal(str(a),'123')
+
+class test_Wait_Stmt(NumpyTestCase): # R921
+
+ def check_simple(self):
+ cls = Wait_Stmt
+ a = cls('wait (123)')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'WAIT(UNIT = 123)')
+
+class test_Wait_Spec(NumpyTestCase): # R922
+
+ def check_simple(self):
+ cls = Wait_Spec
+ a = cls('123')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'UNIT = 123')
+ assert_equal(repr(a),"Wait_Spec('UNIT', Int_Literal_Constant('123', None))")
+
+ a = cls('err=1')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'ERR = 1')
+
+###############################################################################
+############################### SECTION 10 ####################################
+###############################################################################
+
+
+###############################################################################
+############################### SECTION 11 ####################################
+###############################################################################
+
+class test_Module_Nature(NumpyTestCase): # R1110
+
+ def check_simple(self):
+ cls = Module_Nature
+ a = cls('intrinsic')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'INTRINSIC')
+ assert_equal(repr(a),"Module_Nature('INTRINSIC')")
+
+ a = cls('non_intrinsic')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'NON_INTRINSIC')
+
+###############################################################################
+############################### SECTION 12 ####################################
+###############################################################################
+
+class test_Function_Reference(NumpyTestCase): # R1217
+
+ def check_simple(self):
+ cls = Function_Reference
+ a = cls('f()')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'f()')
+ assert_equal(repr(a),"Function_Reference(Name('f'), None)")
+
+ a = cls('f(2,k=1,a)')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'f(2, k = 1, a)')
+
+
+class test_Procedure_Designator(NumpyTestCase): # R1219
+
+ def check_procedure_designator(self):
+ cls = Procedure_Designator
+ a = cls('a%b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a % b')
+ assert_equal(repr(a),"Procedure_Designator(Name('a'), '%', Name('b'))")
+
+class test_Actual_Arg_Spec(NumpyTestCase): # R1220
+
+ def check_simple(self):
+ cls = Actual_Arg_Spec
+ a = cls('k=a')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'k = a')
+ assert_equal(repr(a),"Actual_Arg_Spec(Name('k'), Name('a'))")
+
+ a = cls('a')
+ assert isinstance(a,Name),`a`
+ assert_equal(str(a),'a')
+
+class test_Actual_Arg_Spec_List(NumpyTestCase):
+
+ def check_simple(self):
+ cls = Actual_Arg_Spec_List
+ a = cls('a,b')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'a, b')
+ assert_equal(repr(a),"Actual_Arg_Spec_List(',', (Name('a'), Name('b')))")
+
+ a = cls('a = k')
+ assert isinstance(a,Actual_Arg_Spec),`a`
+ assert_equal(str(a),'a = k')
+
+ a = cls('a = k,b')
+ assert isinstance(a,Actual_Arg_Spec_List),`a`
+ assert_equal(str(a),'a = k, b')
+
+ a = cls('a')
+ assert isinstance(a,Name),`a`
+ assert_equal(str(a),'a')
+
+class test_Alt_Return_Spec(NumpyTestCase): # R1222
+
+ def check_alt_return_spec(self):
+ cls = Alt_Return_Spec
+ a = cls('* 123')
+ assert isinstance(a,cls),`a`
+ assert_equal(str(a),'*123')
+ assert_equal(repr(a),"Alt_Return_Spec('123')")
+
+class test_Prefix(NumpyTestCase): # R1227
+
+ def check_simple(self):
+ cls = Prefix
+ a = cls('pure recursive')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'PURE RECURSIVE')
+ assert_equal(repr(a), "Prefix(' ', (Prefix_Spec('PURE'), Prefix_Spec('RECURSIVE')))")
+
+ a = cls('integer * 2 pure')
+ assert isinstance(a, cls),`a`
+ assert_equal(str(a),'INTEGER*2 PURE')
+
+class test_Prefix_Spec(NumpyTestCase): # R1228
def check_simple(self):
cls = Prefix_Spec
@@ -136,20 +1909,29 @@ class test_Prefix_Spec(NumpyTestCase):
assert isinstance(a, Intrinsic_Type_Spec),`a`
assert_equal(str(a),'INTEGER*2')
-class test_Prefix(NumpyTestCase):
+class test_Subroutine_Subprogram(NumpyTestCase): # R1231
def check_simple(self):
- cls = Prefix
- a = cls('pure recursive')
+ from api import get_reader
+ reader = get_reader('''\
+ subroutine foo
+ end subroutine foo''')
+ cls = Subroutine_Subprogram
+ a = cls(reader)
assert isinstance(a, cls),`a`
- assert_equal(str(a),'PURE RECURSIVE')
- assert_equal(repr(a), "Prefix(' ', (Prefix_Spec('PURE'), Prefix_Spec('RECURSIVE')))")
+ assert_equal(str(a),'SUBROUTINE foo\nEND SUBROUTINE foo')
+ assert_equal(repr(a),"Subroutine_Subprogram(Subroutine_Stmt(None, Name('foo'), None, None), End_Subroutine_Stmt('SUBROUTINE', Name('foo')))")
- a = cls('integer * 2 pure')
+ reader = get_reader('''\
+ subroutine foo
+ integer a
+ end subroutine foo''')
+ cls = Subroutine_Subprogram
+ a = cls(reader)
assert isinstance(a, cls),`a`
- assert_equal(str(a),'INTEGER*2 PURE')
+ assert_equal(str(a),'SUBROUTINE foo\n INTEGER :: a\nEND SUBROUTINE foo')
-class test_Subroutine_Stmt(NumpyTestCase):
+class test_Subroutine_Stmt(NumpyTestCase): # R1232
def check_simple(self):
cls = Subroutine_Stmt
@@ -170,7 +1952,7 @@ class test_Subroutine_Stmt(NumpyTestCase):
assert isinstance(a, cls),`a`
assert_equal(str(a),'SUBROUTINE foo BIND(C)')
-class test_End_Subroutine_Stmt(NumpyTestCase):
+class test_End_Subroutine_Stmt(NumpyTestCase): # R1234
def check_simple(self):
cls = End_Subroutine_Stmt
@@ -187,39 +1969,48 @@ class test_End_Subroutine_Stmt(NumpyTestCase):
assert isinstance(a, cls),`a`
assert_equal(str(a),'END SUBROUTINE')
-class test_Specification_Part(NumpyTestCase):
+class test_Return_Stmt(NumpyTestCase): # R1236
def check_simple(self):
- from api import get_reader
- reader = get_reader('''\
- integer a''')
- cls = Specification_Part
- a = cls(reader)
+ cls = Return_Stmt
+ a = cls('return')
assert isinstance(a, cls),`a`
- assert_equal(str(a),'INTEGER :: a')
- assert_equal(repr(a), "Specification_Part(Type_Declaration_Stmt(Intrinsic_Type_Spec('INTEGER', None), None, Entity_Decl(Name('a'), None, None, None)))")
+ assert_equal(str(a), 'RETURN')
+ assert_equal(repr(a), 'Return_Stmt(None)')
-class test_Subroutine_Subprogram(NumpyTestCase):
+class test_Contains(NumpyTestCase): # R1237
def check_simple(self):
- from api import get_reader
- reader = get_reader('''\
- subroutine foo
- end subroutine foo''')
- cls = Subroutine_Subprogram
- a = cls(reader)
+ cls = Contains_Stmt
+ a = cls('Contains')
assert isinstance(a, cls),`a`
- assert_equal(str(a),'SUBROUTINE foo\nEND SUBROUTINE foo')
- assert_equal(repr(a),"Subroutine_Subprogram(Subroutine_Stmt(None, Name('foo'), None, None), End_Subroutine_Stmt('SUBROUTINE', Name('foo')))")
+ assert_equal(str(a),'CONTAINS')
+ assert_equal(repr(a),"Contains_Stmt('CONTAINS')")
- reader = get_reader('''\
- subroutine foo
- integer a
- end subroutine foo''')
- cls = Subroutine_Subprogram
- a = cls(reader)
- assert isinstance(a, cls),`a`
- assert_equal(str(a),'SUBROUTINE foo\nINTEGER :: a\nEND SUBROUTINE foo')
+if 1:
+ for name in dir():
+ obj = eval(name)
+ if not isinstance(obj, ClassType): continue
+ if not issubclass(obj, Base): continue
+ clsname = obj.__name__
+ if clsname.endswith('Base'): continue
+ subclass_names = obj.__dict__.get('subclass_names',None)
+ use_names = obj.__dict__.get('use_names',None)
+ if not use_names: continue
+ match = obj.__dict__.get('match',None)
+ try:
+ test_cls = eval('test_%s' % (clsname))
+ except NameError:
+ test_cls = None
+ if match is None:
+ if test_cls is None:
+ print '%s needs match implementation and tests' % (clsname)
+ else:
+ print '%s needs match implementation' % (clsname)
+ else:
+ if test_cls is None:
+ print '%s needs tests' % (clsname)
+ continue
if __name__ == "__main__":