class TestApplicationLauncherImportingLibrary(unittest.TestCase):
    def setUp(self):
        class _FakeNamespace:
            _testlibs = {}
        NAMESPACES.current = _FakeNamespace()
        self.rmi_launcher = ApplicationLauncher(application)
        self.builtin_library = _FakeBuiltInLibrary()
        self.rmi_launcher.builtin = self.builtin_library
        self.rmi_launcher._run_remote_import = self._fake_remote_import
        self.rmi_launcher._prepare_for_reimport_if_necessary = lambda x,*args: None
        self.library = None

    def test_imports(self):
        self.rmi_launcher.import_remote_library('SomeLibrary', 'WITH NAME', 'someLib')

        assert_equals('SomeLibrary', self.library_name)
        assert_equals('ApplicationLauncher.RemoteLibrary', self.builtin_library.library)
        expected_args = ('rmi://someservice', 'WITH NAME', 'someLib')
        assert_equals(expected_args, self.builtin_library.arguments)

    def test_adds_name_when_with_name_is_not_used(self):
        self.rmi_launcher.import_remote_library('SomeLibrary')

        assert_equals('SomeLibrary', self.library_name)
        assert_equals('ApplicationLauncher.RemoteLibrary', self.builtin_library.library)
        expected_args = ('rmi://someservice', 'WITH NAME', 'SomeLibrary')
        assert_equals(expected_args, self.builtin_library.arguments)

    def test_parses_timestring(self):
        rmi_launcher = ApplicationLauncher(application, '1 second')
        assert_equals(1, rmi_launcher.timeout)

    def _fake_remote_import(self, library_name):
        self.library_name = library_name
        return 'rmi://someservice'