From 105354f5f3ff2ee7a7d6bcd8bd66b01889e44057 Mon Sep 17 00:00:00 2001 From: Pearu Peterson Date: Sun, 2 Jul 2006 17:19:26 +0000 Subject: Added more Fortran parser tests. --- numpy/f2py/lib/test_parser.py | 57 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 54 insertions(+), 3 deletions(-) (limited to 'numpy/f2py/lib/test_parser.py') diff --git a/numpy/f2py/lib/test_parser.py b/numpy/f2py/lib/test_parser.py index 1bd8476e2..47b20b652 100644 --- a/numpy/f2py/lib/test_parser.py +++ b/numpy/f2py/lib/test_parser.py @@ -4,10 +4,11 @@ from block_statements import * from readfortran import Line, FortranStringReader -def parse(cls, line, label=''): +def parse(cls, line, label='', + isfree=True, isstrict=False): if label: line = label + ' : ' + line - reader = FortranStringReader(line, True, False) + reader = FortranStringReader(line, isfree, isstrict) item = reader.next() if not cls.match(item.get_line()): raise ValueError, '%r does not match %s pattern' % (line, cls.__name__) @@ -371,6 +372,56 @@ class test_Statements(NumpyTestCase): assert_equal(parse(Case,'case default'),'CASE DEFAULT') assert_equal(parse(Case,'case (1:2 ,3:4)'),'CASE ( 1 : 2, 3 : 4 )') assert_equal(parse(Case,'case (a(1,:):)'),'CASE ( a(1,:) : )') - + assert_equal(parse(Case,'case default'),'CASE DEFAULT') + + def check_where(self): + assert_equal(parse(WhereStmt,'where (1) a=1'),'WHERE ( 1 ) a = 1') + assert_equal(parse(WhereStmt,'where (a(1,2)) a=1'),'WHERE ( a(1,2) ) a = 1') + + def check_elsewhere(self): + assert_equal(parse(ElseWhere,'else where'),'ELSE WHERE') + assert_equal(parse(ElseWhere,'elsewhere (1)'),'ELSE WHERE ( 1 )') + assert_equal(parse(ElseWhere,'elsewhere(a(1,2))'),'ELSE WHERE ( a(1,2) )') + + def check_enumerator(self): + assert_equal(parse(Enumerator,'enumerator a'), 'ENUMERATOR a') + assert_equal(parse(Enumerator,'enumerator:: a'), 'ENUMERATOR a') + assert_equal(parse(Enumerator,'enumerator a,b'), 'ENUMERATOR a, b') + assert_equal(parse(Enumerator,'enumerator a=1'), 'ENUMERATOR a=1') + assert_equal(parse(Enumerator,'enumerator a=1 , b=c(1,2)'), 'ENUMERATOR a=1, b=c(1,2)') + + def check_fortranname(self): + assert_equal(parse(FortranName,'fortranname a'),'FORTRANNAME a') + + def check_threadsafe(self): + assert_equal(parse(Threadsafe,'threadsafe'),'THREADSAFE') + + def check_depend(self): + assert_equal(parse(Depend,'depend( a) b'), 'DEPEND ( a ) b') + assert_equal(parse(Depend,'depend( a) ::b'), 'DEPEND ( a ) b') + assert_equal(parse(Depend,'depend( a,c) b,e'), 'DEPEND ( a, c ) b, e') + + def check_check(self): + assert_equal(parse(Check,'check(1) a'), 'CHECK ( 1 ) a') + assert_equal(parse(Check,'check(1) :: a'), 'CHECK ( 1 ) a') + assert_equal(parse(Check,'check(b(1,2)) a'), 'CHECK ( b(1,2) ) a') + assert_equal(parse(Check,'check(a>1) :: a'), 'CHECK ( a>1 ) a') + + def check_callstatement(self): + assert_equal(parse(CallStatement,'callstatement (*func)()',isstrict=1), + 'CALLSTATEMENT (*func)()') + assert_equal(parse(CallStatement,'callstatement i=1;(*func)()',isstrict=1), + 'CALLSTATEMENT i=1;(*func)()') + + def check_callprotoargument(self): + assert_equal(parse(CallProtoArgument,'callprotoargument int(*), double'), + 'CALLPROTOARGUMENT int(*), double') + + def check_pause(self): + assert_equal(parse(Pause,'pause'),'PAUSE') + assert_equal(parse(Pause,'pause 1'),'PAUSE 1') + assert_equal(parse(Pause,'pause "hey"'),'PAUSE "hey"') + assert_equal(parse(Pause,'pause "hey pa"'),'PAUSE "hey pa"') + if __name__ == "__main__": NumpyTest().run() -- cgit v1.2.1