##// END OF EJS Templates
fix for cocoa frontend current_indent_string; refactor to make testing easier and added a test for _indent_for_block
fix for cocoa frontend current_indent_string; refactor to make testing easier and added a test for _indent_for_block

File last commit:

r1300:031c293f
r1300:031c293f
Show More
test_cocoa_frontend.py
91 lines | 3.8 KiB | text/x-python | PythonLexer
/ IPython / frontend / cocoa / tests / test_cocoa_frontend.py
Barry Wark
moved frontend from ipython1-dev. Got engineservice.ThreadedEngineService running, but does nto correctly propagate errors during execute()
r1263 # encoding: utf-8
Barry Wark
pep8 compliance, first pass
r1291 """This file contains unittests for the
IPython.frontend.cocoa.cocoa_frontend module.
Barry Wark
moved frontend from ipython1-dev. Got engineservice.ThreadedEngineService running, but does nto correctly propagate errors during execute()
r1263 """
__docformat__ = "restructuredtext en"
Barry Wark
pep8 compliance, first pass
r1291
#---------------------------------------------------------------------------
# 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.
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
# Imports
#---------------------------------------------------------------------------
from IPython.kernel.core.interpreter import Interpreter
Barry Wark
fixed ipython1->IPython in cocoa/tests/test_cocoa_frontend.py
r1264 import IPython.kernel.engineservice as es
Barry Wark
cocoa frontend tests
r1275 from IPython.testing.util import DeferredTestCase
Barry Wark
moved frontend from ipython1-dev. Got engineservice.ThreadedEngineService running, but does nto correctly propagate errors during execute()
r1263 from twisted.internet.defer import succeed
Barry Wark
cocoa frontend tests
r1275 from IPython.frontend.cocoa.cocoa_frontend import IPythonCocoaController
Barry Wark
moved frontend from ipython1-dev. Got engineservice.ThreadedEngineService running, but does nto correctly propagate errors during execute()
r1263
Barry Wark
cocoa frontend tests
r1275 from Foundation import NSMakeRect
from AppKit import NSTextView, NSScrollView
Barry Wark
moved frontend from ipython1-dev. Got engineservice.ThreadedEngineService running, but does nto correctly propagate errors during execute()
r1263
class TestIPythonCocoaControler(DeferredTestCase):
"""Tests for IPythonCocoaController"""
def setUp(self):
self.controller = IPythonCocoaController.alloc().init()
self.engine = es.EngineService()
self.engine.startService()
def tearDown(self):
self.controller = None
self.engine.stopService()
def testControllerExecutesCode(self):
code ="""5+5"""
expected = Interpreter().execute(code)
del expected['number']
def removeNumberAndID(result):
del result['number']
del result['id']
return result
Barry Wark
pep8 compliance, first pass
r1291 self.assertDeferredEquals(
self.controller.execute(code).addCallback(removeNumberAndID),
expected)
Barry Wark
moved frontend from ipython1-dev. Got engineservice.ThreadedEngineService running, but does nto correctly propagate errors during execute()
r1263
def testControllerMirrorsUserNSWithValuesAsStrings(self):
code = """userns1=1;userns2=2"""
def testControllerUserNS(result):
Barry Wark
cocoa frontend tests
r1275 self.assertEquals(self.controller.userNS['userns1'], 1)
self.assertEquals(self.controller.userNS['userns2'], 2)
Barry Wark
moved frontend from ipython1-dev. Got engineservice.ThreadedEngineService running, but does nto correctly propagate errors during execute()
r1263
Barry Wark
cocoa frontend tests
r1275 self.controller.execute(code).addCallback(testControllerUserNS)
Barry Wark
moved frontend from ipython1-dev. Got engineservice.ThreadedEngineService running, but does nto correctly propagate errors during execute()
r1263
def testControllerInstantiatesIEngine(self):
Barry Wark
cocoa frontend tests
r1275 self.assert_(es.IEngineBase.providedBy(self.controller.engine))
Barry Wark
moved frontend from ipython1-dev. Got engineservice.ThreadedEngineService running, but does nto correctly propagate errors during execute()
r1263
def testControllerCompletesToken(self):
code = """longNameVariable=10"""
def testCompletes(result):
self.assert_("longNameVariable" in result)
def testCompleteToken(result):
self.controller.complete("longNa").addCallback(testCompletes)
Barry Wark
cocoa frontend tests
r1275 self.controller.execute(code).addCallback(testCompletes)
Barry Wark
moved frontend from ipython1-dev. Got engineservice.ThreadedEngineService running, but does nto correctly propagate errors during execute()
r1263
Barry Wark
fix for cocoa frontend current_indent_string; refactor to make testing easier and added a test for _indent_for_block
r1300
def testCurrentIndent(self):
"""test that current_indent_string returns current indent or None.
Uses _indent_for_block for direct unit testing.
"""
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)
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))