def test_get_use_of_module_with_double_colons(self):
        file_contents = ["module name", "use::module1", "end module"]
        start = 1
        end = len(file_contents)
        source_file = FortranFile(filename='empty', readfile=False)

        module = FortranModule(unit_type='module',
                               name='name',
                               source_file=source_file,
                               text=(file_contents, start, end),
                               macros=None)

        assert module.uses == ['module1']
    def test_macro_replacement(self):
        file_contents = ["module name", "use foo", "end module"]
        start = 1
        end = len(file_contents)
        source_file = FortranFile(filename='empty', readfile=False)

        module = FortranModule(unit_type='module',
                               name='name',
                               source_file=source_file,
                               text=(file_contents, start, end),
                               macros={'foo': 'module1'})

        assert module.uses == ['module1']
    def test_get_use_of_repeated_modules(self):
        file_contents = [
            "module name", "use module1", "use module2", "use module3",
            "use module1", "end module"
        ]
        start = 1
        end = len(file_contents)
        source_file = FortranFile(filename='empty', readfile=False)

        module = FortranModule(unit_type='module',
                               name='name',
                               source_file=source_file,
                               text=(file_contents, start, end),
                               macros=None)

        assert set(module.uses) == set(['module1', 'module2', 'module3'])
    def test_ignore_uses_outside_module(self):
        file_contents = [
            "module module1", "use module2", "end module", "module module2",
            "use module1", "end module"
        ]
        start = 1
        end = 3
        source_file = FortranFile(filename='empty', readfile=False)

        module = FortranModule(unit_type='module',
                               name='name',
                               source_file=source_file,
                               text=(file_contents, start, end),
                               macros=None)

        assert module.uses == ['module2']
    def test_ignore_variables_named_useX(self):
        file_contents = [
            "module name", "useVariable1 = 1", "use_Variable1 = 1",
            "foo = useVariable2", "foo = use_Variable2", "useFunction1()",
            "use_Function()", "call useSubroutine", "call use_Subroutine",
            "end module"
        ]
        start = 1
        end = len(file_contents)
        source_file = FortranFile(filename='empty', readfile=False)

        module = FortranModule(unit_type='module',
                               name='name',
                               source_file=source_file,
                               text=(file_contents, start, end),
                               macros=None)

        assert module.uses == []
 def test_canonical_unit_type_module(self):
     module = FortranModule(' MODULE ', ' NAME ')
     assert module.unit_type == 'module'
 def test_canonical_name(self):
     module = FortranModule(' MODULE ', ' NAME ')
     assert module.name == 'name'
 def test_module_repr(self):
     module = FortranModule(' MODULE ', ' NAME ')
     assert repr(module) == "FortranModule(module, 'name', 'empty')"
 def test_module_str(self):
     module = FortranModule(' MODULE ', ' NAME ')
     assert str(module) == 'name'
 def test_canonical_unit_type_program(self):
     program = FortranModule(' PROGRAM ', ' NAME ')
     assert program.unit_type == 'program'