Skip to content

Commit

Permalink
Add true test case for the generator, with mock for vim module.
Browse files Browse the repository at this point in the history
  • Loading branch information
nvie committed Jul 29, 2010
1 parent 67e2708 commit 225160d
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 4 deletions.
5 changes: 1 addition & 4 deletions tests/mocks/vim.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
# Mock of the vim module, for testing outside of vim
from mock import Mock

my_mock = Mock()

def eval(s): return my_mock().eval(s)
def command(s): return my_mock().command(s)
command = Mock()
31 changes: 31 additions & 0 deletions tests/test_vim_bridge.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,17 +47,48 @@ def test_cast_to_vimsafe_result(self):

class TestBridgedDecorator(unittest.TestCase):

def _strip_whitespace(self, x):
lines = x.split("\n")
lines = [line.strip() for line in lines]
x = "\n".join(filter(lambda s: s, lines))
return x

def assertCodeEquals(self, x, y):
self.assertEquals(self._strip_whitespace(x), self._strip_whitespace(y))

def test_no_bridges_yet(self):
from vim_bridge.registry import func_register
self.assertEquals(func_register, {})

def test_simple_bridge(self):
from vim_bridge.registry import func_register
import vim

self.assertFalse(func_register.has_key('foo'))
self.assertFalse(vim.command.called)

@bridged
def foo(x,y): pass

self.assertTrue(func_register.has_key('foo'))
self.assertTrue(vim.command.called)
self.assertCodeEquals(vim.command.call_args[0][0], \
"""
fun! Foo(x, y)
python << endp
__vim_brdg_3_x = vim.eval("a:x")
__vim_brdg_3_y = vim.eval("a:y")
from vim_bridge.registry import func_register as fr
from vim_bridge import _cast_to_vimsafe_result as c2v
__vim_brdg_3_result = c2v(fr["foo"](__vim_brdg_3_x, __vim_brdg_3_y))
vim.command("return %s" % repr(__vim_brdg_3_result))
del __vim_brdg_3_x
del __vim_brdg_3_y
del __vim_brdg_3_result
endp
endf
""")

0 comments on commit 225160d

Please sign in to comment.