test_cocoa_frontend.py
100 lines
| 3.7 KiB
| text/x-python
|
PythonLexer
Barry Wark
|
r1263 | # encoding: utf-8 | ||
Bernardo B. Marques
|
r4872 | """This file contains unittests for the | ||
Barry Wark
|
r1291 | IPython.frontend.cocoa.cocoa_frontend module. | ||
Barry Wark
|
r1263 | """ | ||
__docformat__ = "restructuredtext en" | ||||
Bernardo B. Marques
|
r4872 | |||
Barry Wark
|
r1291 | #--------------------------------------------------------------------------- | ||
Bernardo B. Marques
|
r4872 | # Copyright (C) 2005 The IPython Development Team | ||
# | ||||
# Distributed under the terms of the BSD License. The full license is in | ||||
# the file COPYING, distributed as part of this software. | ||||
Barry Wark
|
r1291 | #--------------------------------------------------------------------------- | ||
Bernardo B. Marques
|
r4872 | |||
Barry Wark
|
r1291 | #--------------------------------------------------------------------------- | ||
Bernardo B. Marques
|
r4872 | # Imports | ||
Barry Wark
|
r1291 | #--------------------------------------------------------------------------- | ||
Barry Wark
|
r1263 | |||
Brian Granger
|
r1960 | # Tell nose to skip this module | ||
__test__ = {} | ||||
from twisted.trial import unittest | ||||
from twisted.internet.defer import succeed | ||||
from IPython.kernel.core.interpreter import Interpreter | ||||
import IPython.kernel.engineservice as es | ||||
Brian Granger
|
r1958 | |||
Brian Granger
|
r1551 | try: | ||
Brian Granger
|
r1960 | from IPython.frontend.cocoa.cocoa_frontend import IPythonCocoaController | ||
Brian Granger
|
r1555 | from Foundation import NSMakeRect | ||
Brian Granger
|
r1958 | from AppKit import NSTextView, NSScrollView | ||
Brian Granger
|
r1551 | except ImportError: | ||
Brian Granger
|
r1960 | # This tells twisted.trial to skip this module if PyObjC is not found | ||
skip = True | ||||
Brian Granger
|
r1555 | |||
Brian Granger
|
r1960 | #--------------------------------------------------------------------------- | ||
# Tests | ||||
#--------------------------------------------------------------------------- | ||||
class TestIPythonCocoaControler(unittest.TestCase): | ||||
Brian Granger
|
r1555 | """Tests for IPythonCocoaController""" | ||
Brian Granger
|
r1960 | |||
Brian Granger
|
r1555 | def setUp(self): | ||
self.controller = IPythonCocoaController.alloc().init() | ||||
self.engine = es.EngineService() | ||||
self.engine.startService() | ||||
Brian Granger
|
r1960 | |||
Brian Granger
|
r1555 | def tearDown(self): | ||
self.controller = None | ||||
self.engine.stopService() | ||||
Brian Granger
|
r1960 | |||
Brian Granger
|
r1555 | def testControllerExecutesCode(self): | ||
code ="""5+5""" | ||||
expected = Interpreter().execute(code) | ||||
del expected['number'] | ||||
def removeNumberAndID(result): | ||||
del result['number'] | ||||
del result['id'] | ||||
return result | ||||
Brian Granger
|
r1960 | d = self.controller.execute(code) | ||
d.addCallback(removeNumberAndID) | ||||
d.addCallback(lambda r: self.assertEquals(r, expected)) | ||||
Brian Granger
|
r1555 | def testControllerMirrorsUserNSWithValuesAsStrings(self): | ||
code = """userns1=1;userns2=2""" | ||||
def testControllerUserNS(result): | ||||
self.assertEquals(self.controller.userNS['userns1'], 1) | ||||
self.assertEquals(self.controller.userNS['userns2'], 2) | ||||
self.controller.execute(code).addCallback(testControllerUserNS) | ||||
Brian Granger
|
r1960 | |||
Brian Granger
|
r1555 | def testControllerInstantiatesIEngine(self): | ||
self.assert_(es.IEngineBase.providedBy(self.controller.engine)) | ||||
Brian Granger
|
r1960 | |||
Brian Granger
|
r1555 | def testControllerCompletesToken(self): | ||
code = """longNameVariable=10""" | ||||
def testCompletes(result): | ||||
self.assert_("longNameVariable" in result) | ||||
Brian Granger
|
r1960 | |||
Brian Granger
|
r1555 | def testCompleteToken(result): | ||
self.controller.complete("longNa").addCallback(testCompletes) | ||||
Brian Granger
|
r1960 | |||
Brian Granger
|
r1555 | self.controller.execute(code).addCallback(testCompletes) | ||
Brian Granger
|
r1960 | |||
Brian Granger
|
r1555 | def testCurrentIndent(self): | ||
"""test that current_indent_string returns current indent or None. | ||||
Uses _indent_for_block for direct unit testing. | ||||
""" | ||||
Bernardo B. Marques
|
r4872 | |||
Brian Granger
|
r1555 | self.controller.tabUsesSpaces = True | ||
self.assert_(self.controller._indent_for_block("""a=3""") == None) | ||||
self.assert_(self.controller._indent_for_block("") == None) | ||||
block = """def test():\n a=3""" | ||||
self.assert_(self.controller._indent_for_block(block) == \ | ||||
' ' * self.controller.tabSpaces) | ||||
Bernardo B. Marques
|
r4872 | |||
Brian Granger
|
r1555 | block = """if(True):\n%sif(False):\n%spass""" % \ | ||
(' '*self.controller.tabSpaces, | ||||
2*' '*self.controller.tabSpaces) | ||||
self.assert_(self.controller._indent_for_block(block) == \ | ||||
2*(' '*self.controller.tabSpaces)) | ||||
Brian Granger
|
r1960 | |||