def test_imp_none_in_subroutine(): ''' test that implicit none can be added to a subroutine ''' module = ModuleGen(name="testmodule") subroutine = SubroutineGen(module, name="testsubroutine") module.add(subroutine) subroutine.add(ImplicitNoneGen(subroutine)) assert 'IMPLICIT NONE' in str(subroutine.root)
def test_imp_none_in_module_already_exists(): ''' test that implicit none is not added to a module when one already exists''' module = ModuleGen(name="testmodule", implicitnone=True) module.add(ImplicitNoneGen(module)) count = count_lines(module.root, "IMPLICIT NONE") print str(module.root) assert count == 1, \ "There should only be one instance of IMPLICIT NONE"
def test_imp_none_exception_if_wrong_parent(): ''' test that an exception is thrown if implicit none is added and the parent is not a module or a subroutine ''' module = ModuleGen(name="testmodule") sub = SubroutineGen(module, name="testsubroutine") module.add(sub) dogen = DoGen(sub, "i", "1", "10") sub.add(dogen) with pytest.raises(Exception): dogen.add(ImplicitNoneGen(dogen))
def test_imp_none_in_subroutine_already_exists(): ''' test that implicit none is not added to a subroutine when one already exists''' module = ModuleGen(name="testmodule") sub = SubroutineGen(module, name="testsubroutine", implicitnone=True) module.add(sub) sub.add(ImplicitNoneGen(sub)) count = count_lines(sub.root, "IMPLICIT NONE") assert count == 1, \ "There should only be one instance of IMPLICIT NONE"
def test_imp_none_in_module_with_decs(): ''' test that implicit none is added before any declaration statements in a module when auto (the default) is used for insertion ''' module = ModuleGen(name="testmodule", implicitnone=False) module.add(DeclGen(module, datatype="integer", entity_decls=["var1"])) module.add(TypeDeclGen(module, datatype="my_type", entity_decls=["type1"])) module.add(ImplicitNoneGen(module)) in_idx = line_number(module.root, "IMPLICIT NONE") assert in_idx == 1
def test_imp_none_in_module(): ''' test that implicit none can be added to a module in the correct location''' module = ModuleGen(name="testmodule", implicitnone=False) module.add(ImplicitNoneGen(module)) in_idx = line_number(module.root, "IMPLICIT NONE") cont_idx = line_number(module.root, "CONTAINS") assert in_idx > -1, "IMPLICIT NONE not found" assert cont_idx > -1, "CONTAINS not found" assert cont_idx - in_idx == 1, "CONTAINS is not on the line after" +\ " IMPLICIT NONE"
def test_imp_none_in_subroutine_with_use_and_decs(): ''' test that implicit none is added after any use statements and before any declarations in a subroutine when auto (the default) is used for insertion''' module = ModuleGen(name="testmodule") sub = SubroutineGen(module, name="testsubroutine") module.add(sub) sub.add(DeclGen(sub, datatype="integer", entity_decls=["var1"])) sub.add(TypeDeclGen(sub, datatype="my_type", entity_decls=["type1"])) sub.add(UseGen(sub, "fred")) sub.add(ImplicitNoneGen(sub)) in_idx = line_number(sub.root, "IMPLICIT NONE") assert in_idx == 2
def test_imp_none_in_module_with_use_and_decs_and_comments(): ''' test that implicit none is added after any use statements and before any declarations in a module in the presence of comments when auto (the default) is used for insertion''' module = ModuleGen(name="testmodule", implicitnone=False) module.add(DeclGen(module, datatype="integer", entity_decls=["var1"])) module.add(TypeDeclGen(module, datatype="my_type", entity_decls=["type1"])) module.add(UseGen(module, "fred")) for idx in [0, 1, 2, 3]: module.add(CommentGen(module, " hello " + str(idx)), position=["before_index", 2 * idx]) module.add(ImplicitNoneGen(module)) in_idx = line_number(module.root, "IMPLICIT NONE") assert in_idx == 3